Browse Source

* Updated json tests to run properly when the default code is non-UTF8.

Yuriy Sydorov 3 years ago
parent
commit
9653406ac6
2 changed files with 23 additions and 14 deletions
  1. 1 1
      packages/fcl-json/tests/testjson.pp
  2. 22 13
      packages/fcl-json/tests/testjsonreader.pas

+ 1 - 1
packages/fcl-json/tests/testjson.pp

@@ -1,4 +1,4 @@
-{ %OPT=-S2 }
+{ %OPT=-S2 -Fcutf8 }
 {
 {
     This file is part of the Free Component Library
     This file is part of the Free Component Library
 
 

+ 22 - 13
packages/fcl-json/tests/testjsonreader.pas

@@ -50,12 +50,12 @@ type
     procedure CallNoHandlerStream;
     procedure CallNoHandlerStream;
     procedure DoTestFloat(F: TJSONFloat); overload;
     procedure DoTestFloat(F: TJSONFloat); overload;
     procedure DoTestFloat(F: TJSONFloat; S: String); overload;
     procedure DoTestFloat(F: TJSONFloat; S: String); overload;
-    procedure DoTestString(S: String; AValue: String='');
+    procedure DoTestString(S: TJSONStringType; AValue: TJSONStringType='');
     procedure DoTrailingCommaErrorArray;
     procedure DoTrailingCommaErrorArray;
     procedure DoTrailingCommaErrorObject;
     procedure DoTrailingCommaErrorObject;
   Protected
   Protected
     procedure DoTestError(S: String; Options : TJSONOptions = DefaultOpts); virtual; abstract;
     procedure DoTestError(S: String; Options : TJSONOptions = DefaultOpts); virtual; abstract;
-    Procedure TestRead(aJSON : String; AResult : Array of string); virtual; abstract;
+    Procedure TestRead(aJSON : String; AResult : Array of TJSONStringType); virtual; abstract;
   published
   published
     procedure TestEmpty;
     procedure TestEmpty;
     procedure TestNull;
     procedure TestNull;
@@ -86,7 +86,7 @@ type
     Procedure Teardown; override;
     Procedure Teardown; override;
   Public
   Public
     procedure DoTestError(S: String; Options : TJSONOptions = DefaultOpts); override;
     procedure DoTestError(S: String; Options : TJSONOptions = DefaultOpts); override;
-    Procedure TestRead(aJSON : String; AResult : Array of string); override;
+    Procedure TestRead(aJSON : String; AResult : Array of TJSONStringType); override;
     Property Reader : TMyJSONReader Read FReader;
     Property Reader : TMyJSONReader Read FReader;
   end;
   end;
 
 
@@ -125,7 +125,7 @@ type
     Procedure Teardown; override;
     Procedure Teardown; override;
   Public
   Public
     procedure DoTestError(S: String; Options : TJSONOptions = DefaultOpts); override;
     procedure DoTestError(S: String; Options : TJSONOptions = DefaultOpts); override;
-    Procedure TestRead(aJSON : String; AResult : Array of string); override;
+    Procedure TestRead(aJSON : String; AResult : Array of TJSONStringType); override;
     Property Reader : TJSONConsumerReader Read FReader;
     Property Reader : TJSONConsumerReader Read FReader;
   end;
   end;
 
 
@@ -154,7 +154,7 @@ type
     Procedure Teardown; override;
     Procedure Teardown; override;
   Public
   Public
     procedure DoTestError(S: String; Options : TJSONOptions = DefaultOpts); override;
     procedure DoTestError(S: String; Options : TJSONOptions = DefaultOpts); override;
-    Procedure TestRead(aJSON : String; AResult : Array of string); override;
+    Procedure TestRead(aJSON : String; AResult : Array of TJSONStringType); override;
     Property Reader : TJSONEventReader Read FReader;
     Property Reader : TJSONEventReader Read FReader;
   end;
   end;
 
 
@@ -241,8 +241,11 @@ begin
 end;
 end;
 
 
 procedure TMyJSONReader.StringValue(const AValue: TJSONStringType);
 procedure TMyJSONReader.StringValue(const AValue: TJSONStringType);
+var
+  s: TJSONStringType;
 begin
 begin
-  List.Add('string:'+AValue)
+  s:='string:'+AValue;
+  List.Add(s);
 end;
 end;
 
 
 destructor TMyJSONReader.Destroy;
 destructor TMyJSONReader.Destroy;
@@ -492,11 +495,11 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TBaseTestReader.DoTestString(S: String; AValue : String = '');
-
+procedure TBaseTestReader.DoTestString(S: TJSONStringType; AValue : TJSONStringType = '');
 begin
 begin
   if AValue='' then
   if AValue='' then
     AValue:=S;
     AValue:=S;
+  FOptions:=[joUTF8];
   TestRead('"'+S+'"',['string:'+AValue]);
   TestRead('"'+S+'"',['string:'+AValue]);
 end;
 end;
 
 
@@ -522,7 +525,7 @@ begin
   inherited Teardown;
   inherited Teardown;
 end;
 end;
 
 
-procedure TTestReader.TestRead(aJSON: String; AResult: array of string);
+procedure TTestReader.TestRead(aJSON: String; AResult: array of TJSONStringType);
 
 
 Var
 Var
   I : Integer;
   I : Integer;
@@ -633,8 +636,11 @@ begin
 end;
 end;
 
 
 procedure TJSONConsumer.StringValue(const AValue: TJSONStringType);
 procedure TJSONConsumer.StringValue(const AValue: TJSONStringType);
+var
+  s: TJSONStringType;
 begin
 begin
-  List.Add('string:'+AValue)
+  s:='string:'+AValue;
+  List.Add(s);
 end;
 end;
 
 
 constructor TJSONConsumer.Create(AList: TStrings);
 constructor TJSONConsumer.Create(AList: TStrings);
@@ -642,7 +648,7 @@ begin
   FList:=AList;
   FList:=AList;
 end;
 end;
 
 
-procedure TTestJSONConsumerReader.TestRead(aJSON: String; AResult: array of string);
+procedure TTestJSONConsumerReader.TestRead(aJSON: String; AResult: array of TJSONStringType);
 
 
 Var
 Var
   I : Integer;
   I : Integer;
@@ -731,7 +737,7 @@ begin
     Fail('Parse of JSON string "'+S+'" should fail, but succeeded');
     Fail('Parse of JSON string "'+S+'" should fail, but succeeded');
 end;
 end;
 
 
-procedure TTestJSONEventReader.TestRead(aJSON: String; AResult: array of string);
+procedure TTestJSONEventReader.TestRead(aJSON: String; AResult: array of TJSONStringType);
 
 
 Var
 Var
   I : Integer;
   I : Integer;
@@ -817,8 +823,11 @@ begin
 end;
 end;
 
 
 procedure TTestJSONEventReader.StringValue(Sender: TObject; const AValue: TJSONStringType);
 procedure TTestJSONEventReader.StringValue(Sender: TObject; const AValue: TJSONStringType);
+var
+  s: TJSONStringType;
 begin
 begin
-  FList.Add('string:'+AValue)
+  s:='string:'+AValue;
+  FList.Add(s);
 end;
 end;
 
 
 procedure TTestJSONEventReader.HookupEvents(AReader: TJSONEventReader);
 procedure TTestJSONEventReader.HookupEvents(AReader: TJSONEventReader);