Exemple #1
0
    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);
    }
Exemple #2
0
    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);
    }