// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. 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.Tokenizer.Symbols; using Xunit; namespace System.Web.Razor.Test.Parser.VB { public class VBRazorCommentsTest : VBHtmlMarkupParserTestBase { [Fact] public void UnterminatedRazorComment() { ParseDocumentTest("@*", new MarkupBlock( Factory.EmptyHtml(), new CommentBlock( Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition) .Accepts(AcceptedCharacters.None), Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar) .Accepts(AcceptedCharacters.None), Factory.Span(SpanKind.Comment, new HtmlSymbol( Factory.LocationTracker.CurrentLocation, String.Empty, HtmlSymbolType.Unknown)) .Accepts(AcceptedCharacters.Any))), new RazorError(RazorResources.ParseError_RazorComment_Not_Terminated, 0, 0, 0)); } [Fact] public void EmptyRazorComment() { ParseDocumentTest("@**@", new MarkupBlock( Factory.EmptyHtml(), new CommentBlock( Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition) .Accepts(AcceptedCharacters.None), Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar) .Accepts(AcceptedCharacters.None), Factory.Span(SpanKind.Comment, new HtmlSymbol( Factory.LocationTracker.CurrentLocation, String.Empty, HtmlSymbolType.Unknown)) .Accepts(AcceptedCharacters.Any), Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar) .Accepts(AcceptedCharacters.None), Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition) .Accepts(AcceptedCharacters.None)), Factory.EmptyHtml())); } [Fact] public void RazorCommentInImplicitExpressionMethodCall() { ParseDocumentTest(@"@foo(@**@", new MarkupBlock( Factory.EmptyHtml(), new ExpressionBlock( Factory.CodeTransition(), Factory.Code("foo(") .AsImplicitExpression(VBCodeParser.DefaultKeywords), new CommentBlock( Factory.CodeTransition(VBSymbolType.RazorCommentTransition) .Accepts(AcceptedCharacters.None), Factory.MetaCode("*", VBSymbolType.RazorCommentStar) .Accepts(AcceptedCharacters.None), Factory.Span(SpanKind.Comment, new VBSymbol( Factory.LocationTracker.CurrentLocation, String.Empty, VBSymbolType.Unknown)) .Accepts(AcceptedCharacters.Any), Factory.MetaCode("*", VBSymbolType.RazorCommentStar) .Accepts(AcceptedCharacters.None), Factory.CodeTransition(VBSymbolType.RazorCommentTransition) .Accepts(AcceptedCharacters.None)), Factory.EmptyVB() .AsImplicitExpression(VBCodeParser.DefaultKeywords))), new RazorError( String.Format(RazorResources.ParseError_Expected_CloseBracket_Before_EOF, "(", ")"), 4, 0, 4)); } [Fact] public void UnterminatedRazorCommentInImplicitExpressionMethodCall() { ParseDocumentTest("@foo(@*", new MarkupBlock( Factory.EmptyHtml(), new ExpressionBlock( Factory.CodeTransition(), Factory.Code("foo(") .AsImplicitExpression(VBCodeParser.DefaultKeywords), new CommentBlock( Factory.CodeTransition(VBSymbolType.RazorCommentTransition) .Accepts(AcceptedCharacters.None), Factory.MetaCode("*", VBSymbolType.RazorCommentStar) .Accepts(AcceptedCharacters.None), Factory.Span(SpanKind.Comment, new VBSymbol( Factory.LocationTracker.CurrentLocation, String.Empty, VBSymbolType.Unknown)) .Accepts(AcceptedCharacters.Any)))), new RazorError(RazorResources.ParseError_RazorComment_Not_Terminated, 5, 0, 5), new RazorError(String.Format(RazorResources.ParseError_Expected_CloseBracket_Before_EOF, "(", ")"), 4, 0, 4)); } [Fact] public void RazorCommentInVerbatimBlock() { ParseDocumentTest(@"@Code @