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

Foo #@item

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

Foo #@item

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

Foo #@item

, @

Foo #@item

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

Foo #@Html.Repeat(10, @

@item

)

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

Foo #@item

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

Foo #@item

, @

Foo #@item

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

Foo #@Html.Repeat(10, @

@item

)

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

Foo #@item

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

Foo #@item

, @

Foo #@item

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

Foo #@Html.Repeat(10, @

@item

)

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

Foo #@item

); }"); } } }