Przeglądaj źródła

fcl-js: fixed mem leak

git-svn-id: trunk@49033 -
Mattias Gaertner 4 lat temu
rodzic
commit
cae74485cf
1 zmienionych plików z 61 dodań i 5 usunięć
  1. 61 5
      packages/fcl-js/tests/tcsrcmap.pas

+ 61 - 5
packages/fcl-js/tests/tcsrcmap.pas

@@ -24,6 +24,7 @@ type
     procedure Test_Base64VLQ;
     procedure TestSrcMapIgnoreDuplicate;
     procedure TestSrcMapNames;
+    procedure TestSrcMapLoad;
   end;
 
 implementation
@@ -127,7 +128,9 @@ begin
   try
     sm.AddMapping(1,1,'a.js',2,2,'foo');
     sm.AddMapping(3,3,'a.js',4,4,'foo');
+    {$IFDEF VerboseSrcMap}
     writeln(sm.ToString);
+    {$ENDIF}
     {
       version: 3,
       file: 'generated.js',
@@ -139,33 +142,86 @@ begin
 
     // version
     El:=GetEl(Obj,'version',TJSONIntegerNumber);
-    AssertEquals('json "version" value',El.AsInt64,3);
+    AssertEquals('json "version" value',3,El.AsInt64);
 
     // file
     El:=GetEl(Obj,'file',TJSONString);
-    AssertEquals('json "file" value',El.AsString,'generated.js');
+    AssertEquals('json "file" value','generated.js',El.AsString);
 
     // sources
     Arr:=TJSONArray(GetEl(Obj,'sources',TJSONArray));
     AssertEquals('json "sources".count',Arr.Count,1);
     El:=Arr[0];
     CheckEl('sources[0]',El,TJSONString);
-    AssertEquals('json "sources[0]" value',El.AsString,'a.js');
+    AssertEquals('json "sources[0]" value','a.js',El.AsString);
 
     // names
     Arr:=TJSONArray(GetEl(Obj,'names',TJSONArray));
     AssertEquals('json "names".count',Arr.Count,1);
     El:=Arr[0];
     CheckEl('names[0]',El,TJSONString);
-    AssertEquals('json "names[0]" value',El.AsString,'foo');
+    AssertEquals('json "names[0]" value','foo',El.AsString);
 
     // mappings
     El:=GetEl(Obj,'mappings',TJSONString);
-    AssertEquals('json "mappings" value',El.AsString,'CACEA;;GAEEA');
+    AssertEquals('json "mappings" value','CACEA;;GAEEA',El.AsString);
+
+  finally
+    Obj.Free;
+    sm.Free;
+  end;
+end;
+
+procedure TTestSrcMap.TestSrcMapLoad;
+var
+  sm, sm2: TSourceMap;
+  Obj: TJSONObject;
+  i: Integer;
+begin
+  Obj:=nil;
+  sm2:=nil;
+  sm:=TSourceMap.Create('generated.js');
+  try
+    sm.AddMapping(1,1,'a.js',2,2,'foo');
+    sm.AddMapping(3,3,'a.js',4,4,'foo');
+    {$IFDEF VerboseSrcMap}
+    writeln(sm.ToString);
+    {$ENDIF}
+    {
+      version: 3,
+      file: 'generated.js',
+      sources: ['a.js'],
+      names: ['foo'],
+      mappings: 'CACEA;;GAEEA'
+    }
+    Obj:=sm.ToJSON;
+
+    sm2:=TSourceMap.Create('(not set)');
+    sm2.LoadFromJSON(Obj);
+
+    AssertEquals('same GeneratedFilename',sm.GeneratedFilename,sm2.GeneratedFilename);
+    AssertEquals('same SourceCount',sm.SourceCount,sm2.SourceCount);
+    for i:=0 to sm.SourceCount-1 do
+      AssertEquals('same SourceFiles['+IntToStr(i)+']',sm.SourceFiles[i],sm2.SourceFiles[i]);
+    AssertEquals('same NameCount',sm.NameCount,sm2.NameCount);
+    for i:=0 to sm.NameCount-1 do
+      AssertEquals('same Names['+IntToStr(i)+']',sm.Names[i],sm2.Names[i]);
+    AssertEquals('same Count',sm.Count,sm2.Count);
+    for i:=0 to sm.Count-1 do
+      begin
+      AssertEquals('same Items['+IntToStr(i)+'].Index',sm[i].Index,sm2[i].Index);
+      AssertEquals('same Items['+IntToStr(i)+'].GeneratedLine',sm[i].GeneratedLine,sm2[i].GeneratedLine);
+      AssertEquals('same Items['+IntToStr(i)+'].GeneratedColumn',sm[i].GeneratedColumn,sm2[i].GeneratedColumn);
+      AssertEquals('same Items['+IntToStr(i)+'].SrcFileIndex',sm[i].SrcFileIndex,sm2[i].SrcFileIndex);
+      AssertEquals('same Items['+IntToStr(i)+'].SrcLine',sm[i].SrcLine,sm2[i].SrcLine);
+      AssertEquals('same Items['+IntToStr(i)+'].SrcColumn',sm[i].SrcColumn,sm2[i].SrcColumn);
+      AssertEquals('same Items['+IntToStr(i)+'].NameIndex',sm[i].NameIndex,sm2[i].NameIndex);
+      end;
 
   finally
     Obj.Free;
     sm.Free;
+    sm2.Free;
   end;
 end;