public void BasicComponentTest() { var c = new BasicComponent(); c.AddHandler <BasicEvent>(_ => { }); var e = new BasicEvent(); var x = new EventExchange(new BasicLogExchange()); Assert.Equal(0, c.Handled); Assert.True(c.IsActive); c.Receive(e, this); Assert.Equal(0, c.Handled); // Handlers don't fire if component isn't attached c.Attach(x); c.Receive(e, this); Assert.Equal(1, c.Handled); c.Attach(x); c.Attach(x); c.Attach(x); c.Attach(x); c.Receive(e, this); Assert.Equal(2, c.Handled); c.Remove(); c.Receive(e, this); Assert.Equal(2, c.Handled); c.Remove(); c.Remove(); c.Receive(e, this); Assert.Equal(2, c.Handled); }
public void DetachedChildTest() { var x = new EventExchange(new BasicLogExchange()); var parent = new BasicComponent(); var child = new BasicComponent(); parent.AddHandler <BasicEvent>(_ => { }); child.AddHandler <BasicEvent>(_ => { }); parent.AddChild(child); x.Attach(parent); child.Remove(); x.Raise(new BasicEvent(), this); Assert.Equal(1, parent.Handled); Assert.Equal(0, child.Handled); parent.IsActive = false; x.Raise(new BasicEvent(), this); Assert.Equal(1, parent.Handled); Assert.Equal(0, child.Handled); parent.IsActive = true; x.Raise(new BasicEvent(), this); Assert.Equal(2, parent.Handled); Assert.Equal(0, child.Handled); }