예제 #1
0
        public void Test_PostCallback()
        {
            Injector injector = new Injector();

            //  Add first binding
            injector.AddBinding <SimpleClassA>().ToType <SimpleClassA>().SetPostInjectionCallback(Callback);
            injector.AddBinding <SimpleClassB>().ToValue(new SimpleClassB());

            //  Validate binding
            Assert.Equal(2, injector.BindingCount);
            Assert.True(injector.HasBindingForType(typeof(SimpleClassA)));
            Assert.True(injector.HasBindingForType(typeof(SimpleClassB)));

            //  Check error
            Assert.Equal(0, injector.ErrorCount);

            //  Set fields
            _IscallbackCalled = false;
            _CallbackCaller   = null;

            //  Get Instance
            SimpleClassA value = injector.GetInstance <SimpleClassA>();

            //  Check error
            Assert.Equal(0, injector.ErrorCount);

            //  Validate binding
            Assert.True(_IscallbackCalled);
            Assert.Equal(value, _CallbackCaller);
        }
        public void Test_ValueInjectionToNestedMembers()
        {
            Injector injector = new Injector();

            //  Add first binding
            SimpleClassA value = new SimpleClassA();

            injector.AddBinding <SimpleClassA>().ToValue(value);

            //  Create injection target
            ExtendedClassThatUses_SimpleClassA target = new ExtendedClassThatUses_SimpleClassA();

            //  Check before injection
            Assert.Null(target.value1);
            Assert.Null(target.value2);

            //  Inject
            injector.InjectInto(target);

            //  Check error
            Assert.Equal(0, injector.ErrorCount);

            //  Check after injection
            Assert.NotNull(target.value1);
            Assert.NotNull(target.value2);
            Assert.Same(value, target.value1);
            Assert.Same(value, target.value2);
        }
        public void Test_UnifyTypedProvidersWithSameType()
        {
            InjectorContext injector = new InjectorContext();

            SimpleClassA value = new SimpleClassA();

            //  Add first binding
            injector.AddBinding <ISimpleInterfaceA>().ToValue(value);

            //  Check bindings and providers
            Assert.Equal(1, injector.BindingCount);
            Assert.Equal(1, injector.ProviderCount);

            //  Check errors
            Assert.Equal(0, injector.ErrorCount);

            //  Add second binding to same value
            injector.AddBinding <ISimpleInterfaceAA>().ToValue(value);

            //  Check bindings and providers
            Assert.Equal(2, injector.BindingCount);
            Assert.Equal(1, injector.ProviderCount);

            //  Check errors
            Assert.Equal(0, injector.ErrorCount);

            //  Add third binding to same value
            injector.AddBinding <SimpleClassA>().ToValue(value);

            //  Check bindings and providers
            Assert.Equal(3, injector.BindingCount);
            Assert.Equal(1, injector.ProviderCount);

            //  Check errors
            Assert.Equal(0, injector.ErrorCount);
        }
        public void Test_ValueInjectionToAssignableType()
        {
            Injector injector = new Injector();

            //  Add first binding
            SimpleClassA value = new SimpleClassA();

            injector.AddBinding <ISimpleInterfaceA>().ToValue(value);

            //  Create injection target
            ClassThatUses_SimpleInterfaceA target = new ClassThatUses_SimpleInterfaceA();

            //  Check before injection
            Assert.Null(target.value);

            //  Inject
            injector.InjectInto(target);

            //  Check error
            Assert.Equal(0, injector.ErrorCount);

            //  Check after injection
            Assert.NotNull(target.value);
        }
예제 #5
0
 public ClassThatUses_SimpleClassA()
 {
     value2 = null; _value1 = null;
 }