public void PredictReturnsCorrectResult(string patternString, string[] pushDirectory, string expectSegment, bool expectWildcard)
        {
            var builder = new PatternBuilder();
            var pattern = builder.Build(patternString) as IRaggedPattern;

            Assert.NotNull(pattern);

            var context = new PatternContextRaggedInclude(pattern);

            PatternContextHelper.PushDirectory(context, pushDirectory);

            context.Declare((segment, last) =>
            {
                if (expectSegment != null)
                {
                    var mockSegment = segment as LiteralPathSegment;

                    Assert.NotNull(mockSegment);
                    Assert.Equal(false, last);
                    Assert.Equal(expectSegment, mockSegment.Value);
                }
                else
                {
                    Assert.Equal(Microsoft.Extensions.FileSystemGlobbing.Internal.PathSegments.WildcardPathSegment.MatchAll, segment);
                }
            });
        }
        public void TestFileForExcludeReturnsCorrectResult(string[] testSegments, string[] pushDirectory, string filename, bool expectResult)
        {
            var pattern = MockLinearPatternBuilder.New().Add(testSegments).Build();
            var context = new PatternContextLinearExclude(pattern);

            PatternContextHelper.PushDirectory(context, pushDirectory);

            var result = context.Test(new FakeFileInfo(filename));

            Assert.Equal(expectResult, result.IsSuccessful);
        }
        public void TestDirectoryForIncludeReturnsCorrectResult(string[] testSegments, string[] pushDirectory, string directoryName, bool expectResult)
        {
            var pattern = MockLinearPatternBuilder.New().Add(testSegments).Build();
            var context = new PatternContextLinearInclude(pattern);

            PatternContextHelper.PushDirectory(context, pushDirectory);

            var result = context.Test(new FakeDirectoryInfo(directoryName));

            Assert.Equal(expectResult, result);
        }
        public void PredictNotCallBackWhenEnterUnmatchDirectory(string[] testSegments, string[] pushDirectory)
        {
            var pattern = MockLinearPatternBuilder.New().Add(testSegments).Build();
            var context = new PatternContextLinearInclude(pattern);

            PatternContextHelper.PushDirectory(context, pushDirectory);

            context.Declare((segment, last) =>
            {
                Assert.False(true, "No segment should be declared.");
            });
        }
        public void PredictNotCallBackWhenEnterUnmatchDirectory(string patternString, string[] pushDirectory)
        {
            var builder = new PatternBuilder();
            var pattern = builder.Build(patternString) as IRaggedPattern;
            var context = new PatternContextRaggedInclude(pattern);

            PatternContextHelper.PushDirectory(context, pushDirectory);

            context.Declare((segment, last) =>
            {
                Assert.False(true, "No segment should be declared.");
            });
        }
        public void PredictReturnsCorrectResult(string[] testSegments, string[] pushDirectory, string expectSegment, bool expectLast)
        {
            var pattern = MockLinearPatternBuilder.New().Add(testSegments).Build();
            var context = new PatternContextLinearInclude(pattern);

            PatternContextHelper.PushDirectory(context, pushDirectory);

            context.Declare((segment, last) =>
            {
                var literal = segment as MockNonRecursivePathSegment;

                Assert.NotNull(segment);
                Assert.Equal(expectSegment, literal.Value);
                Assert.Equal(expectLast, last);
            });
        }