コード例 #1
0
 def test_dynamic_scope(self):
     env = Environment()
     local_env1 = env.create_local_environment()
     local_env1.define("var_1", 123)
     local_env2 = env.create_local_environment(local_env1)
     self.assertIsNone(local_env2.look_up("var_1"))
     self.assertEqual(local_env2.dynamic_look_up("var_1"), 123)
コード例 #2
0
 def __init__(self, storage):
     self._storage = storage
     self._scheduler = Scheduler()
     self.environment = Environment()
     self.environment.define(Symbols.SIMULATION, self)
     self._next_request_id = 1
     self.factory = Factory()
コード例 #3
0
    def test_look_up_bindings_in_parent(self):
        env1 = Environment()
        env1.define("my_var", 4)
        env2 = env1.create_local_environment()
        env3 = env2.create_local_environment()

        self.assertEqual(env3.look_up("my_var"), 4)
コード例 #4
0
ファイル: test_environment.py プロジェクト: fchauvel/MAD
    def test_look_up_bindings_in_parent(self):
        env1 = Environment()
        env1.define("my_var", 4)
        env2 = env1.create_local_environment()
        env3 = env2.create_local_environment()

        self.assertEqual(env3.look_up("my_var"), 4)
コード例 #5
0
ファイル: test_evaluation.py プロジェクト: fchauvel/MAD
    def test_evaluation_of_lifo(self):
        environment = Environment()
        queue = LIFO()

        Evaluation(environment, queue, Factory()).result

        queue = environment.look_up(Symbols.QUEUE).delegate
        self.assertIsInstance(queue, LIFOTaskPool)
コード例 #6
0
ファイル: test_evaluation.py プロジェクト: fchauvel/MAD
    def test_evaluation_of_lifo(self):
        environment = Environment()
        queue = LIFO()

        Evaluation(environment, queue, Factory()).result

        queue = environment.look_up(Symbols.QUEUE).delegate
        self.assertIsInstance(queue, LIFOTaskPool)
コード例 #7
0
ファイル: test_environment.py プロジェクト: fchauvel/MAD
    def test_dynamic_scope(self):
        env = Environment()
        local_env1 = env.create_local_environment()
        local_env1.define("var_1", 123)
        local_env2 = env.create_local_environment(local_env1)
        self.assertIsNone(local_env2.look_up("var_1"))
        self.assertEqual(local_env2.dynamic_look_up("var_1"), 123)


    # Test creating an environment that is not a child of another environment
コード例 #8
0
ファイル: test_environment.py プロジェクト: fchauvel/MAD
    def test_look_up_masked_bindings(self):
        env1 = Environment()
        env1.define("my_var", 8)
        env2 = env1.create_local_environment()
        env2.define("my_var", 7)
        env3 = env2.create_local_environment()
        env3.define("my_var", 6)

        self.assertEqual(env1.look_up("my_var"), 8)
        self.assertEqual(env2.look_up("my_var"), 7)
        self.assertEqual(env3.look_up("my_var"), 6)
コード例 #9
0
class Simulation:
    """
    Represent the general simulation, including the current schedule and the associated trace
    """

    # TODO: This should inherits from SimulatedEntity as well

    def __init__(self, storage):
        self._storage = storage
        self._scheduler = Scheduler()
        self.environment = Environment()
        self.environment.define(Symbols.SIMULATION, self)
        self._next_request_id = 1
        self.factory = Factory()

    def run_until(self, end, display=None):
        self._scheduler.simulate_until(end, display)

    @property
    def log(self):
        return self._storage.log

    @property
    def schedule(self):
        return self._scheduler

    def evaluate(self, expression, continuation=lambda x: x):
        return Evaluation(self.environment, expression, self.factory,
                          continuation).result

    def next_request_id(self):
        id = self._next_request_id
        self._next_request_id += 1
        return id

    @property
    def services(self):
        return self._find_by_type(Service)

    @property
    def clients(self):
        return self._find_by_type(ClientStub)

    def _find_by_type(self, type):
        return [
            each_value
            for each_value in list(self.environment.bindings.values())
            if isinstance(each_value, type)
        ]
コード例 #10
0
ファイル: factory.py プロジェクト: fchauvel/MAD
 def __init__(self, storage):
     self._storage = storage
     self._scheduler = Scheduler()
     self.environment = Environment()
     self.environment.define(Symbols.SIMULATION, self)
     self._next_request_id = 1
     self.factory = Factory()
コード例 #11
0
ファイル: factory.py プロジェクト: fchauvel/MAD
class Simulation:
    """
    Represent the general simulation, including the current schedule and the associated trace
    """
    # TODO: This should inherits from SimulatedEntity as well

    def __init__(self, storage):
        self._storage = storage
        self._scheduler = Scheduler()
        self.environment = Environment()
        self.environment.define(Symbols.SIMULATION, self)
        self._next_request_id = 1
        self.factory = Factory()

    def run_until(self, end, display=None):
        self._scheduler.simulate_until(end, display)

    @property
    def log(self):
        return self._storage.log

    @property
    def schedule(self):
        return self._scheduler

    def evaluate(self, expression, continuation=lambda x: x):
        return Evaluation(self.environment, expression, self.factory, continuation).result

    def next_request_id(self):
        id = self._next_request_id
        self._next_request_id += 1
        return id

    @property
    def services(self):
        return self._find_by_type(Service)

    @property
    def clients(self):
        return self._find_by_type(ClientStub)

    def _find_by_type(self, type):
        return [each_value
                for each_value in self.environment.bindings.values()
                if isinstance(each_value, type)]
コード例 #12
0
ファイル: test_evaluation.py プロジェクト: fchauvel/MAD
    def test_evaluation_of_sequence_stops_at_the_first_failure(self):
        environment = Environment()

        succeed = MagicMock(Expression)
        succeed.accept = MagicMock(return_value=Success())

        def check_result(status):
            self.assertTrue(status.is_erroneous)

        Evaluation(environment,
                   Sequence(Fail(), succeed),
                   Factory(),
                   continuation=check_result).result
        succeed.accept.assert_not_called()
コード例 #13
0
    def test_look_up_masked_bindings(self):
        env1 = Environment()
        env1.define("my_var", 8)
        env2 = env1.create_local_environment()
        env2.define("my_var", 7)
        env3 = env2.create_local_environment()
        env3.define("my_var", 6)

        self.assertEqual(env1.look_up("my_var"), 8)
        self.assertEqual(env2.look_up("my_var"), 7)
        self.assertEqual(env3.look_up("my_var"), 6)
コード例 #14
0
    def test_define_all_symbols(self):
        env = Environment()
        env.define_each(["a", "b", "c"], [1, 2, 3])

        self.verify_all_bindings(env, {"a": 1, "b": 2, "c": 3})
コード例 #15
0
 def test_look_up_a_missing_binding(self):
     env1 = Environment()
     env1.define("var1", 5)
     self.assertIsNone(env1.look_up("missing_symbol"))
コード例 #16
0
ファイル: test_evaluation.py プロジェクト: fchauvel/MAD
    def test_evaluation_of_fail(self):
        environment = Environment()

        result = Evaluation(environment, Fail(), Factory()).result

        self.assertTrue(result.is_erroneous)
コード例 #17
0
ファイル: test_environment.py プロジェクト: fchauvel/MAD
    def test_define_all_symbols(self):
        env = Environment()
        env.define_each(["a", "b", "c"], [1, 2, 3])

        self.verify_all_bindings(env, {"a": 1, "b": 2, "c": 3})
コード例 #18
0
 def test_define_all_reject_missing_values(self):
     env = Environment()
     with self.assertRaises(ValueError):
         env.define_each(["a", "b", "c"], [1, 2])
コード例 #19
0
ファイル: test_environment.py プロジェクト: fchauvel/MAD
 def test_look_up_a_missing_binding(self):
     env1 = Environment()
     env1.define("var1", 5)
     self.assertIsNone(env1.look_up("missing_symbol"))
コード例 #20
0
ファイル: test_environment.py プロジェクト: fchauvel/MAD
 def test_define_all_reject_missing_values(self):
     env = Environment()
     with self.assertRaises(ValueError):
         env.define_each(["a", "b", "c"], [1, 2])