// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using Xunit; namespace Microsoft.AspNetCore.Razor.Language.Legacy { public class HtmlBlockTest : CsHtmlMarkupParserTestBase { [Fact] public void HandlesUnbalancedTripleDashHTMLComments() { ParseDocumentTest( @"@{ }"); } [Fact] public void HandlesOpenAngleAtEof() { ParseDocumentTest("@{" + Environment.NewLine + "<"); } [Fact] public void HandlesOpenAngleWithProperTagFollowingIt() { ParseDocumentTest("@{" + Environment.NewLine + "<" + Environment.NewLine + "", designTime: true); } [Fact] public void TagWithoutCloseAngleDoesNotTerminateBlock() { ParseBlockTest("< " + Environment.NewLine + " "); } [Fact] public void AllowsStartAndEndTagsToDifferInCase() { ParseBlockTest("
  • Foo

  • "); } [Fact] public void ReadsToEndOfLineIfFirstCharacterAfterTransitionIsColon() { ParseBlockTest("@:
  • Foo Bar Baz" + Environment.NewLine + "bork"); } [Fact] public void StopsParsingSingleLineBlockAtEOFIfNoEOLReached() { ParseBlockTest("@:foo bar"); } [Fact] public void StopsAtMatchingCloseTagToStartTag() { ParseBlockTest(""); } [Fact] public void ParsesUntilMatchingEndTagIfFirstNonWhitespaceCharacterIsStartTag() { ParseBlockTest(""); } [Fact] public void AllowsUnclosedTagsAsLongAsItCanRecoverToAnExpectedEndTag() { ParseBlockTest(""); } [Fact] public void WithSelfClosingTagJustEmitsTag() { ParseBlockTest(""); } [Fact] public void CanHandleSelfClosingTagsWithinBlock() { ParseBlockTest(""); } [Fact] public void SupportsTagsWithAttributes() { ParseBlockTest(""); } [Fact] public void AllowsCloseAngleBracketInAttributeValueIfDoubleQuoted() { ParseBlockTest("\" />"); } [Fact] public void AllowsCloseAngleBracketInAttributeValueIfSingleQuoted() { ParseBlockTest("\' />"); } [Fact] public void AllowsSlashInAttributeValueIfDoubleQuoted() { ParseBlockTest(""); } [Fact] public void AllowsSlashInAttributeValueIfSingleQuoted() { ParseBlockTest(""); } [Fact] public void TerminatesAtEOF() { ParseBlockTest(""); } [Fact] public void SupportsCommentAsBlock() { ParseBlockTest(""); } [Fact] public void SupportsCommentWithExtraDashAsBlock() { ParseBlockTest(""); } [Fact] public void SupportsCommentWithinBlock() { ParseBlockTest("barbaz"); } [Fact] public void HtmlCommentSupportsMultipleDashes() { ParseDocumentTest( @"
    "); } [Fact] public void ProperlyBalancesCommentStartAndEndTags() { ParseBlockTest(""); } [Fact] public void TerminatesAtEOFWhenParsingComment() { ParseBlockTest(""); } [Fact] public void TerminatesCommentAtFirstOccurrenceOfEndSequence() { ParseBlockTest("-->"); } [Fact] public void TreatsMalformedTagsAsContent() { ParseBlockTest(""); } [Fact] public void ParsesSGMLDeclarationAsEmptyTag() { ParseBlockTest(""); } [Fact] public void TerminatesSGMLDeclarationAtFirstCloseAngle() { ParseBlockTest(" baz>"); } [Fact] public void ParsesXMLProcessingInstructionAsEmptyTag() { ParseBlockTest(""); } [Fact] public void TerminatesXMLProcessingInstructionAtQuestionMarkCloseAnglePair() { ParseBlockTest(" baz"); } [Fact] public void DoesNotTerminateXMLProcInstrAtCloseAngleUnlessPreceededByQuestionMark() { // ParseBlockDoesNotTerminateXMLProcessingInstructionAtCloseAngleUnlessPreceededByQuestionMark ParseBlockTest(" baz?>"); } [Fact] public void SupportsScriptTagsWithLessThanSignsInThem() { ParseBlockTest(@""); } [Fact] public void SupportsScriptTagsWithSpacedLessThanSignsInThem() { ParseBlockTest(@""); } [Fact] public void AcceptsEmptyTextTag() { ParseBlockTest(""); } [Fact] public void AcceptsTextTagAsOuterTagButDoesNotRender() { ParseBlockTest("Foo Bar Baz zoop"); } [Fact] public void RendersLiteralTextTagIfDoubled() { ParseBlockTest("Foo Bar Baz zoop"); } [Fact] public void DoesNotConsiderPsuedoTagWithinMarkupBlock() { ParseBlockTest(""); } [Fact] public void StopsParsingMidEmptyTagIfEOFReached() { ParseBlockTest("
    Foo @if(true) {} Bar"); } [Fact] public void IgnoresTagsInContentsOfScriptTag() { ParseBlockTest(@""); } } }