예제 #1
0
    def testIsRegistered(self):
        injector = Injector()
        injector2 = Injector()

        self.assertFalse(injector.is_registered())
        self.assertFalse(injector2.is_registered())

        injector.register()
        self.assertTrue(injector.is_registered())
        self.assertFalse(injector2.is_registered())
예제 #2
0
    def testGetNone(self):
        injector = Injector()
        self.assertTrue(injector.get('some_key', none=True) is None)

        injector2 = Injector(autobind=False)

        class A(object):
            pass

        self.assertTrue(injector2.get(A, none=True) is None)
예제 #3
0
    def testRegisterUnregister(self):
        injector = Injector()
        injector2 = Injector()

        injector.register()
        self.assertTrue(inject.get_injector() is injector)

        injector2.unregister()
        self.assertTrue(inject.get_injector() is injector)

        injector.unregister()
        self.assertTrue(inject.get_injector() is None)

        injector.register()
        inject.unregister()
        self.assertTrue(inject.get_injector() is None)
예제 #4
0
    def testIsNotBound(self):
        '''Injector.is_bound should return False.'''
        class A(object):
            pass

        injector = Injector()
        self.assertFalse(injector.is_bound(A))
예제 #5
0
    def testBindToNone(self):
        '''Injector.bind_to_none should create a provider which returns None.'''
        class A(object):
            pass

        injector = Injector()
        injector.bind(A, None)
        self.assertTrue(injector.get(A) is None)
예제 #6
0
    def testGetAutobind(self):
        class A(object):
            pass

        injector = Injector()

        a = injector.get(A)
        a2 = injector.get(A)
        self.assertTrue(a is a2)
        self.assertTrue(isinstance(a, A))
예제 #7
0
    def testIsBound(self):
        '''Injector.is_bound should return True.'''
        class A(object):
            pass

        a = A()

        injector = Injector()
        injector.bind(A, to=a)
        self.assertTrue(injector.is_bound(A))
예제 #8
0
    def testBind(self):
        '''Injector.bind should create a provider for a type and save it.'''
        class A(object):
            pass

        a = A()

        injector = Injector()
        injector.bind(A, to=a)
        self.assertTrue(injector.get(A) is a)
예제 #9
0
    def testBindScope(self):
        class Scope(object):
            pass

        scope = Scope()

        injector = Injector()
        injector.bind_scope(Scope, scope)

        self.assertTrue(injector.get(Scope) is scope)
        self.assertTrue(injector.is_scope_bound(Scope))
예제 #10
0
    def testGetMultipleScopes(self):
        class A(object):
            pass

        a = A()

        injector = Injector()
        scope = injector.get(ThreadScope)
        scope.bind(A, a)

        self.assertTrue(injector.get(A) is a)
예제 #11
0
    def testUnbindScope(self):
        class Scope(object):
            pass

        scope = Scope()

        injector = Injector()
        injector.bind_scope(Scope, scope)

        injector.unbind_scope(Scope)
        self.assertFalse(injector.is_bound(Scope))
        self.assertFalse(injector.is_scope_bound(Scope))
예제 #12
0
    def testGet(self):
        '''Injector.get should return an instance.'''
        class A(object):
            pass

        a = A()

        injector = Injector()
        injector.bind(A, to=a)

        a2 = injector.get(A)
        self.assertTrue(a2 is a)
예제 #13
0
    def testClear(self):
        '''Injector.clear should clear its bindings.'''
        class A(object):
            pass

        a = A()

        injector = Injector()
        injector.bind(A, a)
        self.assertTrue(injector.is_bound(A))

        injector.clear()
        self.assertFalse(injector.is_bound(A))
예제 #14
0
    def testUnbind(self):
        '''Injector.unbind should remove a binding.'''
        class A(object):
            pass

        a = A()

        injector = Injector()
        injector.bind(A, a)
        self.assertTrue(injector.is_bound(A))

        injector.unbind(A)
        self.assertFalse(injector.is_bound(A))
예제 #15
0
    def testBindFactory(self):
        class A(object):
            pass

        class B(object):
            pass

        injector = Injector()
        injector.bind_factory(A, B)

        self.assertTrue(injector.is_factory_bound(A))
        self.assertFalse(injector.is_bound(A))

        a = injector.get(A)
        self.assertTrue(isinstance(a, B))
        self.assertTrue(injector.is_bound(A))

        a2 = injector.get(A)
        self.assertTrue(a2 is a)
예제 #16
0
    def testUnbindFactory(self):
        class A(object):
            pass

        class B(object):
            pass

        injector = Injector()
        injector.bind_factory(A, B)

        self.assertTrue(injector.is_factory_bound(A))
        self.assertFalse(injector.is_bound(A))

        injector.get(A)
        self.assertTrue(injector.is_bound(A))

        injector.unbind_factory(A)
        self.assertFalse(injector.is_factory_bound(A))
        self.assertTrue(injector.is_bound(A))
예제 #17
0
 def setUp(self):
     self.injector = Injector()
     self.injector.register()
예제 #18
0
    def testGetNotBoundNoAutobind(self):
        class A(object):
            pass

        injector = Injector(autobind=False)
        self.assertRaises(NotBoundError, injector.get, A)
예제 #19
0
    def testUnbindNotBoundNoError(self):
        class A(object):
            pass

        injector = Injector()
        injector.unbind(A)
예제 #20
0
    def testUnbindNotPresentFactory(self):
        class A(object):
            pass

        injector = Injector()
        injector.unbind_factory(A)  # Nothing happens.