# Path: ndlib/models/compartments/enums/NumericalType.py
# class NumericalType(Enum):
#     STATUS = 0
#     ATTRIBUTE = 1
# 
# Path: ndlib/models/compartments/enums/SAType.py
# class SAType(Enum):
#     MEAN = 0
#     VARIANCE = 1
#     MIN = 2
#     MAX = 3


import unittest
import os
import networkx as nx
import numpy as np
import ndlib.models.ModelConfig as mc
import ndlib.models.ContinuousModel as gc
import ndlib.models.ContinuousModelRunner as gcr
import ndlib.models.compartments as cpm
from ndlib.models.compartments.enums.NumericalType import NumericalType
from ndlib.models.compartments.enums.SAType import SAType
            'status_2': initial_status_2,
        }

        model = gc.ContinuousModel(g)

        model.add_status('status_1')
        model.add_status('status_2')

        # Compartments
        condition = cpm.NodeStochastic(1)

        # Update functions
        def update_1(node, graph, status, attributes, constants):
            return status[node]['status_2'] + 0.1

        def update_2(node, graph, status, attributes, constants):
            return status[node]['status_1'] + 0.5

        # Rules
        model.add_rule('status_1', update_1, condition)
        model.add_rule('status_2', update_2, condition)

        config = mc.Configuration()
        model.set_initial_status(initial_status, config)

        # Simulation
        runner = gcr.ContinuousModelRunner(model, config)
        results = runner.run(2, [1], [initial_status])
        self.assertEqual(len(results), 2)


# Path: ndlib/models/compartments/enums/NumericalType.py
# class NumericalType(Enum):
#     STATUS = 0
#     ATTRIBUTE = 1
# 
# Path: ndlib/models/compartments/enums/SAType.py
# class SAType(Enum):
#     MEAN = 0
#     VARIANCE = 1
#     MIN = 2
#     MAX = 3


# Path: ndlib/test/test_continuous_model.py
import unittest
import os
import networkx as nx
import numpy as np
import ndlib.models.ModelConfig as mc
import ndlib.models.ContinuousModel as gc
import ndlib.models.ContinuousModelRunner as gcr
import ndlib.models.compartments as cpm
from ndlib.models.compartments.enums.NumericalType import NumericalType
from ndlib.models.compartments.enums.SAType import SAType

            'status_2': initial_status_2,
        }

        model = gc.ContinuousModel(g)

        model.add_status('status_1')
        model.add_status('status_2')

        # Compartments
        condition = cpm.NodeStochastic(1)

        # Update functions
        def update_1(node, graph, status, attributes, constants):
            return status[node]['status_2'] + 0.1

        def update_2(node, graph, status, attributes, constants):
            return status[node]['status_1'] + 0.5

        # Rules
        model.add_rule('status_1', update_1, condition)
        model.add_rule('status_2', update_2, condition)

        config = mc.Configuration()
        model.set_initial_status(initial_status, config)

        # Simulation
        runner = gcr.ContinuousModelRunner(model, config)
        results = runner.run(2, [1], [initial_status])
        self.assertEqual(len(results), 2)


    def test_runner_sa(self):