Browse Source

pastojs: case-of and external const

git-svn-id: trunk@39021 -
Mattias Gaertner 7 years ago
parent
commit
d64664dedc
1 changed files with 46 additions and 10 deletions
  1. 46 10
      packages/pastojs/tests/tcmodules.pas

+ 46 - 10
packages/pastojs/tests/tcmodules.pas

@@ -368,6 +368,7 @@ type
     Procedure TestCaseOfNoElse_UseSwitch;
     Procedure TestCaseOfRange;
     Procedure TestCaseOfString;
+    Procedure TestCaseOfExternalClassConst;
 
     // arrays
     Procedure TestArray_Dynamic;
@@ -376,7 +377,7 @@ type
     Procedure TestArray_StaticInt;
     Procedure TestArray_StaticBool;
     Procedure TestArray_StaticChar;
-    Procedure TestArray_StaticMultiDim; // ToDo
+    Procedure TestArray_StaticMultiDim;
     Procedure TestArrayOfRecord;
     // ToDo: Procedure TestArrayOfSet;
     Procedure TestArray_DynAsParam;
@@ -6423,14 +6424,17 @@ end;
 procedure TTestModule.TestCaseOf;
 begin
   StartProgram(false);
-  Add('var vI: longint;');
-  Add('begin');
-  Add('  case vi of');
-  Add('  1: ;');
-  Add('  2: vi:=3;');
-  Add('  else');
-  Add('    VI:=4');
-  Add('  end;');
+  Add([
+  'const e: longint; external name ''$e'';',
+  'var vI: longint;',
+  'begin',
+  '  case vi of',
+  '  1: ;',
+  '  2: vi:=3;',
+  '  e: ;',
+  '  else',
+  '    VI:=4',
+  '  end;']);
   ConvertProgram;
   CheckSource('TestCaseOf',
     LinesToStr([ // statements
@@ -6438,7 +6442,11 @@ begin
     ]),
     LinesToStr([ // $mod.$main
     'var $tmp1 = $mod.vI;',
-    'if ($tmp1 === 1) {} else if ($tmp1 === 2){ $mod.vI = 3 }else {',
+    'if ($tmp1 === 1) {}',
+    'else if ($tmp1 === 2) {',
+    '  $mod.vI = 3}',
+    ' else if ($tmp1 === $e) {}',
+    'else {',
     '  $mod.vI = 4;',
     '};'
     ]));
@@ -6571,6 +6579,34 @@ begin
     '']));
 end;
 
+procedure TTestModule.TestCaseOfExternalClassConst;
+begin
+  StartProgram(false);
+  Add([
+  '{$modeswitch externalclass}',
+  'type',
+  '  TBird = class external name ''Bird''',
+  '    const e: longint;',
+  '  end;',
+  'var vI: longint;',
+  'begin',
+  '  case vi of',
+  '  1: vi:=3;',
+  '  TBird.e: ;',
+  '  end;']);
+  ConvertProgram;
+  CheckSource('TestCaseOfExternalClassConst',
+    LinesToStr([ // statements
+    'this.vI = 0;'
+    ]),
+    LinesToStr([ // $mod.$main
+    'var $tmp1 = $mod.vI;',
+    'if ($tmp1 === 1) {',
+    '  $mod.vI = 3}',
+    ' else if ($tmp1 === Bird.e) ;'
+    ]));
+end;
+
 procedure TTestModule.TestArray_Dynamic;
 begin
   StartProgram(false);