Skip to content

Commit 2442522

Browse files
test(json): add tests for jsonb functions and json/jsonb interop
1 parent 6aeda73 commit 2442522

File tree

1 file changed

+140
-1
lines changed

1 file changed

+140
-1
lines changed

testing/json.test

Lines changed: 140 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,34 @@ do_execsql_test json-blob-text-object {
176176
SELECT json(x'7b226b6579223a2276616c7565227d');
177177
} {{{"key":"value"}}}
178178

179+
do_execsql_test jsonb-blob-text-true {
180+
SELECT json(jsonb(x'74727565'));
181+
} {true}
182+
183+
do_execsql_test jsonb-blob-text-false {
184+
SELECT json(jsonb(x'66616c7365'));
185+
} {false}
186+
187+
do_execsql_test jsonb-blob-text-null {
188+
SELECT json(jsonb(x'6e756c6c'));
189+
} {null}
190+
191+
do_execsql_test jsonb-blob-text-number {
192+
SELECT json(jsonb(x'313233'));
193+
} {123}
194+
195+
do_execsql_test jsonb-blob-text-string {
196+
SELECT json(jsonb(x'2268656c6c6f22'));
197+
} {{"hello"}}
198+
199+
do_execsql_test jsonb-blob-text-array {
200+
SELECT json(jsonb(x'5b312c322c335d'));
201+
} {{[1,2,3]}}
202+
203+
do_execsql_test jsonb-blob-text-object {
204+
SELECT json(jsonb(x'7b226b6579223a2276616c7565227d'));
205+
} {{{"key":"value"}}}
206+
179207
do_execsql_test json-pretty-ident-1 {
180208
SELECT json_pretty('{x: 1}', '');
181209
} {{{
@@ -254,7 +282,6 @@ do_execsql_test json_bare_negative_infinity {
254282
SELECT json(-1e309);
255283
} {{-9e999}}
256284

257-
258285
do_execsql_test json_extract_null {
259286
SELECT json_extract(null, '$')
260287
} {{}}
@@ -766,6 +793,118 @@ do_execsql_test_in_memory_error_content json_replace_blob_error {
766793
SELECT json_replace('{"field":1}', '$.field', a) FROM t;
767794
} {JSON cannot hold BLOB values}
768795

796+
do_execsql_test_in_memory_error_content json_array_blob_error {
797+
CREATE TABLE t(a);
798+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
799+
SELECT json_array(a) FROM t;
800+
} {JSON cannot hold BLOB values}
801+
802+
do_execsql_test_in_memory_error_content jsonb_object_blob_error {
803+
CREATE TABLE t(a);
804+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
805+
SELECT jsonb_object('a', a) FROM t;
806+
} {JSON cannot hold BLOB values}
807+
808+
do_execsql_test_in_memory_error_content jsonb_set_blob_error {
809+
CREATE TABLE t(a);
810+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
811+
SELECT jsonb_set('{}', '$.field', a) FROM t;
812+
} {JSON cannot hold BLOB values}
813+
814+
do_execsql_test_in_memory_error_content jsonb_insert_blob_error {
815+
CREATE TABLE t(a);
816+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
817+
SELECT jsonb_insert('{}', '$.field', a) FROM t;
818+
} {JSON cannot hold BLOB values}
819+
820+
do_execsql_test_in_memory_error_content jsonb_replace_blob_error {
821+
CREATE TABLE t(a);
822+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
823+
SELECT jsonb_replace('{"field":1}', '$.field', a) FROM t;
824+
} {JSON cannot hold BLOB values}
825+
826+
do_execsql_test_in_memory_error_content jsonb_array_blob_error {
827+
CREATE TABLE t(a);
828+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
829+
SELECT jsonb_array(a) FROM t;
830+
} {JSON cannot hold BLOB values}
831+
832+
do_execsql_test_on_specific_db {:memory:} jsonb_object_with_json_conversion {
833+
CREATE TABLE t1(data TEXT);
834+
INSERT INTO t1 VALUES ('{"name":"Alice","age":30}');
835+
SELECT json(jsonb_object('original', json(data), 'new', 'value')) FROM t1;
836+
} {{{"original":{"name":"Alice","age":30},"new":"value"}}}
837+
838+
do_execsql_test_on_specific_db {:memory:} json_object_with_jsonb_conversion {
839+
CREATE TABLE t1(data BLOB);
840+
INSERT INTO t1 VALUES (jsonb('{"name":"Bob","age":25}'));
841+
SELECT json_object('original', json(data), 'new', 'value') FROM t1;
842+
} {{{"original":{"name":"Bob","age":25},"new":"value"}}}
843+
844+
do_execsql_test_on_specific_db {:memory:} jsonb_set_with_json_conversion {
845+
CREATE TABLE t1(data TEXT);
846+
INSERT INTO t1 VALUES ('{"name":"Alice","age":30}');
847+
SELECT json(jsonb_set(json(data), '$.city', '"NY"')) FROM t1;
848+
} {{{"name":"Alice","age":30,"city":"\"NY\""}}}
849+
850+
851+
do_execsql_test_on_specific_db {:memory:} json_set_with_jsonb_conversion {
852+
CREATE TABLE t1(data BLOB);
853+
INSERT INTO t1 VALUES (jsonb('{"name":"Bob","age":25}'));
854+
SELECT json_set(json(data), '$.city', '"NY"') FROM t1;
855+
} {{{"name":"Bob","age":25,"city":"\"NY\""}}}
856+
857+
858+
do_execsql_test_on_specific_db {:memory:} jsonb_insert_with_json_conversion {
859+
CREATE TABLE t1(data TEXT);
860+
INSERT INTO t1 VALUES ('{"name":"Alice","age":30}');
861+
SELECT json(jsonb_insert(json(data), '$.city', '"NY"')) FROM t1;
862+
} {{{"name":"Alice","age":30,"city":"\"NY\""}}}
863+
864+
865+
do_execsql_test_on_specific_db {:memory:} json_insert_with_jsonb_conversion {
866+
CREATE TABLE t1(data BLOB);
867+
INSERT INTO t1 VALUES (jsonb('{"name":"Bob","age":25}'));
868+
SELECT json_insert(json(data), '$.city', '"NY"') FROM t1;
869+
} {{{"name":"Bob","age":25,"city":"\"NY\""}}}
870+
871+
872+
do_execsql_test_on_specific_db {:memory:} jsonb_replace_with_json_conversion {
873+
CREATE TABLE t1(data TEXT);
874+
INSERT INTO t1 VALUES ('{"name":"Alice","age":30}');
875+
SELECT json(jsonb_replace(json(data), '$.age', '31')) FROM t1;
876+
} {{{"name":"Alice","age":"31"}}}
877+
878+
do_execsql_test_on_specific_db {:memory:} json_replace_with_jsonb_conversion {
879+
CREATE TABLE t1(data BLOB);
880+
INSERT INTO t1 VALUES (jsonb('{"name":"Bob","age":25}'));
881+
SELECT json_replace(json(data), '$.age', '26') FROM t1;
882+
} {{{"name":"Bob","age":"26"}}}
883+
884+
do_execsql_test_on_specific_db {:memory:} jsonb_array_with_json_conversion {
885+
CREATE TABLE t1(data TEXT);
886+
INSERT INTO t1 VALUES ('{"name":"Alice"}');
887+
SELECT json(jsonb_array(json(data), 'extra')) FROM t1;
888+
} {{[{"name":"Alice"},"extra"]}}
889+
890+
do_execsql_test_on_specific_db {:memory:} json_array_with_jsonb_conversion {
891+
CREATE TABLE t1(data BLOB);
892+
INSERT INTO t1 VALUES (jsonb('{"name":"Bob"}'));
893+
SELECT json_array(json(data), 'extra') FROM t1;
894+
} {{[{"name":"Bob"},"extra"]}}
895+
896+
do_execsql_test_on_specific_db {:memory:} mixed_json_jsonb_json_extract {
897+
CREATE TABLE t1(data BLOB);
898+
INSERT INTO t1 VALUES (jsonb('{"name":"Alice","age":30}'));
899+
SELECT json_extract(json(jsonb_set(data, '$.city', '"NY"')), '$.city') FROM t1;
900+
} {{"NY"}}
901+
902+
do_execsql_test_on_specific_db {:memory:} mixed_json_jsonb_json_object {
903+
CREATE TABLE t1(text_data TEXT, blob_data BLOB);
904+
INSERT INTO t1 VALUES ('{"a":1}', jsonb('{"b":2}'));
905+
SELECT json_object('text', json(text_data), 'blob', json(blob_data)) FROM t1;
906+
} {{{"text":{"a":1},"blob":{"b":2}}}}
907+
769908
do_execsql_test json_object_json_array {
770909
SELECT json_object('ex',json('[52,3]'));
771910
} {{{"ex":[52,3]}}}

0 commit comments

Comments
 (0)