From c3e10be89876671b4546e69b2d3af3e577d8cd59 Mon Sep 17 00:00:00 2001 From: michael Date: Mon, 18 May 2020 18:18:52 +0000 Subject: [PATCH] * Test case (currently failing) for else else in case statement git-svn-id: trunk@45427 - --- packages/fcl-passrc/tests/tcstatements.pas | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/packages/fcl-passrc/tests/tcstatements.pas b/packages/fcl-passrc/tests/tcstatements.pas index a82f13dd5c..4b2721e230 100644 --- a/packages/fcl-passrc/tests/tcstatements.pas +++ b/packages/fcl-passrc/tests/tcstatements.pas @@ -100,6 +100,7 @@ Type Procedure TestCaseIfCaseElse; Procedure TestCaseIfElse; Procedure TestCaseElseNoSemicolon; + Procedure TestCaseIfElseNoSemicolon; Procedure TestRaise; Procedure TestRaiseEmpty; Procedure TestRaiseAt; @@ -1277,6 +1278,29 @@ begin AssertEquals('1 statements in else branch ',1,TPasImplCaseElse(C.ElseBranch).Elements.Count); end; +procedure TTestStatementParser.TestCaseIfElseNoSemicolon; +Var + C : TPasImplCaseOf; + S : TPasImplCaseStatement; +begin + DeclareVar('integer'); + TestStatement(['case a of','1 : dosomething;','2: if b then',' dosomething','else dosomethingmore','else','a:=1;','end;']); + C:=AssertStatement('Case statement',TpasImplCaseOf) as TpasImplCaseOf; + AssertNotNull('Have case expression',C.CaseExpr); + AssertExpression('Case expression',C.CaseExpr,pekIdent,'a'); + AssertEquals('case label count',3,C.Elements.Count); + S:=TPasImplCaseStatement(C.Elements[0]); + AssertEquals('case 1',1,S.Expressions.Count); + AssertExpression('Case With identifier 1',TPasExpr(S.Expressions[0]),pekNumber,'1'); + S:=TPasImplCaseStatement(C.Elements[1]); + AssertEquals('case 2',1,S.Expressions.Count); + AssertExpression('Case With identifier 1',TPasExpr(S.Expressions[0]),pekNumber,'2'); + AssertEquals('third is else',TPasImplCaseElse,TObject(C.Elements[2]).ClassType); + AssertNotNull('Have else branch',C.ElseBranch); + AssertEquals('Correct else branch class',TPasImplCaseElse,C.ElseBranch.ClassType); + AssertEquals('1 statements in else branch ',1,TPasImplCaseElse(C.ElseBranch).Elements.Count); +end; + procedure TTestStatementParser.TestRaise; Var