Convert CSharpExplicitExpressionTest

This commit is contained in:
Ajay Bhargav Baaskaran 2018-06-27 11:44:57 -07:00
parent 363be73a00
commit d48946c2e0
12 changed files with 104 additions and 74 deletions

View File

@ -8,68 +8,39 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
public class CSharpExplicitExpressionTest : CsHtmlCodeParserTestBase
{
public CSharpExplicitExpressionTest()
{
UseBaselineTests = true;
}
[Fact]
public void ParseBlockShouldOutputZeroLengthCodeSpanIfExplicitExpressionIsEmpty()
{
ParseBlockTest("@()",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp().AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
ParseBlockTest("@()");
}
[Fact]
public void ParseBlockShouldOutputZeroLengthCodeSpanIfEOFOccursAfterStartOfExplicitExpression()
{
ParseBlockTest("@(",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp().AsExpression()
),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1),
Resources.BlockName_ExplicitExpression,
")",
"("));
ParseBlockTest("@(");
}
[Fact]
public void ParseBlockShouldAcceptEscapedQuoteInNonVerbatimStrings()
{
ParseBlockTest("@(\"\\\"\")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"\\\"\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
ParseBlockTest("@(\"\\\"\")");
}
[Fact]
public void ParseBlockShouldAcceptEscapedQuoteInVerbatimStrings()
{
ParseBlockTest("@(@\"\"\"\")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("@\"\"\"\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
ParseBlockTest("@(@\"\"\"\")");
}
[Fact]
public void ParseBlockShouldAcceptMultipleRepeatedEscapedQuoteInVerbatimStrings()
{
ParseBlockTest("@(@\"\"\"\"\"\")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("@\"\"\"\"\"\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
ParseBlockTest("@(@\"\"\"\"\"\")");
}
[Fact]
@ -79,61 +50,31 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ @"Foo" + Environment.NewLine
+ @"Bar" + Environment.NewLine
+ @"Baz" + Environment.NewLine
+ @""")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code($"@\"{Environment.NewLine}Foo{Environment.NewLine}Bar{Environment.NewLine}Baz{Environment.NewLine}\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
+ @""")");
}
[Fact]
public void ParseBlockShouldAcceptMultipleEscapedQuotesInNonVerbatimStrings()
{
ParseBlockTest("@(\"\\\"hello, world\\\"\")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"\\\"hello, world\\\"\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
ParseBlockTest("@(\"\\\"hello, world\\\"\")");
}
[Fact]
public void ParseBlockShouldAcceptMultipleEscapedQuotesInVerbatimStrings()
{
ParseBlockTest("@(@\"\"\"hello, world\"\"\")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("@\"\"\"hello, world\"\"\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
ParseBlockTest("@(@\"\"\"hello, world\"\"\")");
}
[Fact]
public void ParseBlockShouldAcceptConsecutiveEscapedQuotesInNonVerbatimStrings()
{
ParseBlockTest("@(\"\\\"\\\"\")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"\\\"\\\"\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
ParseBlockTest("@(\"\\\"\\\"\")");
}
[Fact]
public void ParseBlockShouldAcceptConsecutiveEscapedQuotesInVerbatimStrings()
{
ParseBlockTest("@(@\"\"\"\"\"\")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("@\"\"\"\"\"\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
ParseBlockTest("@(@\"\"\"\"\"\")");
}
}
}

View File

@ -0,0 +1,9 @@
Expression block - Gen<Expr> - 9 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [(] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftParenthesis;[(];
Code span - Gen<Expr> - ["\"\""] - SpanEditHandler;Accepts:Any - (2:0,2) - Symbols:1
CSharpSymbolType.StringLiteral;["\"\""];
MetaCode span - Gen<None> - [)] - SpanEditHandler;Accepts:None - (8:0,8) - Symbols:1
CSharpSymbolType.RightParenthesis;[)];

View File

@ -0,0 +1,9 @@
Expression block - Gen<Expr> - 10 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [(] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftParenthesis;[(];
Code span - Gen<Expr> - [@""""""] - SpanEditHandler;Accepts:Any - (2:0,2) - Symbols:1
CSharpSymbolType.StringLiteral;[@""""""];
MetaCode span - Gen<None> - [)] - SpanEditHandler;Accepts:None - (9:0,9) - Symbols:1
CSharpSymbolType.RightParenthesis;[)];

View File

@ -0,0 +1,9 @@
Expression block - Gen<Expr> - 7 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [(] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftParenthesis;[(];
Code span - Gen<Expr> - ["\""] - SpanEditHandler;Accepts:Any - (2:0,2) - Symbols:1
CSharpSymbolType.StringLiteral;["\""];
MetaCode span - Gen<None> - [)] - SpanEditHandler;Accepts:None - (6:0,6) - Symbols:1
CSharpSymbolType.RightParenthesis;[)];

View File

@ -0,0 +1,9 @@
Expression block - Gen<Expr> - 8 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [(] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftParenthesis;[(];
Code span - Gen<Expr> - [@""""] - SpanEditHandler;Accepts:Any - (2:0,2) - Symbols:1
CSharpSymbolType.StringLiteral;[@""""];
MetaCode span - Gen<None> - [)] - SpanEditHandler;Accepts:None - (7:0,7) - Symbols:1
CSharpSymbolType.RightParenthesis;[)];

View File

@ -0,0 +1,9 @@
Expression block - Gen<Expr> - 23 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [(] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftParenthesis;[(];
Code span - Gen<Expr> - [@"LFFooLFBarLFBazLF"] - SpanEditHandler;Accepts:Any - (2:0,2) - Symbols:1
CSharpSymbolType.StringLiteral;[@"LFFooLFBarLFBazLF"];
MetaCode span - Gen<None> - [)] - SpanEditHandler;Accepts:None - (22:4,1) - Symbols:1
CSharpSymbolType.RightParenthesis;[)];

View File

@ -0,0 +1,9 @@
Expression block - Gen<Expr> - 21 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [(] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftParenthesis;[(];
Code span - Gen<Expr> - ["\"hello, world\""] - SpanEditHandler;Accepts:Any - (2:0,2) - Symbols:1
CSharpSymbolType.StringLiteral;["\"hello, world\""];
MetaCode span - Gen<None> - [)] - SpanEditHandler;Accepts:None - (20:0,20) - Symbols:1
CSharpSymbolType.RightParenthesis;[)];

View File

@ -0,0 +1,9 @@
Expression block - Gen<Expr> - 22 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [(] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftParenthesis;[(];
Code span - Gen<Expr> - [@"""hello, world"""] - SpanEditHandler;Accepts:Any - (2:0,2) - Symbols:1
CSharpSymbolType.StringLiteral;[@"""hello, world"""];
MetaCode span - Gen<None> - [)] - SpanEditHandler;Accepts:None - (21:0,21) - Symbols:1
CSharpSymbolType.RightParenthesis;[)];

View File

@ -0,0 +1,9 @@
Expression block - Gen<Expr> - 10 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [(] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftParenthesis;[(];
Code span - Gen<Expr> - [@""""""] - SpanEditHandler;Accepts:Any - (2:0,2) - Symbols:1
CSharpSymbolType.StringLiteral;[@""""""];
MetaCode span - Gen<None> - [)] - SpanEditHandler;Accepts:None - (9:0,9) - Symbols:1
CSharpSymbolType.RightParenthesis;[)];

View File

@ -0,0 +1 @@
(1,2): Error RZ1006: The explicit expression block is missing a closing ")" character. Make sure you have a matching ")" character for all the "(" characters within this block, and that none of the ")" characters are being interpreted as markup.

View File

@ -0,0 +1,7 @@
Expression block - Gen<Expr> - 2 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [(] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftParenthesis;[(];
Code span - Gen<Expr> - [] - SpanEditHandler;Accepts:Any - (2:0,2) - Symbols:1
CSharpSymbolType.Unknown;[];

View File

@ -0,0 +1,9 @@
Expression block - Gen<Expr> - 3 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [(] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftParenthesis;[(];
Code span - Gen<Expr> - [] - SpanEditHandler;Accepts:Any - (2:0,2) - Symbols:1
CSharpSymbolType.Unknown;[];
MetaCode span - Gen<None> - [)] - SpanEditHandler;Accepts:None - (2:0,2) - Symbols:1
CSharpSymbolType.RightParenthesis;[)];