Browse Source

* Fixed lazarus dependencies, and added extensive object test

git-svn-id: trunk@8525 -
michael 18 years ago
parent
commit
e13f356d04

+ 10 - 4
packages/fcl-json/tests/testjson.lpi

@@ -24,16 +24,19 @@
         <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
       </local>
     </RunParams>
-    <RequiredPackages Count="3">
+    <RequiredPackages Count="4">
       <Item1>
-        <PackageName Value="LCL"/>
+        <PackageName Value="fpcunitconsolerunner"/>
       </Item1>
       <Item2>
-        <PackageName Value="FPCUnitTestRunner"/>
+        <PackageName Value="LCL"/>
       </Item2>
       <Item3>
-        <PackageName Value="FCL"/>
+        <PackageName Value="FPCUnitTestRunner"/>
       </Item3>
+      <Item4>
+        <PackageName Value="FCL"/>
+      </Item4>
     </RequiredPackages>
     <Units Count="3">
       <Unit0>
@@ -55,6 +58,9 @@
   </ProjectOptions>
   <CompilerOptions>
     <Version Value="5"/>
+    <SearchPaths>
+      <OtherUnitFiles Value="../src/"/>
+    </SearchPaths>
     <CodeGeneration>
       <Generate Value="Faster"/>
     </CodeGeneration>

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

@@ -17,7 +17,8 @@
 program testjson;
 
 uses
-  Classes, consoletestrunner, testjsondata, testjsonparser;
+  Classes, consoletestrunner, testjsondata, testjsonparser,
+  fpcunitconsolerunner;
 type
   { TLazTestRunner }
    TMyTestRunner = class(TTestRunner)

+ 20 - 3
packages/fcl-json/tests/testjsonparser.pp

@@ -31,7 +31,7 @@ type
     procedure DoTestError(S: String);
     procedure DoTestFloat(F: TJSONFloat); overload;
     procedure DoTestFloat(F: TJSONFloat; S: String); overload;
-    procedure DoTestObject(S: String; const ElNames: array of String);
+    procedure DoTestObject(S: String; const ElNames: array of String; DoJSONTest : Boolean = True);
     procedure DoTestString(S : String);
     procedure DoTestArray(S: String; ACount: Integer);
   published
@@ -204,12 +204,28 @@ end;
 
 procedure TTestParser.TestMixed;
 
+Const
+
+  SAddr ='{ "addressbook": { "name": "Mary Lebow", '+
+         '  "address": {'+
+         '      "street": "5 Main Street",'+LineEnding+
+         '        "city": "San Diego, CA",'+LineEnding+
+         '        "zip": 91912,'+LineEnding+
+         '    },'+LineEnding+
+         '    "phoneNumbers": [  '+LineEnding+
+         '        "619 332-3452",'+LineEnding+
+         '        "664 223-4667"'+LineEnding+
+         '    ]'+LineEnding+
+         ' }'+LineEnding+
+         '}';
+
 begin
   DoTestArray('[1, {}]',2);
   DoTestArray('[1, { "a" : 1 }]',2);
   DoTestArray('[1, { "a" : 1 }, 1]',3);
   DoTestObject('{ "a" : [1, 2] }',['a']);
   DoTestObject('{ "a" : [1, 2], "B" : { "c" : "d" } }',['a','B']);
+  DoTestObject(SAddr,['addressbook'],False);
 end;
 
 procedure TTestParser.TestObject;
@@ -222,7 +238,7 @@ begin
 end;
 
 
-procedure TTestParser.DoTestObject(S : String; Const ElNames : Array of String);
+procedure TTestParser.DoTestObject(S : String; Const ElNames : Array of String; DoJSONTest : Boolean = True);
 
 Var
   P : TJSONParser;
@@ -242,7 +258,8 @@ begin
     For I:=Low(ElNames) to High(ElNames) do
       AssertEquals(Format('Element %d name',[I-Low(Elnames)])
                    ,ElNames[i], O.Names[I-Low(ElNames)]);
-    TestJSON(J,S);
+    If DoJSONTest then
+      self.TestJSON(J,S);
   Finally
     FreeAndNil(J);
     FreeAndNil(P);