Ejemplo n.º 1
0
    public void should_skip_all_units_but_the_last_one()
    {
        var expected = new UnitId("expected", "expected");

        // --arrange
        var target = new SkipAllUnits();
        var child1 = A.Fake <IBuildChainPattern>();
        var child2 = A.Fake <IBuildChainPattern>();

        target.AddNode(child1);
        target.AddNode(child2);

        // --act
        var chain = new[] { new UnitId(1, null), new UnitId(null, 2), new UnitId(3, null), expected }.ToArrayTail();
        WeightedBuildActionBag?actionBag;

        target.GatherBuildActions(chain, out actionBag, 0);

        // --assert
        WeightedBuildActionBag?weightedBuildActionBag;

        A.CallTo(() => child1.GatherBuildActions(An <BuildChain> .That.IsEqualTo(expected.ToArrayTail(), Comparer.OfArrayTail <UnitId>()), out weightedBuildActionBag, An <int> ._))
        .MustHaveHappenedOnceAndOnly();

        WeightedBuildActionBag?actionBag1;

        A.CallTo(() => child2.GatherBuildActions(An <BuildChain> .That.IsEqualTo(expected.ToArrayTail(), Comparer.OfArrayTail <UnitId>()), out actionBag1, An <int> ._))
        .MustHaveHappenedOnceAndOnly();
    }
Ejemplo n.º 2
0
    public void should_match_first_unit_and_send_the_rest_to_children()
    {
        const string kind = "kind";

        var expected = new UnitId("expected", "expected");

        // --arrange
        var target = new IfFirstUnit(new UnitPattern(kind));
        var child1 = A.Fake <IBuildChainPattern>();
        var child2 = A.Fake <IBuildChainPattern>();

        target.AddNode(child1);
        target.AddNode(child2);

        // --act
        var chain = new[] { new UnitId(kind, null), expected }.ToArrayTail();

        target.GatherBuildActions(chain, out var actionBag, 0);

        // --assert
        A.CallTo(() => child1.GatherBuildActions(An <BuildChain> .That.IsEqualTo(expected.ToArrayTail(), Comparer.OfArrayTail <UnitId>()), out actionBag, An <int> ._))
        .MustHaveHappenedOnceAndOnly();

        A.CallTo(() => child2.GatherBuildActions(An <BuildChain> .That.IsEqualTo(expected.ToArrayTail(), Comparer.OfArrayTail <UnitId>()), out actionBag, An <int> ._))
        .MustHaveHappenedOnceAndOnly();
    }