Skip to content

Commit fcfc047

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

File tree

1 file changed

+112
-1
lines changed

1 file changed

+112
-1
lines changed

testing/json.test

Lines changed: 112 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,6 @@ do_execsql_test json_bare_negative_infinity {
254254
SELECT json(-1e309);
255255
} {{-9e999}}
256256

257-
258257
do_execsql_test json_extract_null {
259258
SELECT json_extract(null, '$')
260259
} {{}}
@@ -766,6 +765,118 @@ do_execsql_test_in_memory_error_content json_replace_blob_error {
766765
SELECT json_replace('{"field":1}', '$.field', a) FROM t;
767766
} {JSON cannot hold BLOB values}
768767

768+
do_execsql_test_in_memory_error_content json_array_blob_error {
769+
CREATE TABLE t(a);
770+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
771+
SELECT json_array(a) FROM t;
772+
} {JSON cannot hold BLOB values}
773+
774+
do_execsql_test_in_memory_error_content jsonb_object_blob_error {
775+
CREATE TABLE t(a);
776+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
777+
SELECT jsonb_object('a', a) FROM t;
778+
} {JSON cannot hold BLOB values}
779+
780+
do_execsql_test_in_memory_error_content jsonb_set_blob_error {
781+
CREATE TABLE t(a);
782+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
783+
SELECT jsonb_set('{}', '$.field', a) FROM t;
784+
} {JSON cannot hold BLOB values}
785+
786+
do_execsql_test_in_memory_error_content jsonb_insert_blob_error {
787+
CREATE TABLE t(a);
788+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
789+
SELECT jsonb_insert('{}', '$.field', a) FROM t;
790+
} {JSON cannot hold BLOB values}
791+
792+
do_execsql_test_in_memory_error_content jsonb_replace_blob_error {
793+
CREATE TABLE t(a);
794+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
795+
SELECT jsonb_replace('{"field":1}', '$.field', a) FROM t;
796+
} {JSON cannot hold BLOB values}
797+
798+
do_execsql_test_in_memory_error_content jsonb_array_blob_error {
799+
CREATE TABLE t(a);
800+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
801+
SELECT jsonb_array(a) FROM t;
802+
} {JSON cannot hold BLOB values}
803+
804+
do_execsql_test_on_specific_db {:memory:} jsonb_object_with_json_conversion {
805+
CREATE TABLE t1(data TEXT);
806+
INSERT INTO t1 VALUES ('{"name":"Alice","age":30}');
807+
SELECT json(jsonb_object('original', json(data), 'new', 'value')) FROM t1;
808+
} {{{"original":{"name":"Alice","age":30},"new":"value"}}}
809+
810+
do_execsql_test_on_specific_db {:memory:} json_object_with_jsonb_conversion {
811+
CREATE TABLE t1(data BLOB);
812+
INSERT INTO t1 VALUES (jsonb('{"name":"Bob","age":25}'));
813+
SELECT json_object('original', json(data), 'new', 'value') FROM t1;
814+
} {{{"original":{"name":"Bob","age":25},"new":"value"}}}
815+
816+
do_execsql_test_on_specific_db {:memory:} jsonb_set_with_json_conversion {
817+
CREATE TABLE t1(data TEXT);
818+
INSERT INTO t1 VALUES ('{"name":"Alice","age":30}');
819+
SELECT json(jsonb_set(json(data), '$.city', '"NY"')) FROM t1;
820+
} {{{"name":"Alice","age":30,"city":"\"NY\""}}}
821+
822+
823+
do_execsql_test_on_specific_db {:memory:} json_set_with_jsonb_conversion {
824+
CREATE TABLE t1(data BLOB);
825+
INSERT INTO t1 VALUES (jsonb('{"name":"Bob","age":25}'));
826+
SELECT json_set(json(data), '$.city', '"NY"') FROM t1;
827+
} {{{"name":"Bob","age":25,"city":"\"NY\""}}}
828+
829+
830+
do_execsql_test_on_specific_db {:memory:} jsonb_insert_with_json_conversion {
831+
CREATE TABLE t1(data TEXT);
832+
INSERT INTO t1 VALUES ('{"name":"Alice","age":30}');
833+
SELECT json(jsonb_insert(json(data), '$.city', '"NY"')) FROM t1;
834+
} {{{"name":"Alice","age":30,"city":"\"NY\""}}}
835+
836+
837+
do_execsql_test_on_specific_db {:memory:} json_insert_with_jsonb_conversion {
838+
CREATE TABLE t1(data BLOB);
839+
INSERT INTO t1 VALUES (jsonb('{"name":"Bob","age":25}'));
840+
SELECT json_insert(json(data), '$.city', '"NY"') FROM t1;
841+
} {{{"name":"Bob","age":25,"city":"\"NY\""}}}
842+
843+
844+
do_execsql_test_on_specific_db {:memory:} jsonb_replace_with_json_conversion {
845+
CREATE TABLE t1(data TEXT);
846+
INSERT INTO t1 VALUES ('{"name":"Alice","age":30}');
847+
SELECT json(jsonb_replace(json(data), '$.age', '31')) FROM t1;
848+
} {{{"name":"Alice","age":"31"}}}
849+
850+
do_execsql_test_on_specific_db {:memory:} json_replace_with_jsonb_conversion {
851+
CREATE TABLE t1(data BLOB);
852+
INSERT INTO t1 VALUES (jsonb('{"name":"Bob","age":25}'));
853+
SELECT json_replace(json(data), '$.age', '26') FROM t1;
854+
} {{{"name":"Bob","age":"26"}}}
855+
856+
do_execsql_test_on_specific_db {:memory:} jsonb_array_with_json_conversion {
857+
CREATE TABLE t1(data TEXT);
858+
INSERT INTO t1 VALUES ('{"name":"Alice"}');
859+
SELECT json(jsonb_array(json(data), 'extra')) FROM t1;
860+
} {{[{"name":"Alice"},"extra"]}}
861+
862+
do_execsql_test_on_specific_db {:memory:} json_array_with_jsonb_conversion {
863+
CREATE TABLE t1(data BLOB);
864+
INSERT INTO t1 VALUES (jsonb('{"name":"Bob"}'));
865+
SELECT json_array(json(data), 'extra') FROM t1;
866+
} {{[{"name":"Bob"},"extra"]}}
867+
868+
do_execsql_test_on_specific_db {:memory:} mixed_json_jsonb_json_extract {
869+
CREATE TABLE t1(data BLOB);
870+
INSERT INTO t1 VALUES (jsonb('{"name":"Alice","age":30}'));
871+
SELECT json_extract(json(jsonb_set(data, '$.city', '"NY"')), '$.city') FROM t1;
872+
} {{"NY"}}
873+
874+
do_execsql_test_on_specific_db {:memory:} mixed_json_jsonb_json_object {
875+
CREATE TABLE t1(text_data TEXT, blob_data BLOB);
876+
INSERT INTO t1 VALUES ('{"a":1}', jsonb('{"b":2}'));
877+
SELECT json_object('text', json(text_data), 'blob', json(blob_data)) FROM t1;
878+
} {{{"text":{"a":1},"blob":{"b":2}}}}
879+
769880
do_execsql_test json_object_json_array {
770881
SELECT json_object('ex',json('[52,3]'));
771882
} {{{"ex":[52,3]}}}

0 commit comments

Comments
 (0)