Example #1
0
        public void TestBinding()
        {
            Binding binding    = new Binding();
            var     equivalent = new EventEquivalent();

            binding.Bind(new SampleEvent1(), new MethodHandler <SampleEvent1>(OnSampleEvent1));

            var e1 = new SampleEvent1();
            var e2 = new SampleEvent1 {
                Foo = 1
            };
            var e3 = new SampleEvent1 {
                Foo = 1, Bar = "bar"
            };

            List <Handler> handlerChain = new List <Handler>();

            handlerChain.Clear();
            Assert.Equal(1, binding.BuildHandlerChain(e1, equivalent, handlerChain));
            Assert.Equal(new MethodHandler <SampleEvent1>(OnSampleEvent1), handlerChain[0]);
            handlerChain.Clear();
            Assert.Equal(1, binding.BuildHandlerChain(e2, equivalent, handlerChain));
            Assert.Equal(new MethodHandler <SampleEvent1>(OnSampleEvent1), handlerChain[0]);
            handlerChain.Clear();
            Assert.Equal(1, binding.BuildHandlerChain(e3, equivalent, handlerChain));
            Assert.Equal(new MethodHandler <SampleEvent1>(OnSampleEvent1), handlerChain[0]);

            binding.Unbind(new SampleEvent1(), new MethodHandler <SampleEvent1>(OnSampleEvent1));

            handlerChain.Clear();
            Assert.Equal(0, binding.BuildHandlerChain(e1, equivalent, handlerChain));
            handlerChain.Clear();
            Assert.Equal(0, binding.BuildHandlerChain(e2, equivalent, handlerChain));
            handlerChain.Clear();
            Assert.Equal(0, binding.BuildHandlerChain(e3, equivalent, handlerChain));
        }
Example #2
0
 public void OnSpecificSampleEvent1(SampleEvent1 e)
 {
 }
Example #3
0
 public void OnSampleEvent1(SampleEvent1 e)
 {
 }
Example #4
0
 IEnumerator OnSampleEvent1Coroutine(Coroutine coroutine, SampleEvent1 e)
 {
     yield break;
 }
Example #5
0
 void OnSampleEvent1(SampleEvent1 e)
 {
 }
Example #6
0
        public void TestHandlerChainBuilding()
        {
            Binding binding    = new Binding();
            var     equivalent = new EventEquivalent();

            binding.Bind(new SampleEvent1(), new MethodHandler <SampleEvent1>(OnSampleEvent1));
            binding.Bind(new SampleEvent1 {
                Foo = 1
            }, new MethodHandler <SampleEvent1>(OnSpecificSampleEvent1));
            binding.Bind(new Event(), new MethodHandler <Event>(OnEvent));

            var e1 = new SampleEvent1();
            var e2 = new SampleEvent1 {
                Foo = 1
            };
            var e3 = new SampleEvent1 {
                Foo = 1, Bar = "bar"
            };
            var e4 = new SampleEvent1 {
                Foo = 2
            };
            var e5 = new SampleEvent2 {
                Foo = 1, Bar = "bar"
            };
            var e6 = new SampleEvent2 {
                Foo = 2, Bar = "bar"
            };

            List <Handler> handlerChain = new List <Handler>();

            handlerChain.Clear();
            Assert.Equal(2, binding.BuildHandlerChain(e1, equivalent, handlerChain));
            Assert.Equal(new MethodHandler <SampleEvent1>(OnSampleEvent1), handlerChain[0]);
            Assert.Equal(new MethodHandler <Event>(OnEvent), handlerChain[1]);

            handlerChain.Clear();
            Assert.Equal(3, binding.BuildHandlerChain(e2, equivalent, handlerChain));
            Assert.Equal(new MethodHandler <SampleEvent1>(OnSampleEvent1), handlerChain[0]);
            Assert.Equal(new MethodHandler <SampleEvent1>(OnSpecificSampleEvent1), handlerChain[1]);
            Assert.Equal(new MethodHandler <Event>(OnEvent), handlerChain[2]);

            handlerChain.Clear();
            Assert.Equal(3, binding.BuildHandlerChain(e3, equivalent, handlerChain));
            Assert.Equal(new MethodHandler <SampleEvent1>(OnSampleEvent1), handlerChain[0]);
            Assert.Equal(new MethodHandler <SampleEvent1>(OnSpecificSampleEvent1), handlerChain[1]);
            Assert.Equal(new MethodHandler <Event>(OnEvent), handlerChain[2]);

            handlerChain.Clear();
            Assert.Equal(2, binding.BuildHandlerChain(e4, equivalent, handlerChain));
            Assert.Equal(new MethodHandler <SampleEvent1>(OnSampleEvent1), handlerChain[0]);
            Assert.Equal(new MethodHandler <Event>(OnEvent), handlerChain[1]);

            handlerChain.Clear();
            Assert.Equal(3, binding.BuildHandlerChain(e5, equivalent, handlerChain));
            Assert.Equal(new MethodHandler <SampleEvent1>(OnSampleEvent1), handlerChain[0]);
            Assert.Equal(new MethodHandler <SampleEvent1>(OnSpecificSampleEvent1), handlerChain[1]);
            Assert.Equal(new MethodHandler <Event>(OnEvent), handlerChain[2]);

            handlerChain.Clear();
            Assert.Equal(2, binding.BuildHandlerChain(e6, equivalent, handlerChain));
            Assert.Equal(new MethodHandler <SampleEvent1>(OnSampleEvent1), handlerChain[0]);
            Assert.Equal(new MethodHandler <Event>(OnEvent), handlerChain[1]);

            binding.Unbind(new SampleEvent1(), new MethodHandler <SampleEvent1>(OnSampleEvent1));

            handlerChain.Clear();
            Assert.Equal(1, binding.BuildHandlerChain(e1, equivalent, handlerChain));
            Assert.Equal(new MethodHandler <Event>(OnEvent), handlerChain[0]);

            binding.Unbind(new Event(), new MethodHandler <Event>(OnEvent));

            handlerChain.Clear();
            Assert.Equal(1, binding.BuildHandlerChain(e2, equivalent, handlerChain));
            Assert.Equal(new MethodHandler <SampleEvent1>(OnSpecificSampleEvent1), handlerChain[0]);

            handlerChain.Clear();
            Assert.Equal(1, binding.BuildHandlerChain(e3, equivalent, handlerChain));
            Assert.Equal(new MethodHandler <SampleEvent1>(OnSpecificSampleEvent1), handlerChain[0]);

            handlerChain.Clear();
            Assert.Equal(0, binding.BuildHandlerChain(e4, equivalent, handlerChain));
        }
Example #7
0
        public void TestFullSerialization()
        {
            var eventFactory = new EventFactory();

            eventFactory.Register <SampleEvent1>();
            eventFactory.Register <SampleEvent2>();
            eventFactory.Register <SampleEvent7>();

            var buffer = new x2net.Buffer();

            var event1 = new SampleEvent1 {  // base
                Foo = 9,
                Bar = "hello"
            };
            var event2 = new SampleEvent2 {  // derived
                Foo = 9,
                Bar = "hello",
                Baz = true
            };

            var e = new SampleEvent7 {
                // base > base > base
                SampleEvent = event1
            };  // has base
            Serializer serializer = new Serializer(buffer);

            serializer.Write(e.GetTypeId());
            e.Serialize(serializer);

            long bufferLength = buffer.Length;

            buffer.Rewind();
            Deserializer deserializer = new Deserializer(buffer, eventFactory);
            int          typeId;

            deserializer.Read(out typeId);
            var retrieved = eventFactory.Create(typeId);

            retrieved.Deserialize(deserializer);

            var e2 = retrieved as SampleEvent7;

            Assert.NotNull(e2);

            Assert.Equal(e.SampleEvent.Foo, e2.SampleEvent.Foo);
            Assert.Equal(e.SampleEvent.Bar, e2.SampleEvent.Bar);

            buffer.Reset();

            // derived > base > base
            e.SampleEvent = event2;  // base <= derived
            serializer    = new Serializer(buffer);
            serializer.Write(e.GetTypeId());
            e.Serialize(serializer);

            Assert.True(bufferLength < buffer.Length);

            {
                var e3 = new SampleEvent8 {
                    SampleEvent = event2 // derived <= derived
                };                       // has derived
                var buffer2 = new x2net.Buffer();
                serializer = new Serializer(buffer2);
                serializer.Write(e3.GetTypeId());
                e3.Serialize(serializer);
                Assert.Equal(buffer2.Length, buffer.Length);
            }

            buffer.Rewind();
            deserializer = new Deserializer(buffer, eventFactory);
            deserializer.Read(out typeId);
            retrieved = eventFactory.Create(typeId);
            retrieved.Deserialize(deserializer);

            var e4 = retrieved as SampleEvent7;

            Assert.NotNull(e4);

            var deserialized = e4.SampleEvent as SampleEvent2;

            Assert.NotNull(deserialized);
            Assert.True(deserialized.Baz);

            Assert.Equal(e.SampleEvent.Foo, e4.SampleEvent.Foo);
            Assert.Equal(e.SampleEvent.Bar, e4.SampleEvent.Bar);
        }