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); }
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); }