a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
156 lines
7.3 KiB
C#
156 lines
7.3 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.Resources;
|
|
using System.Web.Razor.Test.Framework;
|
|
using System.Web.Razor.Text;
|
|
using System.Web.Razor.Tokenizer.Symbols;
|
|
using Xunit;
|
|
|
|
namespace System.Web.Razor.Test.Parser.VB
|
|
{
|
|
public class VBAutoCompleteTest : VBHtmlCodeParserTestBase
|
|
{
|
|
[Fact]
|
|
public void FunctionsDirective_AutoComplete_At_EOF()
|
|
{
|
|
ParseBlockTest("@Functions",
|
|
new FunctionsBlock(
|
|
Factory.CodeTransition("@")
|
|
.Accepts(AcceptedCharacters.None),
|
|
Factory.MetaCode("Functions")
|
|
.Accepts(AcceptedCharacters.None),
|
|
Factory.EmptyVB()
|
|
.AsFunctionsBody()
|
|
.With(new AutoCompleteEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString)
|
|
{
|
|
AutoCompleteString = SyntaxConstants.VB.EndFunctionsKeyword
|
|
})),
|
|
new RazorError(
|
|
String.Format(RazorResources.ParseError_BlockNotTerminated, "Functions", "End Functions"),
|
|
1, 0, 1));
|
|
}
|
|
|
|
[Fact]
|
|
public void HelperDirective_AutoComplete_At_EOF()
|
|
{
|
|
ParseBlockTest("@Helper Strong(value As String)",
|
|
new HelperBlock(new HelperCodeGenerator(new LocationTagged<string>("Strong(value As String)", 8, 0, 8), headerComplete: true),
|
|
Factory.CodeTransition(),
|
|
Factory.MetaCode("Helper ")
|
|
.Accepts(AcceptedCharacters.None),
|
|
Factory.Code("Strong(value As String)")
|
|
.Hidden()
|
|
.Accepts(AcceptedCharacters.None)
|
|
.With(new AutoCompleteEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString) { AutoCompleteString = SyntaxConstants.VB.EndHelperKeyword }),
|
|
new StatementBlock()),
|
|
new RazorError(
|
|
String.Format(RazorResources.ParseError_BlockNotTerminated, "Helper", "End Helper"),
|
|
1, 0, 1));
|
|
}
|
|
|
|
[Fact]
|
|
public void SectionDirective_AutoComplete_At_EOF()
|
|
{
|
|
ParseBlockTest("@Section Header",
|
|
new SectionBlock(new SectionCodeGenerator("Header"),
|
|
Factory.CodeTransition(),
|
|
Factory.MetaCode("Section Header")
|
|
.With(new AutoCompleteEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString) { AutoCompleteString = SyntaxConstants.VB.EndSectionKeyword }),
|
|
new MarkupBlock()),
|
|
new RazorError(
|
|
String.Format(RazorResources.ParseError_BlockNotTerminated, "Section", "End Section"),
|
|
1, 0, 1));
|
|
}
|
|
|
|
[Fact]
|
|
public void VerbatimBlock_AutoComplete_At_EOF()
|
|
{
|
|
ParseBlockTest("@Code",
|
|
new StatementBlock(
|
|
Factory.CodeTransition(),
|
|
Factory.MetaCode("Code").Accepts(AcceptedCharacters.None),
|
|
Factory.Span(SpanKind.Code, new VBSymbol(5, 0, 5, String.Empty, VBSymbolType.Unknown))
|
|
.With(new StatementCodeGenerator())
|
|
.With(new AutoCompleteEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString) { AutoCompleteString = SyntaxConstants.VB.EndCodeKeyword })),
|
|
new RazorError(
|
|
String.Format(RazorResources.ParseError_BlockNotTerminated, "Code", "End Code"),
|
|
1, 0, 1));
|
|
}
|
|
|
|
[Fact]
|
|
public void FunctionsDirective_AutoComplete_At_StartOfFile()
|
|
{
|
|
ParseBlockTest(@"@Functions
|
|
foo",
|
|
new FunctionsBlock(
|
|
Factory.CodeTransition("@").Accepts(AcceptedCharacters.None),
|
|
Factory.MetaCode("Functions").Accepts(AcceptedCharacters.None),
|
|
Factory.Code("\r\nfoo")
|
|
.AsFunctionsBody()
|
|
.With(new AutoCompleteEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString)
|
|
{
|
|
AutoCompleteString = SyntaxConstants.VB.EndFunctionsKeyword
|
|
})),
|
|
new RazorError(
|
|
String.Format(RazorResources.ParseError_BlockNotTerminated, "Functions", "End Functions"),
|
|
1, 0, 1));
|
|
}
|
|
|
|
[Fact]
|
|
public void HelperDirective_AutoComplete_At_StartOfFile()
|
|
{
|
|
ParseBlockTest(@"@Helper Strong(value As String)
|
|
Foo",
|
|
new HelperBlock(new HelperCodeGenerator(new LocationTagged<string>("Strong(value As String)", 8, 0, 8), headerComplete: true),
|
|
Factory.CodeTransition(),
|
|
Factory.MetaCode("Helper ")
|
|
.Accepts(AcceptedCharacters.None),
|
|
Factory.Code("Strong(value As String)")
|
|
.Hidden()
|
|
.Accepts(AcceptedCharacters.None)
|
|
.With(new AutoCompleteEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString) { AutoCompleteString = SyntaxConstants.VB.EndHelperKeyword }),
|
|
new StatementBlock(
|
|
Factory.Code("\r\nFoo").AsStatement())),
|
|
new RazorError(
|
|
String.Format(RazorResources.ParseError_BlockNotTerminated, "Helper", "End Helper"),
|
|
1, 0, 1));
|
|
}
|
|
|
|
[Fact]
|
|
public void SectionDirective_AutoComplete_At_StartOfFile()
|
|
{
|
|
ParseBlockTest(@"@Section Header
|
|
Foo",
|
|
new SectionBlock(new SectionCodeGenerator("Header"),
|
|
Factory.CodeTransition(),
|
|
Factory.MetaCode("Section Header")
|
|
.With(new AutoCompleteEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString) { AutoCompleteString = SyntaxConstants.VB.EndSectionKeyword }),
|
|
new MarkupBlock(
|
|
Factory.Markup("\r\nFoo")
|
|
.With(new MarkupCodeGenerator()))),
|
|
new RazorError(
|
|
String.Format(RazorResources.ParseError_BlockNotTerminated, "Section", "End Section"),
|
|
1, 0, 1));
|
|
}
|
|
|
|
[Fact]
|
|
public void VerbatimBlock_AutoComplete_At_StartOfFile()
|
|
{
|
|
ParseBlockTest(@"@Code
|
|
Foo",
|
|
new StatementBlock(
|
|
Factory.CodeTransition(),
|
|
Factory.MetaCode("Code").Accepts(AcceptedCharacters.None),
|
|
Factory.Code("\r\nFoo")
|
|
.AsStatement()
|
|
.With(new AutoCompleteEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString) { AutoCompleteString = SyntaxConstants.VB.EndCodeKeyword })),
|
|
new RazorError(
|
|
String.Format(RazorResources.ParseError_BlockNotTerminated, "Code", "End Code"),
|
|
1, 0, 1));
|
|
}
|
|
}
|
|
}
|