public void SignalCommandContainer_Unbind_ReturnFalse()
    {
        // Arrange
        var container = new DiContainer();

        // Act
        var commandContainer = new SignalCommandContainer(container);
        var actual           = commandContainer.Unbind <SignalTest>();

        //Assert
        Assert.IsFalse(actual);
    }
    public void SignalCommandContainer_Unbind_ReturnTrue()
    {
        // Arrange
        var container        = new DiContainer();
        var commandContainer = new SignalCommandContainer(container);

        commandContainer.Bind <SignalTest>()
        .InGlobal()
        .InParallel()
        .To <CommandTest>();

        // Act
        var actual = commandContainer.Unbind <SignalTest>();

        //Assert
        Assert.IsTrue(actual);
    }
    public void SignalCommandContainer_UnbindLifeTime_AreEqual()
    {
        // Arrange
        var container        = new DiContainer();
        var commandContainer = new SignalCommandContainer(container);
        var expected         = commandContainer.Bind <SignalTest>();

        var unused = expected.InGlobal()
                     .InParallel()
                     .To <CommandTest>();

        // Act
        commandContainer.Unbind(LifeTime.Local);
        var actual = commandContainer.Bind <SignalTest>();

        //Assert
        Assert.AreEqual(expected, actual);
    }
    public void SignalCommandContainer_UnbindLifeTime_SignalRelease()
    {
        // Arrange
        var container        = new DiContainer();
        var commandContainer = new SignalCommandContainer(container);
        var signal           = container.GetInstance <SignalTest>();

        var unused = commandContainer.Bind <SignalTest>()
                     .InLocal()
                     .InParallel()
                     .To <CommandTest>();

        // Act
        commandContainer.Unbind(LifeTime.Local);
        var actual = signal.Dispatch();

        //Assert
        Assert.IsFalse(actual);
    }