Browse Source

fcl-json: add support to create JSONObject with QWord values

Luiz Américo Pereira Câmara 2 years ago
parent
commit
44a2d4a1eb
2 changed files with 45 additions and 1 deletions
  1. 1 0
      packages/fcl-json/src/fpjson.pp
  2. 44 1
      packages/fcl-json/tests/testjsondata.pas

+ 1 - 0
packages/fcl-json/src/fpjson.pp

@@ -2848,6 +2848,7 @@ begin
                        Result:=CreateJSON();
                        Result:=CreateJSON();
       vtCurrency   : Result:=CreateJSON(vCurrency^);
       vtCurrency   : Result:=CreateJSON(vCurrency^);
       vtInt64      : Result:=CreateJSON(vInt64^);
       vtInt64      : Result:=CreateJSON(vInt64^);
+      vtQWord      : Result:=CreateJSON(VQWord^);
       vtObject     : if (VObject is TJSONData) then
       vtObject     : if (VObject is TJSONData) then
                        Result:=TJSONData(VObject)
                        Result:=TJSONData(VObject)
                      else
                      else

+ 44 - 1
packages/fcl-json/tests/testjsondata.pas

@@ -234,6 +234,8 @@ type
     procedure TestCreateIntegerUnquoted;
     procedure TestCreateIntegerUnquoted;
     procedure TestCreateInt64;
     procedure TestCreateInt64;
     procedure TestCreateInt64Unquoted;
     procedure TestCreateInt64Unquoted;
+    procedure TestCreateQWord;
+    procedure TestCreateQWordUnquoted;
     procedure TestCreateFloat;
     procedure TestCreateFloat;
     procedure TestCreateFloatUnquoted;
     procedure TestCreateFloatUnquoted;
     procedure TestCreateBoolean;
     procedure TestCreateBoolean;
@@ -3497,7 +3499,7 @@ begin
   AssertEquals('6 Existing case-insensitive match, case insensitive',2,J.IndexOfName(Uppercase(C),true));
   AssertEquals('6 Existing case-insensitive match, case insensitive',2,J.IndexOfName(Uppercase(C),true));
 end;
 end;
 
 
-Procedure TTestObject.TestIfFind;
+procedure TTestObject.TestIfFind;
 Var
 Var
   B: TJSONBoolean;
   B: TJSONBoolean;
   S: TJSONString;
   S: TJSONString;
@@ -3814,6 +3816,47 @@ begin
   end;
   end;
 end;
 end;
 
 
+procedure TTestObject.TestCreateQWord;
+Const
+  A = 'A';
+  S : QWord = $FFFFFFFFFFFFF;
+
+Var
+  O : TJSONObject;
+
+begin
+  O:=TJSONObject.Create([A,S]);
+  try
+    TestJSONType(O,jtObject);
+    TestItemCount(O,1);
+    TestJSONType(O[A],jtNumber);
+    TestJSON(O,'{ "A" : '+IntToStr(S)+' }');
+  finally
+    FreeAndNil(O);
+  end;
+end;
+
+procedure TTestObject.TestCreateQWordUnquoted;
+Const
+  A = 'A';
+  S : QWord = $FFFFFFFFFFFFF;
+
+Var
+  O : TJSONObject;
+
+begin
+  TJSONObject.UnQuotedMemberNames:=True;
+  O:=TJSONObject.Create([A,S]);
+  try
+    TestJSONType(O,jtObject);
+    TestItemCount(O,1);
+    TestJSONType(O[A],jtNumber);
+    TestJSON(O,'{ A : '+IntToStr(S)+' }');
+  finally
+    FreeAndNil(O);
+  end;
+end;
+
 procedure TTestObject.TestCreateBoolean;
 procedure TTestObject.TestCreateBoolean;
 
 
 Const
 Const