Beispiel #1
0
        public void DoublePercentIsIgnored()
        {
            String input  = "\"" + @"some %% value" + "\"";
            var    parser = new FSharpStringScanner(input);

            Assert.Equal(null, parser.Next());
        }
Beispiel #2
0
        public void VerbatimMeansIgnoreSequences()
        {
            String input  = "@\"some string\\nescape\"";
            var    parser = new FSharpStringScanner(input);

            Assert.Equal(null, parser.Next());
        }
Beispiel #3
0
        public void TripleQuoteMeansIgnoreSequences()
        {
            String input  = "\"\"\"some string\\escape\"\"\"";
            var    parser = new FSharpStringScanner(input);

            Assert.Equal(null, parser.Next());
        }
Beispiel #4
0
        public void PercentAtEndOfStringIsIgnored()
        {
            String input  = "\"" + @"some %" + "\"";
            var    parser = new FSharpStringScanner(input);

            Assert.Equal(null, parser.Next());
        }
Beispiel #5
0
        public void FormatSpecWithSpaceFlagsIsExtracted()
        {
            String input  = "\"" + @"some % 8x value" + "\"";
            var    parser = new FSharpStringScanner(input);

            Assert.Equal(new StringPart(6, 4, StringPartType.FormatSpecifier), parser.Next());
            Assert.Equal(null, parser.Next());
        }
Beispiel #6
0
        public void FormatSpecWithFlagsWidthAndPrecisionIsExtracted()
        {
            String input  = "\"" + @"some %-8.2f value" + "\"";
            var    parser = new FSharpStringScanner(input);

            Assert.Equal(new StringPart(6, 6, StringPartType.FormatSpecifier), parser.Next());
            Assert.Equal(null, parser.Next());
        }
Beispiel #7
0
        public void SimpleFormatSpecIsExtracted()
        {
            String input  = "\"" + @"some %d value" + "\"";
            var    parser = new FSharpStringScanner(input);

            Assert.Equal(new StringPart(6, 2, StringPartType.FormatSpecifier), parser.Next());
            Assert.Equal(null, parser.Next());
        }
Beispiel #8
0
        public void UnicodeGraphShortIncompleteIsNotReturned()
        {
            String input = "\"" +
                           @"\u12some other stuff"
                           + "\"";
            var parser = new FSharpStringScanner(input);

            Assert.Equal(null, parser.Next());
        }
Beispiel #9
0
        public void TwoDigitAfterBackslashNotConsideredTrigraph()
        {
            String input = "\"" +
                           @"\02abcd"
                           + "\"";
            var parser = new FSharpStringScanner(input);

            Assert.Equal(null, parser.Next());
        }
Beispiel #10
0
        public void UnicodeGraphShortIsEscapeSequence()
        {
            String input = "\"" +
                           @"\u1234some other stuff"
                           + "\"";
            var parser = new FSharpStringScanner(input);

            Assert.Equal(new StringPart(1, 6), parser.Next());
            Assert.Equal(null, parser.Next());
        }
Beispiel #11
0
        public void NonEscapeSequenceIsNotHighlighted()
        {
            // regexp non-escape-chars = '\' [^"\'ntbrafv]
            String input = "\"" +
                           @"\h\l"
                           + "\"";
            var parser = new FSharpStringScanner(input);

            Assert.Equal(null, parser.Next());
        }
Beispiel #12
0
        public void UnicodeGraphLongIsEscapeSequence()
        {
            String input = "\"" +
                           @"\Uabcdef01some other stuff"
                           + "\"";
            var parser = new FSharpStringScanner(input);

            Assert.Equal(new StringPart(1, 10), parser.Next());
            Assert.Equal(null, parser.Next());
        }
Beispiel #13
0
        public void UnicodeGraphShortIncompleteIsNotReturned()
        {
            String input = "\"" +
                           @"\u12some other stuff"
                           + "\"";
            var parser = new FSharpStringScanner(input);

            Assert.Equal(new StringPart(1, 3, StringPartType.EscapeSequenceError), parser.Next());
            Assert.Equal(null, parser.Next());
        }
Beispiel #14
0
        public void TwoDigitAfterBackslashNotConsideredTrigraph()
        {
            String input = "\"" +
                           @"\02abcd"
                           + "\"";
            var parser = new FSharpStringScanner(input);

            Assert.Equal(new StringPart(1, 2, StringPartType.EscapeSequenceError), parser.Next());
            Assert.Equal(null, parser.Next());
        }
Beispiel #15
0
        public void NullCharReturnedAsEscapeSequence()
        {
            // \0
            String input = "\"" +
                           @"\0||||\0"
                           + "\"";
            var parser = new FSharpStringScanner(input);

            Assert.Equal(new StringPart(1, 2), parser.Next());
            Assert.Equal(new StringPart(7, 2), parser.Next());
            Assert.Equal(null, parser.Next());
        }
Beispiel #16
0
        public void TrigraphReturnedAsEscapeSequence()
        {
            // regexp trigraph = '\' digit-char digit-char digit-char
            String input = "\"" +
                           @"\023\124"
                           + "\"";
            var parser = new FSharpStringScanner(input);

            Assert.Equal(new StringPart(1, 4), parser.Next());
            Assert.Equal(new StringPart(5, 4), parser.Next());
            Assert.Equal(null, parser.Next());
        }
Beispiel #17
0
        public void NonEscapeSequenceIsMarkedAsError()
        {
            // regexp non-escape-chars = '\' [^"\'ntbrafv]
            String input = "\"" +
                           @"\h\l"
                           + "\"";
            var parser = new FSharpStringScanner(input);

            Assert.Equal(new StringPart(1, 2, StringPartType.EscapeSequenceError), parser.Next());
            Assert.Equal(new StringPart(3, 2, StringPartType.EscapeSequenceError), parser.Next());
            Assert.Equal(null, parser.Next());
        }
Beispiel #18
0
        public void SimpleEscapeSequences()
        {
            // regexp escape-char = '\' ["\'ntbrafv]
            String input = "\"\\\"|" +
                           @"\\|\'|\n|\t|\b|\r|\a|\f|\v"
                           + "\"";
            var parser = new FSharpStringScanner(input);

            Assert.Equal(new StringPart(1, 2), parser.Next());
            Assert.Equal(new StringPart(4, 2), parser.Next());
            Assert.Equal(new StringPart(7, 2), parser.Next());
            Assert.Equal(new StringPart(10, 2), parser.Next());
            Assert.Equal(new StringPart(13, 2), parser.Next());
            Assert.Equal(new StringPart(16, 2), parser.Next());
            Assert.Equal(new StringPart(19, 2), parser.Next());
            Assert.Equal(new StringPart(22, 2), parser.Next());
            Assert.Equal(new StringPart(25, 2), parser.Next());
            Assert.Equal(new StringPart(28, 2), parser.Next());
            Assert.Equal(null, parser.Next());
        }