예제 #1
0
        public void SendPasses()
        {
            #region Construct Enviroment
            //Model Hierarchy
            // - root: #main type=FookableModel
            //   - reciever: #main type=RecieverModel
            //   - noneReciever: #main type=NoneRecieverModel
            //     - model: #main type=Model
            //
            //View info
            // #main:
            //   - SenderViewObj: ID=SenderViewObj, InstanceID=SenderViewObj, BinderID=SenderViewObj
            //   - EventHandlerViewObj: ID=reciever, InstanceID=SenderViewObj, BinderID=SenderViewObj

            var root = new FookableModel()
            {
                Name = "root", LogicalID = new ModelIDList("main")
            };
            var recieverModel = new TestSendPassRecieverModel()
            {
                Name = "reciever", Parent = root, LogicalID = new ModelIDList("main")
            };
            var noneRecieverModel = new NoneRecieverModel()
            {
                Name = "noneReciever", Parent = root, LogicalID = new ModelIDList("main")
            };
            var model1 = new Model()
            {
                Name = "model", Parent = noneRecieverModel, LogicalID = new ModelIDList("main")
            };

            string viewReciever = "reciever";
            var    viewCreator  = new DefaultViewInstanceCreator(
                (typeof(EventHandlerViewObj), new EventHandlerViewObj.ParamBinder())
                );
            var binderMap = new ModelViewBinderMap(viewCreator,
                                                   new ModelViewBinder("#main", null,
                                                                       new ModelViewBinder.BindInfo(viewReciever, typeof(EventHandlerViewObj))
                                                                       ));
            var binderMapInstance = binderMap.CreateBinderInstaceMap();
            binderMapInstance.RootModel = root;
            #endregion

            var i = EventHandlerTypeManager.Instance;
            return;

            i.EntryEventHandlerExecuter <ITestSendPassReciever, int>(
                (reciever, sender, eventData) => {
                (reciever as ITestSendPassReciever).Recieve(sender, (int)eventData);
            }
                );
            var selector = new EventHandlerSelector(ModelRelationShip.Child, "", "");

            selector.Send <ITestSendPassReciever>(root, 100, binderMapInstance);

            Assert.AreSame(root, recieverModel.SenderModel);
            Assert.AreEqual(100, recieverModel.RecievedValue);
        }
예제 #2
0
        public void QueryPasses()
        {
            #region Construct Enviroment
            //Model Hierarchy
            // - root: #main type=FookableModel
            //   - reciever: #main type=RecieverModel
            //   - noneReciever: #main type=NoneRecieverModel
            //     - model: #main type=Model
            //
            //View info
            // #main:
            //   - SenderViewObj: ID=SenderViewObj, InstanceID=SenderViewObj, BinderID=SenderViewObj
            //   - EventHandlerViewObj: ID=reciever, InstanceID=SenderViewObj, BinderID=SenderViewObj

            var root = new FookableModel()
            {
                Name = "root", LogicalID = new ModelIDList("main")
            };
            var recieverModel = new RecieverModel()
            {
                Name = "reciever", Parent = root, LogicalID = new ModelIDList("main")
            };
            var noneRecieverModel = new NoneRecieverModel()
            {
                Name = "noneReciever", Parent = root, LogicalID = new ModelIDList("main")
            };
            var model1 = new Model()
            {
                Name = "model", Parent = noneRecieverModel, LogicalID = new ModelIDList("main")
            };

            string viewReciever = "reciever";
            var    viewCreator  = new DefaultViewInstanceCreator(
                (typeof(EventHandlerViewObj), new EventHandlerViewObj.ParamBinder())
                );
            var binderMap = new ModelViewBinderMap(viewCreator,
                                                   new ModelViewBinder("#main", null,
                                                                       new ModelViewBinder.BindInfo(viewReciever, typeof(EventHandlerViewObj))
                                                                       ));
            var binderMapInstance = binderMap.CreateBinderInstaceMap();
            binderMapInstance.RootModel = root;
            #endregion

            {//None F**k Selector
                var selector = new EventHandlerSelector(ModelRelationShip.Parent, "", "");
                Assert.IsFalse(selector.IsFooking);

                float eventData  = 1.234f;
                var   enumerable = selector.Query(typeof(ITestReciever), recieverModel, binderMapInstance, eventData);

                var errorMessage = "RecieverSelector#Queryは指定したRecieverTypeとEventData、クエリと一致したModelを返すようにしてください。";
                Assert.AreEqual(1, enumerable.Count(), errorMessage);
                var first = enumerable.First();
                Assert.AreEqual(typeof(ITestReciever), first.eventHandlerType, errorMessage);
                Assert.AreSame(root, first.eventHandler, errorMessage);
                Assert.AreEqual(eventData, first.eventData, errorMessage);
            }

            {//F**k Selector!!
                var selector = new EventHandlerSelector(ModelRelationShip.Parent, "", "");
                Assert.IsFalse(selector.IsFooking);

                // set F**k info!!
                selector.FookingRecieverType = typeof(IFookingReciever);
                selector.FookEventData       = 432;
                Assert.IsTrue(selector.IsFooking);

                int eventData  = 123;
                var enumerable = selector.Query(typeof(ITestReciever), recieverModel, binderMapInstance, eventData);

                var errorMessage = "F**k情報が設定されたRecieverSelectorの場合はRecieverSelector#QueryはrecieverTypeを(RecieverSelector#FookingRecieverType)、eventDataを(RecieverSelector#FookEventData)に変換したものを返すようにしてください。";
                Assert.AreEqual(1, enumerable.Count(), errorMessage);
                var first = enumerable.First();
                Assert.AreEqual(typeof(IFookingReciever), first.eventHandlerType, errorMessage);
                Assert.AreSame(root, first.eventHandler, errorMessage);
                Assert.AreEqual(selector.FookEventData, first.eventData, errorMessage);
            }
        }