class ContextTest(TestCase): def setUp(self): self._data = {"Z": 1} self._environment = Context() for key, value in self._data.items(): self._environment[key] = value def test_look_up_a_key_that_was_never_defined(self): self.assertIsNone(self._environment["never defined"]) self.assertNotIn("never defined", self._environment) def test_definition(self): (key, value) = ("X", 234) self.assertNotIn("X", self._environment) self._environment[key] = value self.assertEqual(value, self._environment[key]) def test_containment(self): for key, value in self._data.items(): self.assertTrue(key in self._environment) self.assertEqual(value, self._environment[key]) def test_fork_and_look_up_key_defined_in_the_parent(self): fork = self._environment.fork() for key, value in self._data.items(): self.assertTrue(key in fork) self.assertEqual(value, fork[key]) def test_fork_and_redefine_key(self): fork = self._environment.fork() fork["Z"] = 2 self.assertEqual(2, fork["Z"]) self.assertEqual(1, self._environment["Z"])
def setUp(self): self._engine = MagicMock() self._macros = MacroFactory(self._engine) self._symbols = SymbolTable.default() self._tokens = TokenFactory(self._symbols) self._factory = Factory(self._symbols) self._environment = Context(definitions=self._macros.all())
def _rewrite(self, text, source, symbol_table=None): character_table = symbol_table or self._character_table factory = Factory(character_table) macros = MacroFactory(self) parser = Parser(factory.as_tokens(text, source), factory, Context(definitions=macros.all())) return parser.process()
def setUp(self): self._data = {"Z": 1} self._environment = Context() for key, value in self._data.items(): self._environment[key] = value
def setUp(self): self._data = {"Z": 1} self._environment = Context() for key, value in self._data.items(): self._environment[key] = value
def _rewrite(self, text, source, symbol_table=SymbolTable.default()): factory = Factory(symbol_table) macros = MacroFactory(self) parser = Parser(factory.as_tokens(text, source), factory, Context(definitions=macros.all())) return parser.rewrite()