예제 #1
0
        public void Inject_TargetNull_Test()
        {
            // Arrange
            QuillInjector target = new QuillInjector();

            // Act/Assert
            TestUtils.ExecuteExcectedException <QuillException>(() => target.Inject(null));
        }
예제 #2
0
        public void Inject_AlreadyInjected_Test()
        {
            // Arrange
            QuillInjector target = new QuillInjector();
            var           filter = (InjectionFilterBase)QM.InjectionFilter;

            filter.InjectionTargetTypes.Add(typeof(InjectionTargetSub));
            var actual = new InjectionTargetMain();

            // Act
            target.Inject(actual);
            var expected = actual.Actual;

            target.Inject(actual); // 二回実行

            // Assert
            Assert.IsNotNull(actual.Actual, "二回実行してもインジェクション結果は失われない想定");
            Assert.AreEqual(expected, actual.Actual, "二回実行してもインスタンスは変わらない想定");
        }
예제 #3
0
        public void InjectTest()
        {
            // Arrange
            QuillInjector target = new QuillInjector();
            var           filter = (InjectionFilterBase)QM.InjectionFilter;

            filter.InjectionTargetTypes.Add(typeof(InjectionTargetSub));
            var actual = new InjectionTargetMain();

            // Act
            target.Inject(actual);

            // Assert
            Assert.IsNotNull(actual.Actual);
            Assert.IsNull(InjectionTargetMain.StaticActual, "デフォルトではstaticフィールドはインジェクション対象外");
        }
예제 #4
0
        public void Inject_NotTarget_Test()
        {
            QM.OutputLog(GetType(), EnumMsgCategory.INFO, "Test start.");

            // Arrange
            QuillInjector target = new QuillInjector();
            var           filter = (InjectionFilterBase)QM.InjectionFilter;

            filter.IsTargetTypeDefault = false;
            var actual = new InjectionTargetMain();

            // Act
            target.Inject(actual);

            // Assert
            Assert.IsNull(actual.Actual, "インジェクション対象外の想定");
        }
예제 #5
0
        public void Inject_Recursive_Test()
        {
            // Arrange
            QuillInjector target = new QuillInjector();
            var           filter = (InjectionFilterBase)QM.InjectionFilter;

            filter.InjectionTargetTypes.Add(typeof(InjectionRecursive));
            filter.InjectionTargetTypes.Add(typeof(InjectionTargetMain));
            filter.InjectionTargetTypes.Add(typeof(InjectionTargetSub));
            var actual = new InjectionRecursive();

            // Act
            target.Inject(actual);

            // Assert
            Assert.IsNotNull(actual.Actual);
            Assert.IsNotNull(actual.Actual.Actual);
            Assert.IsNotNull(actual.SameSourceType,
                             "フィールドにインジェクション対象と同じ型のものがあても無限ループにならず、かつインスタンスは設定されている想定");
            Assert.AreEqual(actual.SameSourceType, actual);
        }