def test_resolver_alias(self): counter = Counter() def resolver(keyname='provider_called', increment=1): counter['resolver_called'] += 1 def provider(): counter[keyname] += increment return counter return provider def test(a, b, c, d, e, f): self.assertTrue(a is b) self.assertTrue(a is c) self.assertTrue(a is d) self.assertTrue(a is e) self.assertTrue(a is f) a['counter_used'] += 1 ij = Injector() ij.add_resolver('a', resolver, alias="b") ij.add_resolver('c', resolver, alias=("d", "e", "f")) ij.call_inject(test) self.assertEqual(6, counter['resolver_called']) self.assertEqual(6, counter['provider_called']) self.assertEqual(1, counter['counter_used'])
def test_inject_resolver_decorator(self): counter = Counter() ij = Injector() @ij.resolver('c') def resolver(keyname='provider_called', increment=1): counter['resolver_called'] += 1 def provider(): counter[keyname] += increment return counter return provider def test(c, other=inject('c', keyname='special_called', increment=10)): self.assertTrue(other is c) c['counter_used'] += 1 ij.call_inject(test) self.assertEqual(2, counter['resolver_called']) self.assertEqual(1, counter['provider_called']) self.assertEqual(10, counter['special_called']) self.assertEqual(1, counter['counter_used']) ij.call_inject(test) self.assertEqual(2, counter['resolver_called'] ) # !!! Should be cached and not called again self.assertEqual(2, counter['provider_called']) self.assertEqual(20, counter['special_called']) self.assertEqual(2, counter['counter_used'])
def test_remove_provider(self): ij = Injector() ij.add_value('val', 5) ij.remove('val') def test(val): pass with self.assertRaises(InjectError): ij.call_inject(test)
def test_inject_resolver_decorator(self): counter = Counter() ij = Injector() @ij.resolver('c') def resolver(keyname='provider_called', increment=1): counter['resolver_called'] += 1 def provider(): counter[keyname] += increment return counter return provider def test(c, other=inject('c', keyname='special_called', increment=10)): self.assertTrue(other is c) c['counter_used'] += 1 ij.call_inject(test) self.assertEqual(2, counter['resolver_called']) self.assertEqual(1, counter['provider_called']) self.assertEqual(10, counter['special_called']) self.assertEqual(1, counter['counter_used']) ij.call_inject(test) self.assertEqual(2, counter['resolver_called']) # !!! Should be cached and not called again self.assertEqual(2, counter['provider_called']) self.assertEqual(20, counter['special_called']) self.assertEqual(2, counter['counter_used'])
def test_inject_value(self): ij = Injector() value = [] ij.add_value('val', value) def test(val, other=inject('val')): self.assertTrue(val is other) self.assertTrue(val is value) val.append(5) ij.call_inject(test) self.assertEqual([5], value)
def test_inject_provider_decorator(self): counter = Counter() ij = Injector() @ij.provider('c') def provider(): counter['provider_called'] += 1 return counter def test(c, other=inject('c')): self.assertTrue(other is c) c['counter_used'] += 1 ij.call_inject(test) self.assertEqual(2, counter['provider_called']) self.assertEqual(1, counter['counter_used'])