public void DeregisterInstanceMethodsTest()
        {
            var disp = new Dispatcher();
            var disc = new MessageHandlerDiscovery(disp);

            var x1 = new CInstanceEventHandlers()
            {
                Step = 1
            };
            var x2 = new CInstanceEventHandlers()
            {
                Step = 7
            };

            disc.RegisterInstanceHandlers(x1);
            disc.RegisterInstanceHandlers(x2);

            disp.RegisterHandler <object>(x => m_anything = true);

            var h1 = disp.GetAllHandlers();

            Assert.AreEqual(5, h1.Count, "Count after registration");

            disp.DeregisterHandlerObject(x2);
            var h2 = disp.GetAllHandlers();

            Assert.AreEqual(3, h2.Count, "Count after Deregistration");
        }
        public void InstanceMethodHandlersTest()
        {
            var disp = new Dispatcher();
            var disc = new MessageHandlerDiscovery(disp);

            var x1 = new CInstanceEventHandlers()
            {
                Step = 1
            };
            var x2 = new CInstanceEventHandlers()
            {
                Step = 7
            };

            disc.RegisterInstanceHandlers(x1);
            disc.RegisterInstanceHandlers(x2);

            disp.Post(new EvtShape());
            disp.Post(new EvtCircle());
            disp.Post(new EvtSquare());
            disp.Post(new EvtShape());
            disp.Post(new EvtCircle());
            disp.Post(new EvtSquare());

            Assert.AreEqual(8, disp.EventExecutionCount, "Execution Count");
            Assert.AreEqual(2, x1.Circles, "x1 circles");
            Assert.AreEqual(2, x1.Squares, "x1 squares");
            Assert.AreEqual(14, x2.Circles, "x2 circles");
            Assert.AreEqual(14, x2.Squares, "x2 squares");
        }