def test_binder_provider_for_type_with_metaclass(): # use a metaclass cross python2/3 way # otherwise should be: # class A(object, metaclass=abc.ABCMeta): # passa A = abc.ABCMeta('A', (object, ), {}) binder = Injector().binder assert (isinstance(binder.provider_for(A, None).get(), A))
def test_binder_provider_for_method_with_class_to_specific_subclass(): class A(object): pass class B(A): pass binder = Injector().binder provider = binder.provider_for(A, B) assert (type(provider) is ClassProvider) assert (isinstance(provider.get(), B))
def test_binder_provider_for_method_with_class(): binder = Injector().binder provider = binder.provider_for(int) assert (type(provider) is ClassProvider) assert (provider.get() == 0)
def test_binder_provider_for_method_with_instance(): binder = Injector().binder provider = binder.provider_for(int, to=1) assert (type(provider) is InstanceProvider) assert (provider.get() == 1)
def test_binder_provider_for_type_with_metaclass(): class A(object): __metaclass__ = abc.ABCMeta binder = Injector().binder assert isinstance(binder.provider_for(A, None).get(), A)
def test_binder_provider_for_method_with_explicit_provider(): binder = Injector().binder provider = binder.provider_for(int, to=InstanceProvider(1)) assert type(provider) is InstanceProvider assert provider.get() == 1