示例#1
0
        public virtual void BasicFilteringShouldWork()
        {
            var callCounter = 0;

            using (Events<SystemChecked>.Where(ev => ev.HealthLevel == 100).Subscribe(
                ev =>
                {
                    callCounter++;
                    ev.HealthLevel.Should().Be(100);
                }))
            {
                Events.Publish(new SystemChecked(99));
                Events.Publish(new SystemChecked(100)); // +1
                Events.Publish(new SystemChecked(100)); // +1
            }

            callCounter.Should().Be(2);

            callCounter = 0;

            using (Events<SystemChecked>.Where(ev => ev.HealthLevel > 98)
                                        .Where(ev => ev.HealthLevel == 100).Subscribe(
                                            ev =>
                                            {
                                                callCounter++;
                                                ev.HealthLevel.Should().Be(100);
                                            }))
            {
                Events.Publish(new SystemChecked(98));
                Events.Publish(new SystemChecked(99));
                Events.Publish(new SystemChecked(100)); // +1
                Events.Publish(new SystemChecked(100)); // +1
            }

            callCounter.Should().Be(2);

            var handler = new SystemCheckedHandler();

            using (Events<SystemChecked>.Where(ev => ev.HealthLevel > 98)
                                        .Where(ev => ev.HealthLevel == 100).Subscribe(handler.Handle))
            {
                Events.Publish(new SystemChecked(98));
                Events.Publish(new SystemChecked(99));
                Events.Publish(new SystemChecked(100)); // +1
                Events.Publish(new SystemChecked(100)); // +1
            }

            handler.CallCounter.Should().Be(2);
        }
示例#2
0
        public virtual void BasicSubscribeUnsubsribeShouldWork()
        {
            var callCounter = 0;

            using (Events.OfType<SystemChecked>().Subscribe(ev => callCounter++))
            {
                Events.Publish(new SystemChecked()); // +1
                Events.Publish(new SystemChecked()); // +1
                Events.Local.Publish(new SystemChecked());
            }

            callCounter.Should().Be(2);

            Events.Publish(new SystemChecked());

            callCounter.Should().Be(2);

            callCounter = 0;

            using (Events.Local.OfType<SystemChecked>().Subscribe(ev => callCounter++))
            {
                Events.Publish(new SystemChecked()); // +1
                Events.Publish(new SystemChecked()); // +1

                Events.Local.Publish(new SystemChecked()); // +1    
            }

            callCounter.Should().Be(3);

            Events.Publish(new SystemChecked());

            callCounter.Should().Be(3);

            callCounter = 0;

            var handler = new SystemCheckedHandler();
            using (Events.OfAnyType().Subscribe<SystemChecked>(handler.Handle))
            {
                Events.Publish(new SystemChecked()); // +1
                Events.Publish(new SystemChecked()); // +1
                Events.Local.Publish(new SystemChecked());
            }

            handler.CallCounter.Should().Be(2);

            Events.Publish(new SystemChecked());

            handler.CallCounter.Should().Be(2);

            handler = new SystemCheckedHandler();
            using (Events<SystemChecked>.Subscribe(handler.Handle))
            {
                Events.Publish(new SystemChecked()); // +1
                Events.Publish(new SystemChecked()); // +1
                Events.Local.Publish(new SystemChecked());
            }

            handler.CallCounter.Should().Be(2);

            Events.Publish(new SystemChecked());

            handler.CallCounter.Should().Be(2);
        }