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); }
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); } }