File: VBToMarkupSwitchTest.cs

package info (click to toggle)
mono 5.18.0.240%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,253,216 kB
  • sloc: cs: 10,925,936; xml: 2,804,987; ansic: 643,970; cpp: 120,384; perl: 59,272; asm: 21,383; sh: 20,162; makefile: 18,157; python: 4,715; pascal: 924; sql: 859; sed: 16; php: 1
file content (105 lines) | stat: -rw-r--r-- 4,815 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.

using System.Web.Razor.Editor;
using System.Web.Razor.Parser;
using System.Web.Razor.Parser.SyntaxTree;
using System.Web.Razor.Test.Framework;
using System.Web.Razor.Tokenizer.Symbols;
using Xunit;
using Xunit.Extensions;

namespace System.Web.Razor.Test.Parser.VB
{
    public class VBToMarkupSwitchTest : VBHtmlCodeParserTestBase
    {
        [Fact]
        public void ParseBlockSwitchesToMarkupWhenAtSignFollowedByLessThanInStatementBlock()
        {
            ParseBlockTest(@"Code
    If True Then
        @<p>It's True!</p>
    End If
End Code",
                new StatementBlock(
                    Factory.MetaCode("Code").Accepts(AcceptedCharacters.None),
                    Factory.Code("\r\n    If True Then\r\n").AsStatement(),
                    new MarkupBlock(
                        Factory.Markup("        "),
                        Factory.MarkupTransition(),
                        Factory.Markup("<p>It's True!</p>\r\n").Accepts(AcceptedCharacters.None)),
                    Factory.Code("    End If\r\n").AsStatement(),
                    Factory.MetaCode("End Code").Accepts(AcceptedCharacters.None)));
        }

        [Fact]
        public void ParseBlockGivesWhiteSpacePreceedingMarkupBlockToCodeInDesignTimeMode()
        {
            ParseBlockTest(@"Code
    @<p>Foo</p>
End Code",
                new StatementBlock(
                    Factory.MetaCode("Code").Accepts(AcceptedCharacters.None),
                    Factory.Code("\r\n    ").AsStatement(),
                    new MarkupBlock(
                        Factory.MarkupTransition(),
                        Factory.Markup("<p>Foo</p>").Accepts(AcceptedCharacters.None)),
                    Factory.Code("\r\n").AsStatement(),
                    Factory.MetaCode("End Code").Accepts(AcceptedCharacters.None)),
                designTimeParser: true);
        }

        [Theory]
        [InlineData("While", "End While", AcceptedCharacters.None)]
        [InlineData("If", "End If", AcceptedCharacters.None)]
        [InlineData("Select", "End Select", AcceptedCharacters.None)]
        [InlineData("For", "Next", AcceptedCharacters.WhiteSpace | AcceptedCharacters.NonWhiteSpace)]
        [InlineData("Try", "End Try", AcceptedCharacters.None)]
        [InlineData("With", "End With", AcceptedCharacters.None)]
        [InlineData("Using", "End Using", AcceptedCharacters.None)]
        public void SimpleMarkupSwitch(string keyword, string endSequence, AcceptedCharacters acceptedCharacters)
        {
            ParseBlockTest(keyword + @"
    If True Then
        @<p>It's True!</p>
    End If
" + endSequence,
                new StatementBlock(
                    Factory.Code(keyword + "\r\n    If True Then\r\n").AsStatement(),
                    new MarkupBlock(
                        Factory.Markup("        "),
                        Factory.MarkupTransition(),
                        Factory.Markup("<p>It's True!</p>\r\n").Accepts(AcceptedCharacters.None)),
                    Factory.Code("    End If\r\n" + endSequence).AsStatement().Accepts(acceptedCharacters)));
        }

        [Theory]
        [InlineData("While", "End While", AcceptedCharacters.None)]
        [InlineData("If", "End If", AcceptedCharacters.None)]
        [InlineData("Select", "End Select", AcceptedCharacters.None)]
        [InlineData("For", "Next", AcceptedCharacters.WhiteSpace | AcceptedCharacters.NonWhiteSpace)]
        [InlineData("Try", "End Try", AcceptedCharacters.None)]
        [InlineData("With", "End With", AcceptedCharacters.None)]
        [InlineData("Using", "End Using", AcceptedCharacters.None)]
        public void SingleLineMarkupSwitch(string keyword, string endSequence, AcceptedCharacters acceptedCharacters)
        {
            ParseBlockTest(keyword + @"
    If True Then
        @:<p>It's True!</p>
        This is code!
    End If
" + endSequence,
                new StatementBlock(
                    Factory.Code(keyword + "\r\n    If True Then\r\n").AsStatement(),
                    new MarkupBlock(
                        Factory.Markup("        "),
                        Factory.MarkupTransition(),
                        Factory.MetaMarkup(":", HtmlSymbolType.Colon),
                        Factory.Markup("<p>It's True!</p>\r\n")
                                .With(new SingleLineMarkupEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString))
                                .Accepts(AcceptedCharacters.None)),
                    Factory.Code("        This is code!\r\n    End If\r\n" + endSequence)
                            .AsStatement()
                            .Accepts(acceptedCharacters)));
        }
    }
}