a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
170 lines
6.1 KiB
C#
170 lines
6.1 KiB
C#
// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
|
|
|
|
using System.Web.Razor.Parser.SyntaxTree;
|
|
using System.Web.Razor.Test.Framework;
|
|
using System.Web.Razor.Tokenizer.Symbols;
|
|
using Xunit;
|
|
|
|
namespace System.Web.Razor.Test.Parser.VB
|
|
{
|
|
public class VBNestedStatementsTest : VBHtmlCodeParserTestBase
|
|
{
|
|
[Fact]
|
|
public void VB_Nested_If_Statement()
|
|
{
|
|
ParseBlockTest(@"@If True Then
|
|
If False Then
|
|
End If
|
|
End If",
|
|
new StatementBlock(
|
|
Factory.CodeTransition(),
|
|
Factory.Code("If True Then\r\n If False Then\r\n End If\r\nEnd If")
|
|
.AsStatement()
|
|
.Accepts(AcceptedCharacters.None)));
|
|
}
|
|
|
|
[Fact]
|
|
public void VB_Nested_Do_Statement()
|
|
{
|
|
ParseBlockTest(@"@Do While True
|
|
Do
|
|
Loop Until False
|
|
Loop",
|
|
new StatementBlock(
|
|
Factory.CodeTransition(),
|
|
Factory.Code("Do While True\r\n Do\r\n Loop Until False\r\nLoop")
|
|
.AsStatement()
|
|
.Accepts(AcceptedCharacters.AnyExceptNewline)));
|
|
}
|
|
|
|
[Fact]
|
|
public void VB_Nested_Markup_Statement_In_If()
|
|
{
|
|
ParseBlockTest(@"@If True Then
|
|
@<p>Tag</p>
|
|
End If",
|
|
new StatementBlock(
|
|
Factory.CodeTransition(),
|
|
Factory.Code("If True Then\r\n")
|
|
.AsStatement(),
|
|
new MarkupBlock(
|
|
Factory.Markup(" "),
|
|
Factory.MarkupTransition(),
|
|
Factory.Markup("<p>Tag</p>\r\n")
|
|
.Accepts(AcceptedCharacters.None)),
|
|
Factory.Code("End If")
|
|
.AsStatement()
|
|
.Accepts(AcceptedCharacters.None)));
|
|
}
|
|
|
|
[Fact]
|
|
public void VB_Nested_Markup_Statement_In_Code()
|
|
{
|
|
ParseBlockTest(@"@Code
|
|
Foo()
|
|
@<p>Tag</p>
|
|
Bar()
|
|
End Code",
|
|
new StatementBlock(
|
|
Factory.CodeTransition(),
|
|
Factory.MetaCode("Code")
|
|
.Accepts(AcceptedCharacters.None),
|
|
Factory.Code("\r\n Foo()\r\n")
|
|
.AsStatement(),
|
|
new MarkupBlock(
|
|
Factory.Markup(" "),
|
|
Factory.MarkupTransition(),
|
|
Factory.Markup("<p>Tag</p>\r\n")
|
|
.Accepts(AcceptedCharacters.None)),
|
|
Factory.Code(" Bar()\r\n")
|
|
.AsStatement(),
|
|
Factory.MetaCode("End Code")
|
|
.Accepts(AcceptedCharacters.None)));
|
|
}
|
|
|
|
[Fact]
|
|
public void VB_Nested_Markup_Statement_In_Do()
|
|
{
|
|
ParseBlockTest(@"@Do
|
|
@<p>Tag</p>
|
|
Loop While True",
|
|
new StatementBlock(
|
|
Factory.CodeTransition(),
|
|
Factory.Code("Do\r\n")
|
|
.AsStatement(),
|
|
new MarkupBlock(
|
|
Factory.Markup(" "),
|
|
Factory.MarkupTransition(),
|
|
Factory.Markup("<p>Tag</p>\r\n")
|
|
.Accepts(AcceptedCharacters.None)),
|
|
Factory.Code("Loop While True")
|
|
.AsStatement()
|
|
.Accepts(AcceptedCharacters.AnyExceptNewline)));
|
|
}
|
|
|
|
[Fact]
|
|
public void VB_Nested_Single_Line_Markup_Statement_In_Do()
|
|
{
|
|
ParseBlockTest(@"@Do
|
|
@:<p>Tag
|
|
Loop While True",
|
|
new StatementBlock(
|
|
Factory.CodeTransition(),
|
|
Factory.Code("Do\r\n")
|
|
.AsStatement(),
|
|
new MarkupBlock(
|
|
Factory.Markup(" "),
|
|
Factory.MarkupTransition(),
|
|
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
|
|
Factory.Markup("<p>Tag\r\n")
|
|
.Accepts(AcceptedCharacters.None)),
|
|
Factory.Code("Loop While True")
|
|
.AsStatement()
|
|
.Accepts(AcceptedCharacters.AnyExceptNewline)));
|
|
}
|
|
|
|
[Fact]
|
|
public void VB_Nested_Implicit_Expression_In_If()
|
|
{
|
|
ParseBlockTest(@"@If True Then
|
|
@Foo.Bar
|
|
End If",
|
|
new StatementBlock(
|
|
Factory.CodeTransition(),
|
|
Factory.Code("If True Then\r\n ")
|
|
.AsStatement(),
|
|
new ExpressionBlock(
|
|
Factory.CodeTransition(),
|
|
Factory.Code("Foo.Bar")
|
|
.AsExpression()
|
|
.Accepts(AcceptedCharacters.NonWhiteSpace)),
|
|
Factory.Code("\r\nEnd If")
|
|
.AsStatement()
|
|
.Accepts(AcceptedCharacters.None)));
|
|
}
|
|
|
|
[Fact]
|
|
public void VB_Nested_Explicit_Expression_In_If()
|
|
{
|
|
ParseBlockTest(@"@If True Then
|
|
@(Foo.Bar + 42)
|
|
End If",
|
|
new StatementBlock(
|
|
Factory.CodeTransition(),
|
|
Factory.Code("If True Then\r\n ")
|
|
.AsStatement(),
|
|
new ExpressionBlock(
|
|
Factory.CodeTransition(),
|
|
Factory.MetaCode("(")
|
|
.Accepts(AcceptedCharacters.None),
|
|
Factory.Code("Foo.Bar + 42")
|
|
.AsExpression(),
|
|
Factory.MetaCode(")")
|
|
.Accepts(AcceptedCharacters.None)),
|
|
Factory.Code("\r\nEnd If")
|
|
.AsStatement()
|
|
.Accepts(AcceptedCharacters.None)));
|
|
}
|
|
}
|
|
}
|