public void SimpleIOCRegisterTwice()
        {
            var simpleIOC = new SimpleIOC();

            // 重复注册的容错
            simpleIOC.Resolve <SimpleIOC>();
            simpleIOC.Resolve <SimpleIOC>();

            // 代码到达这里就算通过
            Assert.IsTrue(true);
        }
        public void SimpleIOCRegsiterInstance()
        {
            var simpleIOC = new SimpleIOC();

            simpleIOC.RegisterInstance(new SimpleIOC());

            var instanceA = simpleIOC.Resolve <SimpleIOC>();
            var instanceB = simpleIOC.Resolve <SimpleIOC>();

            // 两个实例相同就算通过
            Assert.AreEqual(instanceA, instanceB);
        }
        public void SimpleIOCRegsiterInstanceDependency()
        {
            var simpleIOC = new SimpleIOC();

            // 注册依赖
            simpleIOC.RegisterInstance <ISimpleIOC>(simpleIOC);

            var iocA = simpleIOC.Resolve <ISimpleIOC>();
            var iocB = simpleIOC.Resolve <ISimpleIOC>();

            Assert.AreEqual(iocA, simpleIOC);
            Assert.AreEqual(iocA, iocB);
        }
        public void SimpleIOCResolveRegisteredType()
        {
            var simpleIOC = new SimpleIOC();

            // 不进行注册

            var obj = simpleIOC.Resolve <SimpleIOC>();

            // 为空值时才应该测试通过
            Assert.IsNull(obj);
        }
        public void SimpleIOCClear()
        {
            var simpleIOC = new SimpleIOC();

            // 注册依赖
            simpleIOC.RegisterInstance(new SomeDependencyA());
            simpleIOC.RegisterInstance <ISimpleIOC>(simpleIOC);
            simpleIOC.Register <SomeDependencyB>();

            simpleIOC.Clear();

            // 获取对象
            var someDependencyA = simpleIOC.Resolve <SomeDependencyA>();
            var someDependencyB = simpleIOC.Resolve <SomeDependencyB>();
            var ioc             = simpleIOC.Resolve <ISimpleIOC>();

            // 全部为空才对
            Assert.IsNull(someDependencyA);
            Assert.IsNull(someDependencyB);
            Assert.IsNull(ioc);
        }
        public void SimpleIOCRegsiterDependency()
        {
            var simpleIOC = new SimpleIOC();

            // 注册依赖
            simpleIOC.Register <ISimpleIOC, SimpleIOC>();

            var ioc = simpleIOC.Resolve <ISimpleIOC>();

            Debug.Log(ioc.GetType());
            // 通过 ISimpleIOC 获取的对象类型应该是 SimpleIOC
            Assert.AreEqual(ioc.GetType(), typeof(SimpleIOC));
        }
        public void SimpleIOCRegisterResolveTest()
        {
            var simpleIOC = new SimpleIOC();

            simpleIOC.Register <SimpleIOC>();


            var obj = simpleIOC.Resolve <SimpleIOC>();

            // 是否创建了实例
            Assert.IsNotNull(obj);

            // 不相同 说明是 创建了实例
            Assert.AreNotEqual(simpleIOC, obj);
        }