From 65d0b1ee00b71989a08adb9849dc83d130ce7015 Mon Sep 17 00:00:00 2001 From: Mattias Gaertner Date: Wed, 13 Mar 2019 08:16:29 +0000 Subject: [PATCH] pastojs: test record and jsvalue git-svn-id: trunk@41690 - --- packages/pastojs/tests/tcmodules.pas | 37 +++++++++++++++++++--------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/packages/pastojs/tests/tcmodules.pas b/packages/pastojs/tests/tcmodules.pas index 9bf6544cc3..d3a6c5a89c 100644 --- a/packages/pastojs/tests/tcmodules.pas +++ b/packages/pastojs/tests/tcmodules.pas @@ -455,7 +455,7 @@ type Procedure TestRecordElementFromFuncResult_AsParams; Procedure TestRecordElementFromWith_AsParams; Procedure TestRecord_Equal; - Procedure TestRecord_TypeCastJSValueToRecord; + Procedure TestRecord_JSValue; Procedure TestRecord_VariantFail; Procedure TestRecord_FieldArray; Procedure TestRecord_Const; @@ -10355,20 +10355,28 @@ begin ''])); end; -procedure TTestModule.TestRecord_TypeCastJSValueToRecord; +procedure TTestModule.TestRecord_JSValue; begin StartProgram(false); - Add('type'); - Add(' TRecord = record'); - Add(' i: longint;'); - Add(' end;'); - Add('var'); - Add(' Jv: jsvalue;'); - Add(' Rec: trecord;'); - Add('begin'); - Add(' rec:=trecord(jv);'); + Add([ + 'type', + ' TRecord = record', + ' i: longint;', + ' end;', + 'procedure Fly(d: jsvalue; const c: jsvalue);', + 'begin', + 'end;', + 'var', + ' Jv: jsvalue;', + ' Rec: trecord;', + 'begin', + ' rec:=trecord(jv);', + ' jv:=rec;', + ' Fly(rec,rec);', + ' Fly(@rec,@rec);', + '']); ConvertProgram; - CheckSource('TestRecord_TypeCastJSValueToRecord', + CheckSource('TestRecord_JSValue', LinesToStr([ // statements 'rtl.recNewT($mod, "TRecord", function () {', ' this.i = 0;', @@ -10380,11 +10388,16 @@ begin ' return this;', ' };', '});', + 'this.Fly = function (d, c) {', + '};', 'this.Jv = undefined;', 'this.Rec = $mod.TRecord.$new();', '']), LinesToStr([ '$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;