diff --git a/packages/fcl-js/tests/tcsrcmap.pas b/packages/fcl-js/tests/tcsrcmap.pas index 65927a9ace..59ff0121c5 100644 --- a/packages/fcl-js/tests/tcsrcmap.pas +++ b/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,29 +142,29 @@ 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; @@ -169,6 +172,59 @@ begin 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; + initialization RegisterTests([TTestSrcMap]); end.