Exemplo n.º 1
0
        [Test] public void TestRemoveAdded()
        {
            var test = new Test();

            EventHandler handler = (s, a) => Test.Result += "B";

            test.Event1 += handler;
            test.Event1 += handler;
            test.Event1 += test.Handler;
            test.Event1 += (s, a) => Test.Result += "C";
            Test.Event3 += test.Handler;
            test.RaiseEvents();

            Assert.Equal(4, test.Event1HandlerCount);
            Assert.Equal(0, test.Event2HandlerCount);
            Assert.Equal(1, test.Event3HandlerCount);
            Assert.Equal("BBAC--A", Test.Result);
            Test.Result = string.Empty;

            using (EventsSnapshot.Capture(test, EventsSnapshot.Restore.RemoveAdded))
            {
                test.Event1 += (s, a) => Test.Result += "D";
                test.Event1 += test.Handler;
                test.Event1 += handler;
                test.AttachHandlerToEvent2();
                test.AttachHandlerToEvent3();
                test.RaiseEvents();
                Assert.Equal(7, test.Event1HandlerCount);
                Assert.Equal(1, test.Event2HandlerCount);
                Assert.Equal(2, test.Event3HandlerCount);
                Assert.Equal("BBACDAB-A-AA", Test.Result);
                Test.Result = string.Empty;

                test.Event1 -= handler;
                test.Event1 -= handler;
                test.AttachHandlerToEvent2();
                test.AttachHandlerToEvent3();
                test.RaiseEvents();
                Assert.Equal(5, test.Event1HandlerCount);
                Assert.Equal(2, test.Event2HandlerCount);
                Assert.Equal(3, test.Event3HandlerCount);
                Assert.Equal("BACDA-AA-AAA", Test.Result);
                Test.Result = string.Empty;
            }
            test.RaiseEvents();
            Assert.Equal(3, test.Event1HandlerCount);
            Assert.Equal(0, test.Event2HandlerCount);
            Assert.Equal(1, test.Event3HandlerCount);
            Assert.Equal("BAC--A", Test.Result);
            Test.Result = string.Empty;
        }
Exemplo n.º 2
0
        [Test] public void TestBoth()
        {
            var test = new Test();

            EventHandler handler = (s, a) => Test.Result += "B";

            test.Event1 += handler;
            test.Event1 += handler;
            test.Event1 += test.Handler;
            test.Event1 += (s, a) => Test.Result += "C";
            Test.Event3 += test.Handler;
            test.RaiseEvents();

            Assert.Equal(4, test.Event1HandlerCount);
            Assert.Equal(0, test.Event2HandlerCount);
            Assert.Equal(1, test.Event3HandlerCount);
            Assert.Equal("BBAC--A", Test.Result);
            Test.Result = string.Empty;

            using (EventsSnapshot.Capture(test, EventsSnapshot.Restore.Both))
            {
                test.Event1 -= handler;
                test.Event1 += test.Handler;
                test.Event1 += test.Handler;
                test.Event1 += (s, a) => Test.Result += "D";
                test.RaiseEvents();
                Assert.Equal(6, test.Event1HandlerCount);
                Assert.Equal(0, test.Event2HandlerCount);
                Assert.Equal(1, test.Event3HandlerCount);
                Assert.Equal("BACAAD--A", Test.Result);
                Test.Result = string.Empty;

                test.Event1 += (s, a) => Test.Result += "E";
                test.AttachHandlerToEvent2();
                Test.Event3 -= test.Handler;
                test.RaiseEvents();
                Assert.Equal(7, test.Event1HandlerCount);
                Assert.Equal(1, test.Event2HandlerCount);
                Assert.Equal(0, test.Event3HandlerCount);
                Assert.Equal("BACAADE-A-", Test.Result);
                Test.Result = string.Empty;
            }

            test.RaiseEvents();
            Assert.Equal(4, test.Event1HandlerCount);
            Assert.Equal(0, test.Event2HandlerCount);
            Assert.Equal(1, test.Event3HandlerCount);
            Assert.Equal("BACB--A", Test.Result);
            Test.Result = string.Empty;
        }
Exemplo n.º 3
0
        [Test] public void TestAddRemoved()
        {
            var test = new Test();

            EventHandler handler = (s, a) => Test.Result += "B";

            test.Event1 += handler;
            test.Event1 += handler;
            test.Event1 += test.Handler;
            test.Event1 += (s, a) => Test.Result += "C";
            test.AttachHandlerToEvent2();
            Test.Event3 += test.Handler;
            test.RaiseEvents();

            Assert.Equal(4, test.Event1HandlerCount);
            Assert.Equal(1, test.Event2HandlerCount);
            Assert.Equal(1, test.Event3HandlerCount);
            Assert.Equal("BBAC-A-A", Test.Result);
            Test.Result = string.Empty;

            using (EventsSnapshot.Capture(test, EventsSnapshot.Restore.AddRemoved))
            {
                test.ResetHandlers();
                test.RaiseEvents();
                Assert.Equal(0, test.Event1HandlerCount);
                Assert.Equal(0, test.Event2HandlerCount);
                Assert.Equal(0, test.Event3HandlerCount);
                Assert.Equal("--", Test.Result);
                Test.Result = string.Empty;

                test.Event1 += handler;
                test.RaiseEvents();
                Assert.Equal(1, test.Event1HandlerCount);
                Assert.Equal(0, test.Event2HandlerCount);
                Assert.Equal(0, test.Event3HandlerCount);
                Assert.Equal("B--", Test.Result);
                Test.Result = string.Empty;
            }

            test.RaiseEvents();
            Assert.Equal(4, test.Event1HandlerCount);
            Assert.Equal(1, test.Event2HandlerCount);
            Assert.Equal(1, test.Event3HandlerCount);
            Assert.Equal("BBAC-A-A", Test.Result);
            Test.Result = string.Empty;
        }