// 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 CSharpTemplateTest : CsHtmlCodeParserTestBase { [Fact] public void HandlesSingleLineTemplate() { ParseBlockTest("{ var foo = @: bar" + Environment.NewLine + "; }"); } [Fact] public void HandlesSingleLineImmediatelyFollowingStatementChar() { ParseBlockTest("{i@: bar" + Environment.NewLine + "}"); } [Fact] public void HandlesSimpleTemplateInExplicitExpressionParens() { ParseBlockTest("(Html.Repeat(10, @

Foo #@item

))"); } [Fact] public void HandlesSimpleTemplateInImplicitExpressionParens() { ParseBlockTest("Html.Repeat(10, @

Foo #@item

)"); } [Fact] public void HandlesTwoTemplatesInImplicitExpressionParens() { ParseBlockTest("Html.Repeat(10, @

Foo #@item

, @

Foo #@item

)"); } [Fact] public void ProducesErrorButCorrectlyParsesNestedTemplateInImplicitExprParens() { // ParseBlockProducesErrorButCorrectlyParsesNestedTemplateInImplicitExpressionParens ParseBlockTest("Html.Repeat(10, @

Foo #@Html.Repeat(10, @

@item

)

)"); } [Fact] public void HandlesSimpleTemplateInStatementWithinCodeBlock() { ParseBlockTest("foreach(foo in Bar) { Html.ExecuteTemplate(foo, @

Foo #@item

); }"); } [Fact] public void HandlesTwoTemplatesInStatementWithinCodeBlock() { ParseBlockTest("foreach(foo in Bar) { Html.ExecuteTemplate(foo, @

Foo #@item

, @

Foo #@item

); }"); } [Fact] public void ProducesErrorButCorrectlyParsesNestedTemplateInStmtWithinCodeBlock() { // ParseBlockProducesErrorButCorrectlyParsesNestedTemplateInStatementWithinCodeBlock ParseBlockTest("foreach(foo in Bar) { Html.ExecuteTemplate(foo, @

Foo #@Html.Repeat(10, @

@item

)

); }"); } [Fact] public void HandlesSimpleTemplateInStatementWithinStatementBlock() { ParseBlockTest("{ var foo = bar; Html.ExecuteTemplate(foo, @

Foo #@item

); }"); } [Fact] public void HandlessTwoTemplatesInStatementWithinStatementBlock() { ParseBlockTest("{ var foo = bar; Html.ExecuteTemplate(foo, @

Foo #@item

, @

Foo #@item

); }"); } [Fact] public void ProducesErrorButCorrectlyParsesNestedTemplateInStmtWithinStmtBlock() { // ParseBlockProducesErrorButCorrectlyParsesNestedTemplateInStatementWithinStatementBlock ParseBlockTest("{ var foo = bar; Html.ExecuteTemplate(foo, @

Foo #@Html.Repeat(10, @

@item

)

); }"); } [Fact] public void _WithDoubleTransition_DoesNotThrow() { ParseBlockTest("{ var foo = bar; Html.ExecuteTemplate(foo, @

Foo #@item

); }"); } } }