def test_nested_container(self): injector = Injector(a='A', b='A') sub = Injector(injector, b='B') subsub = sub.sub(c='C') self.assertEqual(subsub.call(lambda a, b, c: a + b + c), 'ABC') self.assertEqual(subsub.create(lambda a, b, c: a + b + c), 'ABC')
def test_close_only_called_once(self): injector = Injector(a=lambda: self.closer('A')) sub = injector.sub(b=lambda: self.closer('B')) sub.b injector.a sub.close() injector.close() self.assertEqual(['B', 'A'], self.call_list)
def test_close_limited_to_scope(self): injector = Injector(a=lambda: self.closer('A')) sub = injector.sub(b=lambda: self.closer('B')) sub.b injector.a sub.close() self.assertEqual(['B'], self.call_list)
def test_close_shared_among_subinjectors(self): injector = Injector(a=lambda: self.closer('A')) sub = injector.sub(b=lambda: self.closer('B')) sub.b injector.a injector.close() self.assertEqual(['B', 'A'], self.call_list)
def test_clear_subinjectors_on_close(self): injector = Injector(a=lambda: self.closer('A')) sub = injector.sub(b=lambda: self.closer('B')) sub.b injector.a self.assertEqual(1, injector.child_count) del sub self.assertEqual(0, injector.child_count)