pastojs: test record and jsvalue

git-svn-id: trunk@41690 -
This commit is contained in:
Mattias Gaertner 2019-03-13 08:16:29 +00:00
parent a32e69bf72
commit 65d0b1ee00

View File

@ -455,7 +455,7 @@ type
Procedure TestRecordElementFromFuncResult_AsParams; Procedure TestRecordElementFromFuncResult_AsParams;
Procedure TestRecordElementFromWith_AsParams; Procedure TestRecordElementFromWith_AsParams;
Procedure TestRecord_Equal; Procedure TestRecord_Equal;
Procedure TestRecord_TypeCastJSValueToRecord; Procedure TestRecord_JSValue;
Procedure TestRecord_VariantFail; Procedure TestRecord_VariantFail;
Procedure TestRecord_FieldArray; Procedure TestRecord_FieldArray;
Procedure TestRecord_Const; Procedure TestRecord_Const;
@ -10355,20 +10355,28 @@ begin
''])); '']));
end; end;
procedure TTestModule.TestRecord_TypeCastJSValueToRecord; procedure TTestModule.TestRecord_JSValue;
begin begin
StartProgram(false); StartProgram(false);
Add('type'); Add([
Add(' TRecord = record'); 'type',
Add(' i: longint;'); ' TRecord = record',
Add(' end;'); ' i: longint;',
Add('var'); ' end;',
Add(' Jv: jsvalue;'); 'procedure Fly(d: jsvalue; const c: jsvalue);',
Add(' Rec: trecord;'); 'begin',
Add('begin'); 'end;',
Add(' rec:=trecord(jv);'); 'var',
' Jv: jsvalue;',
' Rec: trecord;',
'begin',
' rec:=trecord(jv);',
' jv:=rec;',
' Fly(rec,rec);',
' Fly(@rec,@rec);',
'']);
ConvertProgram; ConvertProgram;
CheckSource('TestRecord_TypeCastJSValueToRecord', CheckSource('TestRecord_JSValue',
LinesToStr([ // statements LinesToStr([ // statements
'rtl.recNewT($mod, "TRecord", function () {', 'rtl.recNewT($mod, "TRecord", function () {',
' this.i = 0;', ' this.i = 0;',
@ -10380,11 +10388,16 @@ begin
' return this;', ' return this;',
' };', ' };',
'});', '});',
'this.Fly = function (d, c) {',
'};',
'this.Jv = undefined;', 'this.Jv = undefined;',
'this.Rec = $mod.TRecord.$new();', 'this.Rec = $mod.TRecord.$new();',
'']), '']),
LinesToStr([ LinesToStr([
'$mod.Rec.$assign(rtl.getObject($mod.Jv));', '$mod.Rec.$assign(rtl.getObject($mod.Jv));',
'$mod.Jv = $mod.Rec;',
'$mod.Fly($mod.TRecord.$clone($mod.Rec), $mod.Rec);',
'$mod.Fly($mod.Rec, $mod.Rec);',
''])); '']));
end; end;