public void should_return_children_merged_actions()
        {
            // --arrange
            var buildStep1 = new LastUnitSequenceMatcher(Match.Type <int>(null));

            buildStep1.AddBuildAction(BuildStage.Cache, CreateByReflectionBuildAction.Instance);
            var singletonAction = new SingletonBuildAction();
            var buildStep2      = new AnyUnitSequenceMatcher();

            buildStep2.AddBuildAction(BuildStage.Cache, singletonAction);

            var target = new WildcardUnitSequenceMatcher(Match.Type <string>(null));

            target.AddOrGetUnitSequenceMatcher(buildStep1);
            target.AddOrGetUnitSequenceMatcher(buildStep2);

            // --act
            var actual = target.GetBuildActions(new[] { Unit.OfType <string>(), Unit.OfType <int>() }.GetTail(0), 0);

            // --assert
            actual.Should().NotBeNull();
            // ReSharper disable once PossibleNullReferenceException
            actual[BuildStage.Cache]
            .Should()
            .HaveCount(2)
            .And
            .Subject.Select(_ => _.Entity)
            .Should()
            .BeEquivalentTo(CreateByReflectionBuildAction.Instance, singletonAction);
        }
        public void should_return_all_merged_actions()
        {
            var singletonAction = new SingletonBuildAction();

            // --arrange
            var matchString = new LastUnitSequenceMatcher(Match.Type <string>(null)).AddBuildAction(BuildStage.Cache, CreateByReflectionBuildAction.Instance);
            var matchAny    = new AnyUnitSequenceMatcher().AddBuildAction(BuildStage.Cache, singletonAction);

            var target = new BuildPlansCollection();

            target.Children.Add(matchString);
            target.Children.Add(matchAny);

            // --act
            var actual = target.GetBuildActions(new[] { Unit.OfType <string>() }.AsArrayTail());

            // --assert
            actual[BuildStage.Cache]
            .Should()
            .HaveCount(2)
            .And
            .Subject.Select(_ => _.Entity)
            .Should()
            .Equal(CreateByReflectionBuildAction.Instance, singletonAction);
        }