public void TestEventChild() { var hub = this.GetEventHub(); var args = new EventMockChild(10); int called = 0; hub.Subscribe<EventMock>(e => { e.Should().BeSameAs(args, "the passed arguments should be the same as provided"); called++; }); hub.Raise(args); called.Should().Be(1, "event handler should be called exactly once"); }
public void TestCallBaseSubscribeParent() { var hub = this.GetEventHub(); var args = new EventMockChild(10); int called = 0; hub.Subscribe<EventMockChild>(e => called++); hub.Raise<EventMock>(args); called.Should().Be(0, "event handler should not be called if the arguments are passed as base class"); }
private void TestPerformanceEventsRaiseInternal() { var hub = this.GetEventHub(); var args = new EventMockChild(10); var parentCalled = 0; var childCalled = 0; var interfaceCalled = 0; hub.Subscribe<EventMock>(e => parentCalled++); hub.Subscribe<EventMockChild>(e => childCalled++); hub.Subscribe<IEvent>(e => interfaceCalled++); var calledCount = 50000; for (int i = 0; i < calledCount; i++) { hub.Raise(args); } parentCalled.Should().Be(calledCount, "The parent should be called exactly {0} times", calledCount); childCalled.Should().Be(calledCount, "The child should be called exactly {0} times", calledCount); interfaceCalled.Should().Be(calledCount, "The interface should be called exactly {0} times", calledCount); }
public void TestHierarchyCallingOrder() { var hub = this.GetEventHub(); var args = new EventMockChild(10); var parentCalled = false; var childCalled = false; var interfaceCalled = false; hub.Subscribe<EventMock>(e => { childCalled.Should().BeTrue("child should be called before parent"); parentCalled = true; interfaceCalled.Should().BeFalse("interface should be called after parent"); }); hub.Subscribe<EventMockChild>(e => { childCalled = true; parentCalled.Should().BeFalse("parent should be called after child"); interfaceCalled.Should().BeFalse("interface should be called after child"); }); hub.Subscribe<IEvent>(e => { parentCalled.Should().BeTrue("parent should be called before interface"); childCalled.Should().BeTrue("child should be called before interface"); interfaceCalled = true; }); hub.Raise(args); parentCalled.Should().BeTrue("parent should be called"); parentCalled.Should().BeTrue("child should be called"); parentCalled.Should().BeTrue("interface should be called"); }