// 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 { public HtmlBlockTest() { UseBaselineTests = true; } [Fact] public void ParseBlockHandlesUnbalancedTripleDashHTMLComments() { ParseDocumentTest( @"@{ }"); } [Fact] public void ParseBlockHandlesOpenAngleAtEof() { ParseDocumentTest("@{" + Environment.NewLine + "<"); } [Fact] public void ParseBlockHandlesOpenAngleWithProperTagFollowingIt() { ParseDocumentTest("@{" + Environment.NewLine + "<" + Environment.NewLine + "", designTime: true); } [Fact] public void TagWithoutCloseAngleDoesNotTerminateBlock() { ParseBlockTest("< " + Environment.NewLine + " "); } [Fact] public void ParseBlockAllowsStartAndEndTagsToDifferInCase() { ParseBlockTest("
  • Foo

  • "); } [Fact] public void ParseBlockReadsToEndOfLineIfFirstCharacterAfterTransitionIsColon() { ParseBlockTest("@:
  • Foo Bar Baz" + Environment.NewLine + "bork"); } [Fact] public void ParseBlockStopsParsingSingleLineBlockAtEOFIfNoEOLReached() { ParseBlockTest("@:foo bar"); } [Fact] public void ParseBlockStopsAtMatchingCloseTagToStartTag() { ParseBlockTest(""); } [Fact] public void ParseBlockParsesUntilMatchingEndTagIfFirstNonWhitespaceCharacterIsStartTag() { ParseBlockTest(""); } [Fact] public void ParseBlockAllowsUnclosedTagsAsLongAsItCanRecoverToAnExpectedEndTag() { ParseBlockTest(""); } [Fact] public void ParseBlockWithSelfClosingTagJustEmitsTag() { ParseBlockTest(""); } [Fact] public void ParseBlockCanHandleSelfClosingTagsWithinBlock() { ParseBlockTest(""); } [Fact] public void ParseBlockSupportsTagsWithAttributes() { ParseBlockTest(""); } [Fact] public void ParseBlockAllowsCloseAngleBracketInAttributeValueIfDoubleQuoted() { ParseBlockTest("\" />"); } [Fact] public void ParseBlockAllowsCloseAngleBracketInAttributeValueIfSingleQuoted() { ParseBlockTest("\' />"); } [Fact] public void ParseBlockAllowsSlashInAttributeValueIfDoubleQuoted() { ParseBlockTest(""); } [Fact] public void ParseBlockAllowsSlashInAttributeValueIfSingleQuoted() { ParseBlockTest(""); } [Fact] public void ParseBlockTerminatesAtEOF() { ParseBlockTest(""); } [Fact] public void ParseBlockSupportsCommentAsBlock() { ParseBlockTest(""); } [Fact] public void ParseBlockSupportsCommentWithExtraDashAsBlock() { ParseBlockTest(""); } [Fact] public void ParseBlockSupportsCommentWithinBlock() { ParseBlockTest("barbaz"); } [Fact] public void HtmlCommentSupportsMultipleDashes() { ParseDocumentTest( @"
    "); } [Fact] public void ParseBlockProperlyBalancesCommentStartAndEndTags() { ParseBlockTest(""); } [Fact] public void ParseBlockTerminatesAtEOFWhenParsingComment() { ParseBlockTest(""); } [Fact] public void ParseBlockTerminatesCommentAtFirstOccurrenceOfEndSequence() { ParseBlockTest("-->"); } [Fact] public void ParseBlockTreatsMalformedTagsAsContent() { ParseBlockTest(""); } [Fact] public void ParseBlockParsesSGMLDeclarationAsEmptyTag() { ParseBlockTest(""); } [Fact] public void ParseBlockTerminatesSGMLDeclarationAtFirstCloseAngle() { ParseBlockTest(" baz>"); } [Fact] public void ParseBlockParsesXMLProcessingInstructionAsEmptyTag() { ParseBlockTest(""); } [Fact] public void ParseBlockTerminatesXMLProcessingInstructionAtQuestionMarkCloseAnglePair() { ParseBlockTest(" baz"); } [Fact] public void ParseBlockDoesNotTerminateXMLProcessingInstructionAtCloseAngleUnlessPreceededByQuestionMark() { ParseBlockTest(" baz?>"); } [Fact] public void ParseBlockSupportsScriptTagsWithLessThanSignsInThem() { ParseBlockTest(@""); } [Fact] public void ParseBlockSupportsScriptTagsWithSpacedLessThanSignsInThem() { ParseBlockTest(@""); } [Fact] public void ParseBlockAcceptsEmptyTextTag() { ParseBlockTest(""); } [Fact] public void ParseBlockAcceptsTextTagAsOuterTagButDoesNotRender() { ParseBlockTest("Foo Bar Baz zoop"); } [Fact] public void ParseBlockRendersLiteralTextTagIfDoubled() { ParseBlockTest("Foo Bar Baz zoop"); } [Fact] public void ParseBlockDoesNotConsiderPsuedoTagWithinMarkupBlock() { ParseBlockTest(""); } [Fact] public void ParseBlockStopsParsingMidEmptyTagIfEOFReached() { ParseBlockTest("
    Foo @if(true) {} Bar"); } [Fact] public void ParseBlockIgnoresTagsInContentsOfScriptTag() { ParseBlockTest(@""); } } }