Пример #1
0
        public void PopAndPushPasses()
        {
            var creator = new DefaultViewInstanceCreator(
                (typeof(PoolingViewObj), new EmptyModelViewParamBinder()),
                (typeof(EmptyViewObject), new EmptyModelViewParamBinder())
                );
            var objPool = new ViewInstanceCreatorObjectPool(creator);

            Assert.AreSame(creator, objPool.UseCreator);

            {//PoolingViewObj
                var poolingBindInfo = new ModelViewBinder.BindInfo(typeof(PoolingViewObj));

                PoolingViewObj.newCounter = 0;
                var viewObj = objPool.PopOrCreate(poolingBindInfo) as PoolingViewObj;
                Assert.IsTrue(viewObj is PoolingViewObj);
                Assert.AreEqual(0, viewObj.DestroyCallCount);
                Assert.AreEqual(0, viewObj.BindCallCount);
                Assert.AreEqual(0, viewObj.UnbindCallCount);
                Assert.AreEqual(1, PoolingViewObj.newCounter);
                objPool.Push(viewObj);

                PoolingViewObj.newCounter = 0;
                var popViewObj = objPool.PopOrCreate(poolingBindInfo) as PoolingViewObj;
                Assert.AreSame(viewObj, popViewObj);
                Assert.AreEqual(0, PoolingViewObj.newCounter);

                PoolingViewObj.newCounter = 0;
                var popViewObj2 = objPool.PopOrCreate(poolingBindInfo) as PoolingViewObj;
                Assert.AreNotSame(viewObj, popViewObj2);
                Assert.AreEqual(1, PoolingViewObj.newCounter);
            }
            Debug.Log("Success Basic Pop and Push");

            {//EmptyViewObject
                var emptyBindInfo = new ModelViewBinder.BindInfo(typeof(EmptyViewObject));

                var viewObj = objPool.PopOrCreate(emptyBindInfo) as EmptyViewObject;
                Assert.IsTrue(viewObj is EmptyViewObject);
                objPool.Push(viewObj);

                var popViewObj = objPool.PopOrCreate(emptyBindInfo) as EmptyViewObject;
                Assert.AreSame(viewObj, popViewObj);

                var popViewObj2 = objPool.PopOrCreate(emptyBindInfo) as EmptyViewObject;
                Assert.AreNotSame(viewObj, popViewObj2);
            }
        }
Пример #2
0
        public void DisposePasses()
        {
            var creator = new DefaultViewInstanceCreator(
                (typeof(PoolingViewObj), new EmptyModelViewParamBinder()),
                (typeof(EmptyViewObject), new EmptyModelViewParamBinder())
                );
            var objPool = new ViewInstanceCreatorObjectPool(creator);

            Assert.AreSame(creator, objPool.UseCreator);

            var clearPoolingViewObj = new PoolingViewObj();

            objPool.Push(clearPoolingViewObj);

            var clearEmptyViewObj = new EmptyViewObject();

            objPool.Push(clearEmptyViewObj);


            objPool.Dispose();

            Assert.IsNull(objPool.UseCreator);
        }