]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
New test cases for the json1 extension.
authordrh <drh@noemail.net>
Sat, 29 Aug 2015 18:30:30 +0000 (18:30 +0000)
committerdrh <drh@noemail.net>
Sat, 29 Aug 2015 18:30:30 +0000 (18:30 +0000)
FossilOrigin-Name: daff4832af963f98bcc1d2c2f84bd815d384f850

manifest
manifest.uuid
test/json101.test

index 6dcf2619a0cec3670da6891091631372a6ff4a94..9b8023b059432850adb79d48b634ad485f2c0b7c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sthe\sbuild\swith\s-DSQLITE_OMIT_VIRTUALTABLE.
-D 2015-08-29T17:22:33.763
+C New\stest\scases\sfor\sthe\sjson1\sextension.
+D 2015-08-29T18:30:30.457
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in e2218eb228374422969de7b1680eda6864affcef
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -810,7 +810,7 @@ F test/journal3.test ff8af941f9e06161d3db1b46bb9f965ff0e7f307
 F test/jrnlmode.test 7864d59cf7f6e552b9b99ba0f38acd167edc10fa
 F test/jrnlmode2.test 81610545a4e6ed239ea8fa661891893385e23a1d
 F test/jrnlmode3.test 556b447a05be0e0963f4311e95ab1632b11c9eaa
-F test/json101.test ef8fb3ac6a59b9a435c9fec7a4eb6413ecf76531
+F test/json101.test 11535d8986184500f4c30cc2f0b154b4ab05cc4e
 F test/keyword1.test 37ef6bba5d2ed5b07ecdd6810571de2956599dff
 F test/lastinsert.test 42e948fd6442f07d60acbd15d33fb86473e0ef63
 F test/laststmtchanges.test ae613f53819206b3222771828d024154d51db200
@@ -1380,7 +1380,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P fd19ff029f128f478f69910352a6f8b84262ce1d
-R 9a4be85e9706d5dbc0e9b26aa7664d5f
+P 752918def7231f7846b3e985c9953a1cc825ab6b
+R 4e95d91aa0ecccfdfe103208bb14f5d9
 U drh
-Z 792dcf72d6ff70af8eda2770d6871186
+Z dd982e2b56c4c4ec66263dd341e5829e
index 71b6d8e22e139ac74a6614e068f6a9c0b5fa6491..7b3cfd163afeaa31573ce652b029e50a0074f6fd 100644 (file)
@@ -1 +1 @@
-752918def7231f7846b3e985c9953a1cc825ab6b
\ No newline at end of file
+daff4832af963f98bcc1d2c2f84bd815d384f850
\ No newline at end of file
index be561094d5348cd635e1aea60450bb38de1d7a7b..1a84a5fc5e4afa8e5f483ede67e2f96056504968 100644 (file)
@@ -113,4 +113,183 @@ do_execsql_test json-4.10 {
      AND json_type(x) IN ('object','array');
 } {4}
 
+do_execsql_test json-5.1 {
+  CREATE TABLE j2(id INTEGER PRIMARY KEY, json, src);
+  INSERT INTO j2(id,json,src)
+  VALUES(1,'{
+    "firstName": "John",
+    "lastName": "Smith",
+    "isAlive": true,
+    "age": 25,
+    "address": {
+      "streetAddress": "21 2nd Street",
+      "city": "New York",
+      "state": "NY",
+      "postalCode": "10021-3100"
+    },
+    "phoneNumbers": [
+      {
+        "type": "home",
+        "number": "212 555-1234"
+      },
+      {
+        "type": "office",
+        "number": "646 555-4567"
+      }
+    ],
+    "children": [],
+    "spouse": null
+  }','https://en.wikipedia.org/wiki/JSON');
+  INSERT INTO j2(id,json,src)
+  VALUES(2, '{
+       "id": "0001",
+       "type": "donut",
+       "name": "Cake",
+       "ppu": 0.55,
+       "batters":
+               {
+                       "batter":
+                               [
+                                       { "id": "1001", "type": "Regular" },
+                                       { "id": "1002", "type": "Chocolate" },
+                                       { "id": "1003", "type": "Blueberry" },
+                                       { "id": "1004", "type": "Devil''s Food" }
+                               ]
+               },
+       "topping":
+               [
+                       { "id": "5001", "type": "None" },
+                       { "id": "5002", "type": "Glazed" },
+                       { "id": "5005", "type": "Sugar" },
+                       { "id": "5007", "type": "Powdered Sugar" },
+                       { "id": "5006", "type": "Chocolate with Sprinkles" },
+                       { "id": "5003", "type": "Chocolate" },
+                       { "id": "5004", "type": "Maple" }
+               ]
+   }','https://adobe.github.io/Spry/samples/data_region/JSONDataSetSample.html');
+   INSERT INTO j2(id,json,src)
+   VALUES(3,'[
+       {
+               "id": "0001",
+               "type": "donut",
+               "name": "Cake",
+               "ppu": 0.55,
+               "batters":
+                       {
+                               "batter":
+                                       [
+                                               { "id": "1001", "type": "Regular" },
+                                               { "id": "1002", "type": "Chocolate" },
+                                               { "id": "1003", "type": "Blueberry" },
+                                               { "id": "1004", "type": "Devil''s Food" }
+                                       ]
+                       },
+               "topping":
+                       [
+                               { "id": "5001", "type": "None" },
+                               { "id": "5002", "type": "Glazed" },
+                               { "id": "5005", "type": "Sugar" },
+                               { "id": "5007", "type": "Powdered Sugar" },
+                               { "id": "5006", "type": "Chocolate with Sprinkles" },
+                               { "id": "5003", "type": "Chocolate" },
+                               { "id": "5004", "type": "Maple" }
+                       ]
+       },
+       {
+               "id": "0002",
+               "type": "donut",
+               "name": "Raised",
+               "ppu": 0.55,
+               "batters":
+                       {
+                               "batter":
+                                       [
+                                               { "id": "1001", "type": "Regular" }
+                                       ]
+                       },
+               "topping":
+                       [
+                               { "id": "5001", "type": "None" },
+                               { "id": "5002", "type": "Glazed" },
+                               { "id": "5005", "type": "Sugar" },
+                               { "id": "5003", "type": "Chocolate" },
+                               { "id": "5004", "type": "Maple" }
+                       ]
+       },
+       {
+               "id": "0003",
+               "type": "donut",
+               "name": "Old Fashioned",
+               "ppu": 0.55,
+               "batters":
+                       {
+                               "batter":
+                                       [
+                                               { "id": "1001", "type": "Regular" },
+                                               { "id": "1002", "type": "Chocolate" }
+                                       ]
+                       },
+               "topping":
+                       [
+                               { "id": "5001", "type": "None" },
+                               { "id": "5002", "type": "Glazed" },
+                               { "id": "5003", "type": "Chocolate" },
+                               { "id": "5004", "type": "Maple" }
+                       ]
+       }
+   ]','https://adobe.github.io/Spry/samples/data_region/JSONDataSetSample.html');
+   SELECT count(*) FROM j2;
+} {3}
+
+do_execsql_test json-5.2 {
+  SELECT id, json_valid(json), json_type(json), '|' FROM j2 ORDER BY id;
+} {1 1 object | 2 1 object | 3 1 array |}
+
+ifcapable !vtab {
+  finish_test
+  return
+}
+
+# fullkey is always the same as path+key (with appropriate formatting)
+#
+do_execsql_test json-5.3 {
+  SELECT j2.rowid, jx.rowid, fullkey, path, key
+    FROM j2, json_tree(j2.json) AS jx
+   WHERE fullkey!=(path || CASE WHEN typeof(key)=='integer' THEN '['||key||']'
+                                ELSE '.'||key END);
+} {}
+do_execsql_test json-5.4 {
+  SELECT j2.rowid, jx.rowid, fullkey, path, key
+    FROM j2, json_each(j2.json) AS jx
+   WHERE fullkey!=(path || CASE WHEN typeof(key)=='integer' THEN '['||key||']'
+                                ELSE '.'||key END);
+} {}
+
+
+# Verify that the json_each.json and json_tree.json output is always the
+# same as input.
+#
+do_execsql_test json-5.5 {
+  SELECT j2.rowid, jx.rowid, fullkey, path, key
+    FROM j2, json_each(j2.json) AS jx
+   WHERE jx.json<>j2.json;
+} {}
+do_execsql_test json-5.6 {
+  SELECT j2.rowid, jx.rowid, fullkey, path, key
+    FROM j2, json_tree(j2.json) AS jx
+   WHERE jx.json<>j2.json;
+} {}
+do_execsql_test json-5.7 {
+  SELECT j2.rowid, jx.rowid, fullkey, path, key
+    FROM j2, json_each(j2.json) AS jx
+   WHERE jx.value<>jx.atom AND type NOT IN ('array','object');
+} {}
+do_execsql_test json-5.8 {
+  SELECT j2.rowid, jx.rowid, fullkey, path, key
+    FROM j2, json_tree(j2.json) AS jx
+   WHERE jx.value<>jx.atom AND type NOT IN ('array','object');
+} {}
+
+
+
 finish_test