Пример #1
0
        public void FilteredCustomHandlerUsingCombinedFilter_FiltersEventsLocally()
        {
            // prepare event handler
            var firstArgument  = 0;
            var secondArgument = string.Empty;
            var handled        = false;
            var handler        = new CustomEventType((first, second) =>
            {
                firstArgument  = first;
                secondArgument = second;
                handled        = true;
            });

            // initialize event filter
            handler = FilteredEventHandler.Create(handler, new CustomEventFilter("2.718", "1.618"));
            handler = FilteredEventHandler.Create(handler, new CustomEventFilter("3.14", "2.718"));

            // attach client-side event filter
            var sample = new SampleServer();

            sample.CustomEvent += handler;

            // raise events, check results
            sample.RaiseCustomEvent(3, ".14");             // filtered out
            Assert.IsFalse(handled);

            sample.RaiseCustomEvent(2, ".718");
            Assert.IsTrue(handled);
            Assert.AreEqual(2, firstArgument);
            Assert.AreEqual(".718", secondArgument);

            handled = false;
            sample.RaiseCustomEvent(1, ".618");             // filtered out
            Assert.IsFalse(handled);
        }