a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
130 lines
5.0 KiB
C#
130 lines
5.0 KiB
C#
// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
|
|
|
|
using System.Web.Razor.Generator;
|
|
using System.Web.Razor.Parser;
|
|
using System.Web.Razor.Parser.SyntaxTree;
|
|
using System.Web.Razor.Test.Framework;
|
|
using System.Web.Razor.Text;
|
|
using Xunit;
|
|
|
|
namespace System.Web.Razor.Test.Parser.VB
|
|
{
|
|
public class VBDirectiveTest : VBHtmlCodeParserTestBase
|
|
{
|
|
[Fact]
|
|
public void VB_Code_Directive()
|
|
{
|
|
ParseBlockTest(@"@Code
|
|
foo()
|
|
End Code
|
|
' Not part of the block",
|
|
new StatementBlock(
|
|
Factory.CodeTransition(SyntaxConstants.TransitionString)
|
|
.Accepts(AcceptedCharacters.None),
|
|
Factory.MetaCode("Code")
|
|
.Accepts(AcceptedCharacters.None),
|
|
Factory.Code("\r\n foo()\r\n")
|
|
.AsStatement()
|
|
.With(new AutoCompleteEditHandler(VBLanguageCharacteristics.Instance.TokenizeString)),
|
|
Factory.MetaCode("End Code")
|
|
.Accepts(AcceptedCharacters.None)));
|
|
}
|
|
|
|
[Fact]
|
|
public void VB_Functions_Directive()
|
|
{
|
|
ParseBlockTest(@"@Functions
|
|
Public Function Foo() As String
|
|
Return ""Foo""
|
|
End Function
|
|
|
|
Public Sub Bar()
|
|
End Sub
|
|
End Functions
|
|
' Not part of the block",
|
|
new FunctionsBlock(
|
|
Factory.CodeTransition(SyntaxConstants.TransitionString)
|
|
.Accepts(AcceptedCharacters.None),
|
|
Factory.MetaCode("Functions")
|
|
.Accepts(AcceptedCharacters.None),
|
|
Factory.Code("\r\n Public Function Foo() As String\r\n Return \"Foo\"\r\n End Function\r\n\r\n Public Sub Bar()\r\n End Sub\r\n")
|
|
.AsFunctionsBody(),
|
|
Factory.MetaCode("End Functions")
|
|
.Accepts(AcceptedCharacters.None)));
|
|
}
|
|
|
|
[Fact]
|
|
public void VB_Section_Directive()
|
|
{
|
|
ParseBlockTest(@"@Section Header
|
|
<p>Foo</p>
|
|
End Section",
|
|
new SectionBlock(new SectionCodeGenerator("Header"),
|
|
Factory.CodeTransition(SyntaxConstants.TransitionString),
|
|
Factory.MetaCode(@"Section Header"),
|
|
new MarkupBlock(
|
|
Factory.Markup("\r\n <p>Foo</p>\r\n")),
|
|
Factory.MetaCode("End Section")
|
|
.Accepts(AcceptedCharacters.None)));
|
|
}
|
|
|
|
[Fact]
|
|
public void SessionStateDirectiveWorks()
|
|
{
|
|
ParseBlockTest(@"@SessionState InProc
|
|
",
|
|
new DirectiveBlock(
|
|
Factory.CodeTransition(),
|
|
Factory.MetaCode("SessionState ")
|
|
.Accepts(AcceptedCharacters.None),
|
|
Factory.MetaCode("InProc\r\n")
|
|
.Accepts(AcceptedCharacters.None)
|
|
.With(new RazorDirectiveAttributeCodeGenerator("SessionState", "InProc"))
|
|
)
|
|
);
|
|
}
|
|
|
|
[Fact]
|
|
public void SessionStateDirectiveIsCaseInsensitive()
|
|
{
|
|
ParseBlockTest(@"@sessionstate disabled
|
|
",
|
|
new DirectiveBlock(
|
|
Factory.CodeTransition(),
|
|
Factory.MetaCode("sessionstate ")
|
|
.Accepts(AcceptedCharacters.None),
|
|
Factory.MetaCode("disabled\r\n")
|
|
.Accepts(AcceptedCharacters.None)
|
|
.With(new RazorDirectiveAttributeCodeGenerator("SessionState", "disabled"))
|
|
)
|
|
);
|
|
}
|
|
|
|
[Fact]
|
|
public void VB_Helper_Directive()
|
|
{
|
|
ParseBlockTest(@"@Helper Strong(s as String)
|
|
s = s.ToUpperCase()
|
|
@<strong>s</strong>
|
|
End Helper",
|
|
new HelperBlock(new HelperCodeGenerator(new LocationTagged<string>("Strong(s as String)", 8, 0, 8), headerComplete: true),
|
|
Factory.CodeTransition(SyntaxConstants.TransitionString),
|
|
Factory.MetaCode("Helper ")
|
|
.Accepts(AcceptedCharacters.None),
|
|
Factory.Code("Strong(s as String)").Hidden(),
|
|
new StatementBlock(
|
|
Factory.Code("\r\n s = s.ToUpperCase()\r\n")
|
|
.AsStatement(),
|
|
new MarkupBlock(
|
|
Factory.Markup(" "),
|
|
Factory.MarkupTransition(SyntaxConstants.TransitionString),
|
|
Factory.Markup("<strong>s</strong>\r\n")
|
|
.Accepts(AcceptedCharacters.None)),
|
|
Factory.EmptyVB()
|
|
.AsStatement(),
|
|
Factory.MetaCode("End Helper")
|
|
.Accepts(AcceptedCharacters.None))));
|
|
}
|
|
}
|
|
}
|