Exemplo n.º 1
0
        /// <summary>
        /// 生成容器
        /// </summary>
        /// <returns>容器</returns>
        private CatLib.Container.Container MakeContainer()
        {
            var container = new CatLib.Container.Container();

            container.Instance("ContainerHelperTests", this);
            container.Instance(typeof(ContainerHelperTests).ToString(), this);
            return(container);
        }
Exemplo n.º 2
0
        public void CanUnBind()
        {
            var container = new CatLib.Container.Container();
            var bindData  = container.Bind("CanUnBind", (app, param) => "hello world", false);

            Assert.AreEqual("hello world", container.Make("CanUnBind").ToString());
            bindData.UnBind();
            Assert.AreEqual(null, container.Make("CanUnBind"));
        }
Exemplo n.º 3
0
        public void CheckAddIllegalInterceptor()
        {
            var container = new CatLib.Container.Container();
            var bindData  = new CatLib.Container.BindData(container, "CheckAddIllegalInterceptor", (app, param) => "hello world", false);

            Assert.Throws <ArgumentNullException>(() =>
            {
                bindData.AddInterceptor(null);
            });
        }
Exemplo n.º 4
0
        public void CheckIllegalResolving()
        {
            var container = new CatLib.Container.Container();
            var bindData  = new CatLib.Container.BindData(container, "CanAddOnResolving", (app, param) => "hello world", false);

            Assert.Throws <ArgumentNullException>(() =>
            {
                bindData.OnResolving(null);
            });
        }
Exemplo n.º 5
0
        public void AddContextualRepeat()
        {
            var container = new CatLib.Container.Container();
            var bindData  = new CatLib.Container.BindData(container, "AddContextualRepeat", (app, param) => "hello world", false);

            bindData.AddContextual("service", "service given");
            ExceptionAssert.Throws <RuntimeException>(() =>
            {
                bindData.AddContextual("service", "service given");
            });
        }
Exemplo n.º 6
0
        public void CanAddOnResolving()
        {
            var container = new CatLib.Container.Container();
            var bindData  = new CatLib.Container.BindData(container, "CanAddOnResolving", (app, param) => "hello world", false);

            bindData.OnResolving((bind, obj) => null);

            var data = bindData.ExecResolvingDecorator(new CatLib.Container.Container());

            Assert.AreEqual(null, data);
        }
Exemplo n.º 7
0
        public void CheckNeedsIsNotNull()
        {
            var container = new CatLib.Container.Container();
            var bindData  = new CatLib.Container.BindData(container, "NeedsIsNotNull", (app, param) => "hello world", false);

            var needs         = bindData.Needs("TestService");
            var needsWithType = bindData.Needs <BindDataTest>();

            Assert.AreNotEqual(null, needs);
            Assert.AreNotEqual(null, needsWithType);
        }
Exemplo n.º 8
0
        public void CheckIllegalUnBindInput()
        {
            var container = new CatLib.Container.Container();
            var bindData  = container.Bind("CanUnBind", (app, param) => "hello world", false);

            bindData.UnBind();

            Assert.Throws <RuntimeException>(() =>
            {
                bindData.Alias("hello");
            });
        }
Exemplo n.º 9
0
        /**
         * Container 是一个特殊的组件,一般情况下CatLib提供的App就继承自Container实例。
         * 但您也可以自建自己的Container.
         */
        public void Start()
        {
            CatLib.Container.Container container = new CatLib.Container.Container();

            container.OnResolving((bind, obj) =>
            {
                Debug.Log("(Global) Container.Resolving() , " + obj.GetType());
                return(obj);
            });

            NormalBindDemo(container);
        }
Exemplo n.º 10
0
        public void CanGetContextual()
        {
            var container = new CatLib.Container.Container();
            var bindData  = new CatLib.Container.BindData(container, "NeedsIsNotNull", (app, param) => "hello world", false);

            bindData.Needs("need1").Given("abc");
            bindData.Needs("need2").Given <BindDataTest>();

            Assert.AreEqual("abc", bindData.GetContextual("need1"));
            Assert.AreEqual(typeof(BindDataTest).ToString(), bindData.GetContextual("need2"));
            Assert.AreEqual("empty", bindData.GetContextual("empty"));
        }
Exemplo n.º 11
0
        public void CanOnRelease()
        {
            var container = new CatLib.Container.Container();
            var bindData  = new CatLib.Container.BindData(container, "CanAddOnRelease", (app, param) => "hello world", true);

            bindData.OnRelease((bind, obj) =>
            {
                Assert.AreEqual("Test", obj);
                Assert.AreSame(bindData, bind);
            });

            container.Instance("CanAddOnRelease", "Test");
            container.Release("CanAddOnRelease");
        }
Exemplo n.º 12
0
        public void CheckIllegalAlias()
        {
            var container = new CatLib.Container.Container();
            var bindData  = new CatLib.Container.BindData(container, "CheckIllegalAlias", (app, param) => "hello world", false);

            Assert.Throws <ArgumentNullException>(() =>
            {
                bindData.Alias(null);
            });
            Assert.Throws <ArgumentNullException>(() =>
            {
                bindData.Alias(string.Empty);
            });
        }
Exemplo n.º 13
0
        public void CanGiven()
        {
            var container = new CatLib.Container.Container();
            var bindData  = new CatLib.Container.BindData(container, "CanGiven", (app, param) => "hello world", false);
            var givenData = new CatLib.Container.GivenData(bindData);

            givenData.Needs("needs1");
            givenData.Given("hello");
            Assert.AreEqual("hello", bindData.GetContextual("needs1"));

            givenData = new CatLib.Container.GivenData(bindData);
            givenData.Needs("needs2");
            givenData.Given <GivenDataTest>();
            Assert.AreEqual(typeof(GivenDataTest).ToString(), bindData.GetContextual("needs2"));
        }
Exemplo n.º 14
0
        public void CanAddAlias()
        {
            var container = new CatLib.Container.Container();
            var bindData  = container.Bind("CanAddAlias", (app, param) => "hello world", false);

            bindData.Alias("Alias");
            bindData.Alias <BindDataTest>();

            var textAliasGet = container.GetBind("Alias");

            Assert.AreSame(textAliasGet, bindData);

            var classAliasGet = container.GetBind(typeof(BindDataTest).ToString());

            Assert.AreSame(bindData, textAliasGet);
            Assert.AreSame(bindData, classAliasGet);
        }
Exemplo n.º 15
0
        public void CheckGivenIllegalValue()
        {
            var container = new CatLib.Container.Container();
            var bindData  = new CatLib.Container.BindData(container, "CanGiven", (app, param) => "hello world", false);
            var givenData = new CatLib.Container.GivenData(bindData);

            givenData.Needs("needs");

            ExceptionAssert.Throws <ArgumentNullException>(() =>
            {
                givenData.Given(null);
            });
            ExceptionAssert.Throws <ArgumentNullException>(() =>
            {
                givenData.Given(string.Empty);
            });
        }
Exemplo n.º 16
0
        public void CanAddInterceptor()
        {
            var container = new CatLib.Container.Container();
            var bindData  = new CatLib.Container.BindData(container, "CanAddInterceptor", (app, param) => "hello world", false);

            var newInterceptorClass = new AddInterceptorClass();

            bindData.AddInterceptor <AddInterceptorClass>();
            bindData.AddInterceptor(newInterceptorClass);

            var interceptor = bindData.GetInterceptors();

            Assert.AreNotEqual(null, interceptor);
            Assert.AreEqual(2, interceptor.Length);
            Assert.AreSame(typeof(AddInterceptorClass), interceptor[0].GetType());
            Assert.AreSame(interceptor[1], newInterceptorClass);
            Assert.AreNotSame(interceptor[0], interceptor[1]);
        }
Exemplo n.º 17
0
        public void CheckIllegalRelease()
        {
            var container = new CatLib.Container.Container();
            var bindData  = new CatLib.Container.BindData(container, "CheckIllegalRelease", (app, param) => "hello world", false);

            Assert.Throws <ArgumentNullException>(() =>
            {
                bindData.OnRelease(null);
            });

            Assert.Throws <RuntimeException>(() =>
            {
                bindData.OnRelease((bind, obj) =>
                {
                    Assert.Fail();
                });
                container.Instance("CheckIllegalRelease", "Test");
                container.Release("CheckIllegalRelease");
            });
        }
Exemplo n.º 18
0
        /// <summary>
        /// 生成容器
        /// </summary>
        /// <returns>容器</returns>
        private CatLib.Container.Container MakeContainer()
        {
            var container = new CatLib.Container.Container();

            return(container);
        }
Exemplo n.º 19
0
 internal object TriggerRelease(object instance)
 {
     return(CatLibContainer.Trigger(this, instance, release));
 }
Exemplo n.º 20
0
 internal object TriggerAfterResolving(object instance)
 {
     return(CatLibContainer.Trigger(this, instance, afterResolving));
 }
Exemplo n.º 21
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BindData"/> class.
 /// </summary>
 /// <param name="container">The container instance.</param>
 /// <param name="service">The service name.</param>
 /// <param name="concrete">The service concrete.</param>
 /// <param name="isStatic">Whether the service is singleton(static).</param>
 public BindData(CatLibContainer container, string service, Func <IContainer, object[], object> concrete, bool isStatic)
     : base(container, service)
 {
     Concrete = concrete;
     IsStatic = isStatic;
 }
Exemplo n.º 22
0
 protected CatLib.Container.Container MakeContainer()
 {
     CatLib.Container.Container container = new CatLib.Container.Container();
     return(container);
 }