CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
json105.test114 linesDownload Raw Back to test
1# 2019-11-222#3# The author disclaims copyright to this source code.  In place of4# a legal notice, here is a blessing:5#6#    May you do good and not evil.7#    May you find forgiveness for yourself and forgive others.8#    May you share freely, never taking more than you give.9#10#***********************************************************************11# This file implements tests for "[#]" extension to json-path12#13 14set testdir [file dirname $argv0]15source $testdir/tester.tcl16set testprefix json10517 18# This is the example from pages 2 and 3 of RFC-739619db eval {20  CREATE TABLE t1(j);21  INSERT INTO t1(j) VALUES('{"a":1,"b":[1,[2,3],4],"c":99}');22}23proc json_extract_test {testnum path result} {24  do_execsql_test json105-1.$testnum "SELECT quote(json_extract(j,$path)) FROM t1" $result25}26json_extract_test 10 {'$.b[#]'}   NULL27json_extract_test 20 {'$.b[#-1]'} 428json_extract_test 30 {'$.b[#-2]'} {'[2,3]'}29json_extract_test 31 {'$.b[#-02]'} {'[2,3]'}30json_extract_test 40 {'$.b[#-3]'} 131json_extract_test 50 {'$.b[#-4]'} NULL32json_extract_test 60 {'$.b[#-2][#-1]'} 333json_extract_test 70 {'$.b[0]','$.b[#-1]'} {'[1,4]'}34 35json_extract_test 100 {'$.a[#-1]'} NULL36json_extract_test 110 {'$.b[#-000001]'} 437 38proc json_remove_test {testnum path result} {39  do_execsql_test json105-2.$testnum "SELECT quote(json_remove(j,$path)) FROM t1" $result40}41json_remove_test 10 {'$.b[#]'}    {'{"a":1,"b":[1,[2,3],4],"c":99}'}42json_remove_test 20 {'$.b[#-0]'}  {'{"a":1,"b":[1,[2,3],4],"c":99}'}43json_remove_test 30 {'$.b[#-1]'}  {'{"a":1,"b":[1,[2,3]],"c":99}'}44json_remove_test 40 {'$.b[#-2]'}  {'{"a":1,"b":[1,4],"c":99}'}45json_remove_test 50 {'$.b[#-3]'}  {'{"a":1,"b":[[2,3],4],"c":99}'}46json_remove_test 60 {'$.b[#-4]'}  {'{"a":1,"b":[1,[2,3],4],"c":99}'}47json_remove_test 70 {'$.b[#-2][#-1]'}  {'{"a":1,"b":[1,[2],4],"c":99}'}48 49json_remove_test 100 {'$.b[0]','$.b[#-1]'} {'{"a":1,"b":[[2,3]],"c":99}'}50json_remove_test 110 {'$.b[#-1]','$.b[0]'} {'{"a":1,"b":[[2,3]],"c":99}'}51json_remove_test 120 {'$.b[#-1]','$.b[#-2]'} {'{"a":1,"b":[[2,3]],"c":99}'}52json_remove_test 130 {'$.b[#-1]','$.b[#-1]'} {'{"a":1,"b":[1],"c":99}'}53json_remove_test 140 {'$.b[#-2]','$.b[#-1]'} {'{"a":1,"b":[1],"c":99}'}54 55proc json_insert_test {testnum x result} {56  do_execsql_test json105-3.$testnum "SELECT quote(json_insert(j,$x)) FROM t1" $result57}58json_insert_test 10 {'$.b[#]','AAA'} {'{"a":1,"b":[1,[2,3],4,"AAA"],"c":99}'}59json_insert_test 20 {'$.b[1][#]','AAA'} {'{"a":1,"b":[1,[2,3,"AAA"],4],"c":99}'}60json_insert_test 30 {'$.b[1][#]','AAA','$.b[#]','BBB'} \61     {'{"a":1,"b":[1,[2,3,"AAA"],4,"BBB"],"c":99}'}62json_insert_test 40 {'$.b[#]','AAA','$.b[#]','BBB'} \63     {'{"a":1,"b":[1,[2,3],4,"AAA","BBB"],"c":99}'}64 65proc json_set_test {testnum x result} {66  do_execsql_test json105-4.$testnum "SELECT quote(json_set(j,$x)) FROM t1" $result67}68json_set_test 10 {'$.b[#]','AAA'} {'{"a":1,"b":[1,[2,3],4,"AAA"],"c":99}'}69json_set_test 20 {'$.b[1][#]','AAA'} {'{"a":1,"b":[1,[2,3,"AAA"],4],"c":99}'}70json_set_test 30 {'$.b[1][#]','AAA','$.b[#]','BBB'} \71     {'{"a":1,"b":[1,[2,3,"AAA"],4,"BBB"],"c":99}'}72json_set_test 40 {'$.b[#]','AAA','$.b[#]','BBB'} \73     {'{"a":1,"b":[1,[2,3],4,"AAA","BBB"],"c":99}'}74json_set_test 50 {'$.b[#-1]','AAA'} {'{"a":1,"b":[1,[2,3],"AAA"],"c":99}'}75json_set_test 60 {'$.b[1][#-1]','AAA'} {'{"a":1,"b":[1,[2,"AAA"],4],"c":99}'}76json_set_test 70 {'$.b[1][#-1]','AAA','$.b[#-1]','BBB'} \77     {'{"a":1,"b":[1,[2,"AAA"],"BBB"],"c":99}'}78json_set_test 80 {'$.b[#-1]','AAA','$.b[#-1]','BBB'} \79     {'{"a":1,"b":[1,[2,3],"BBB"],"c":99}'}80 81proc json_replace_test {testnum x result} {82  do_execsql_test json105-5.$testnum "SELECT quote(json_replace(j,$x)) FROM t1" $result83}84json_replace_test 10 {'$.b[#]','AAA'} {'{"a":1,"b":[1,[2,3],4],"c":99}'}85json_replace_test 20 {'$.b[1][#]','AAA'} {'{"a":1,"b":[1,[2,3],4],"c":99}'}86json_replace_test 30 {'$.b[1][#]','AAA','$.b[#]','BBB'} \87     {'{"a":1,"b":[1,[2,3],4],"c":99}'}88json_replace_test 40 {'$.b[#]','AAA','$.b[#]','BBB'} \89     {'{"a":1,"b":[1,[2,3],4],"c":99}'}90json_replace_test 50 {'$.b[#-1]','AAA'} {'{"a":1,"b":[1,[2,3],"AAA"],"c":99}'}91json_replace_test 60 {'$.b[1][#-1]','AAA'} {'{"a":1,"b":[1,[2,"AAA"],4],"c":99}'}92json_replace_test 70 {'$.b[1][#-1]','AAA','$.b[#-1]','BBB'} \93     {'{"a":1,"b":[1,[2,"AAA"],"BBB"],"c":99}'}94json_replace_test 80 {'$.b[#-1]','AAA','$.b[#-1]','BBB'} \95     {'{"a":1,"b":[1,[2,3],"BBB"],"c":99}'}96 97do_catchsql_test json105-6.10 {98  SELECT json_extract(j, '$.b[#-]') FROM t1;99} {1 {bad JSON path: '$.b[#-]'}}100do_catchsql_test json105-6.20 {101  SELECT json_extract(j, '$.b[#9]') FROM t1;102} {1 {bad JSON path: '$.b[#9]'}}103do_catchsql_test json105-6.30 {104  SELECT json_extract(j, '$.b[#+2]') FROM t1;105} {1 {bad JSON path: '$.b[#+2]'}}106do_catchsql_test json105-6.40 {107  SELECT json_extract(j, '$.b[#-1') FROM t1;108} {1 {bad JSON path: '$.b[#-1'}}109do_catchsql_test json105-6.50 {110  SELECT json_extract(j, '$.b[#-1x]') FROM t1;111} {1 {bad JSON path: '$.b[#-1x]'}}112 113finish_test114