OLD | NEW |
1 # 2015-08-12 | 1 # 2015-08-12 |
2 # | 2 # |
3 # The author disclaims copyright to this source code. In place of | 3 # The author disclaims copyright to this source code. In place of |
4 # a legal notice, here is a blessing: | 4 # a legal notice, here is a blessing: |
5 # | 5 # |
6 # May you do good and not evil. | 6 # May you do good and not evil. |
7 # May you find forgiveness for yourself and forgive others. | 7 # May you find forgiveness for yourself and forgive others. |
8 # May you share freely, never taking more than you give. | 8 # May you share freely, never taking more than you give. |
9 # | 9 # |
10 #*********************************************************************** | 10 #*********************************************************************** |
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 7.5 0 char(0x0C) | 335 7.5 0 char(0x0C) |
336 7.6 1 char(0x20,0x09,0x0a,0x0d,0x20) | 336 7.6 1 char(0x20,0x09,0x0a,0x0d,0x20) |
337 7.7 0 char(0x20,0x09,0x0a,0x0c,0x0d,0x20) | 337 7.7 0 char(0x20,0x09,0x0a,0x0c,0x0d,0x20) |
338 } { | 338 } { |
339 do_execsql_test json-$tn.1 \ | 339 do_execsql_test json-$tn.1 \ |
340 "SELECT json_valid(printf('%s{%s\"x\"%s:%s9%s}%s', | 340 "SELECT json_valid(printf('%s{%s\"x\"%s:%s9%s}%s', |
341 $::ws,$::ws,$::ws,$::ws,$::ws,$::ws));" \ | 341 $::ws,$::ws,$::ws,$::ws,$::ws,$::ws));" \ |
342 $isvalid | 342 $isvalid |
343 } | 343 } |
344 | 344 |
| 345 # Ticket https://www.sqlite.org/src/info/ad2559db380abf8e |
| 346 # Control characters must be escaped in JSON strings. |
| 347 # |
| 348 do_execsql_test json-8.1 { |
| 349 DROP TABLE IF EXISTS t8; |
| 350 CREATE TABLE t8(a,b); |
| 351 INSERT INTO t8(a) VALUES('abc' || char(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,
17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35) || 'xyz'); |
| 352 UPDATE t8 SET b=json_array(a); |
| 353 SELECT b FROM t8; |
| 354 } {{["abc\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\
u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u0
01d\u001e\u001f !\"#xyz"]}} |
| 355 do_execsql_test json-8.2 { |
| 356 SELECT a=json_extract(b,'$[0]') FROM t8; |
| 357 } {1} |
| 358 |
| 359 # The json_quote() function transforms an SQL value into a JSON value. |
| 360 # String values are quoted and interior quotes are escaped. NULL values |
| 361 # are rendered as the unquoted string "null". |
| 362 # |
| 363 do_execsql_test json-9.1 { |
| 364 SELECT json_quote('abc"xyz'); |
| 365 } {{"abc\"xyz"}} |
| 366 do_execsql_test json-9.2 { |
| 367 SELECT json_quote(3.14159); |
| 368 } {3.14159} |
| 369 do_execsql_test json-9.3 { |
| 370 SELECT json_quote(12345); |
| 371 } {12345} |
| 372 do_execsql_test json-9.4 { |
| 373 SELECT json_quote(null); |
| 374 } {"null"} |
| 375 do_catchsql_test json-9.5 { |
| 376 SELECT json_quote(x'30313233'); |
| 377 } {1 {JSON cannot hold BLOB values}} |
| 378 do_catchsql_test json-9.6 { |
| 379 SELECT json_quote(123,456) |
| 380 } {1 {wrong number of arguments to function json_quote()}} |
| 381 do_catchsql_test json-9.7 { |
| 382 SELECT json_quote() |
| 383 } {1 {wrong number of arguments to function json_quote()}} |
| 384 |
| 385 # Make sure only valid backslash-escapes are accepted. |
| 386 # |
| 387 do_execsql_test json-10.1 { |
| 388 SELECT json_valid('" \ "'); |
| 389 } {0} |
| 390 do_execsql_test json-10.2 { |
| 391 SELECT json_valid('" \! "'); |
| 392 } {0} |
| 393 do_execsql_test json-10.3 { |
| 394 SELECT json_valid('" \" "'); |
| 395 } {1} |
| 396 do_execsql_test json-10.4 { |
| 397 SELECT json_valid('" \# "'); |
| 398 } {0} |
| 399 do_execsql_test json-10.5 { |
| 400 SELECT json_valid('" \$ "'); |
| 401 } {0} |
| 402 do_execsql_test json-10.6 { |
| 403 SELECT json_valid('" \% "'); |
| 404 } {0} |
| 405 do_execsql_test json-10.7 { |
| 406 SELECT json_valid('" \& "'); |
| 407 } {0} |
| 408 do_execsql_test json-10.8 { |
| 409 SELECT json_valid('" \'' "'); |
| 410 } {0} |
| 411 do_execsql_test json-10.9 { |
| 412 SELECT json_valid('" \( "'); |
| 413 } {0} |
| 414 do_execsql_test json-10.10 { |
| 415 SELECT json_valid('" \) "'); |
| 416 } {0} |
| 417 do_execsql_test json-10.11 { |
| 418 SELECT json_valid('" \* "'); |
| 419 } {0} |
| 420 do_execsql_test json-10.12 { |
| 421 SELECT json_valid('" \+ "'); |
| 422 } {0} |
| 423 do_execsql_test json-10.13 { |
| 424 SELECT json_valid('" \, "'); |
| 425 } {0} |
| 426 do_execsql_test json-10.14 { |
| 427 SELECT json_valid('" \- "'); |
| 428 } {0} |
| 429 do_execsql_test json-10.15 { |
| 430 SELECT json_valid('" \. "'); |
| 431 } {0} |
| 432 do_execsql_test json-10.16 { |
| 433 SELECT json_valid('" \/ "'); |
| 434 } {1} |
| 435 do_execsql_test json-10.17 { |
| 436 SELECT json_valid('" \0 "'); |
| 437 } {0} |
| 438 do_execsql_test json-10.18 { |
| 439 SELECT json_valid('" \1 "'); |
| 440 } {0} |
| 441 do_execsql_test json-10.19 { |
| 442 SELECT json_valid('" \2 "'); |
| 443 } {0} |
| 444 do_execsql_test json-10.20 { |
| 445 SELECT json_valid('" \3 "'); |
| 446 } {0} |
| 447 do_execsql_test json-10.21 { |
| 448 SELECT json_valid('" \4 "'); |
| 449 } {0} |
| 450 do_execsql_test json-10.22 { |
| 451 SELECT json_valid('" \5 "'); |
| 452 } {0} |
| 453 do_execsql_test json-10.23 { |
| 454 SELECT json_valid('" \6 "'); |
| 455 } {0} |
| 456 do_execsql_test json-10.24 { |
| 457 SELECT json_valid('" \7 "'); |
| 458 } {0} |
| 459 do_execsql_test json-10.25 { |
| 460 SELECT json_valid('" \8 "'); |
| 461 } {0} |
| 462 do_execsql_test json-10.26 { |
| 463 SELECT json_valid('" \9 "'); |
| 464 } {0} |
| 465 do_execsql_test json-10.27 { |
| 466 SELECT json_valid('" \: "'); |
| 467 } {0} |
| 468 do_execsql_test json-10.28 { |
| 469 SELECT json_valid('" \; "'); |
| 470 } {0} |
| 471 do_execsql_test json-10.29 { |
| 472 SELECT json_valid('" \< "'); |
| 473 } {0} |
| 474 do_execsql_test json-10.30 { |
| 475 SELECT json_valid('" \= "'); |
| 476 } {0} |
| 477 do_execsql_test json-10.31 { |
| 478 SELECT json_valid('" \> "'); |
| 479 } {0} |
| 480 do_execsql_test json-10.32 { |
| 481 SELECT json_valid('" \? "'); |
| 482 } {0} |
| 483 do_execsql_test json-10.33 { |
| 484 SELECT json_valid('" \@ "'); |
| 485 } {0} |
| 486 do_execsql_test json-10.34 { |
| 487 SELECT json_valid('" \A "'); |
| 488 } {0} |
| 489 do_execsql_test json-10.35 { |
| 490 SELECT json_valid('" \B "'); |
| 491 } {0} |
| 492 do_execsql_test json-10.36 { |
| 493 SELECT json_valid('" \C "'); |
| 494 } {0} |
| 495 do_execsql_test json-10.37 { |
| 496 SELECT json_valid('" \D "'); |
| 497 } {0} |
| 498 do_execsql_test json-10.38 { |
| 499 SELECT json_valid('" \E "'); |
| 500 } {0} |
| 501 do_execsql_test json-10.39 { |
| 502 SELECT json_valid('" \F "'); |
| 503 } {0} |
| 504 do_execsql_test json-10.40 { |
| 505 SELECT json_valid('" \G "'); |
| 506 } {0} |
| 507 do_execsql_test json-10.41 { |
| 508 SELECT json_valid('" \H "'); |
| 509 } {0} |
| 510 do_execsql_test json-10.42 { |
| 511 SELECT json_valid('" \I "'); |
| 512 } {0} |
| 513 do_execsql_test json-10.43 { |
| 514 SELECT json_valid('" \J "'); |
| 515 } {0} |
| 516 do_execsql_test json-10.44 { |
| 517 SELECT json_valid('" \K "'); |
| 518 } {0} |
| 519 do_execsql_test json-10.45 { |
| 520 SELECT json_valid('" \L "'); |
| 521 } {0} |
| 522 do_execsql_test json-10.46 { |
| 523 SELECT json_valid('" \M "'); |
| 524 } {0} |
| 525 do_execsql_test json-10.47 { |
| 526 SELECT json_valid('" \N "'); |
| 527 } {0} |
| 528 do_execsql_test json-10.48 { |
| 529 SELECT json_valid('" \O "'); |
| 530 } {0} |
| 531 do_execsql_test json-10.49 { |
| 532 SELECT json_valid('" \P "'); |
| 533 } {0} |
| 534 do_execsql_test json-10.50 { |
| 535 SELECT json_valid('" \Q "'); |
| 536 } {0} |
| 537 do_execsql_test json-10.51 { |
| 538 SELECT json_valid('" \R "'); |
| 539 } {0} |
| 540 do_execsql_test json-10.52 { |
| 541 SELECT json_valid('" \S "'); |
| 542 } {0} |
| 543 do_execsql_test json-10.53 { |
| 544 SELECT json_valid('" \T "'); |
| 545 } {0} |
| 546 do_execsql_test json-10.54 { |
| 547 SELECT json_valid('" \U "'); |
| 548 } {0} |
| 549 do_execsql_test json-10.55 { |
| 550 SELECT json_valid('" \V "'); |
| 551 } {0} |
| 552 do_execsql_test json-10.56 { |
| 553 SELECT json_valid('" \W "'); |
| 554 } {0} |
| 555 do_execsql_test json-10.57 { |
| 556 SELECT json_valid('" \X "'); |
| 557 } {0} |
| 558 do_execsql_test json-10.58 { |
| 559 SELECT json_valid('" \Y "'); |
| 560 } {0} |
| 561 do_execsql_test json-10.59 { |
| 562 SELECT json_valid('" \Z "'); |
| 563 } {0} |
| 564 do_execsql_test json-10.60 { |
| 565 SELECT json_valid('" \[ "'); |
| 566 } {0} |
| 567 do_execsql_test json-10.61 { |
| 568 SELECT json_valid('" \\ "'); |
| 569 } {1} |
| 570 do_execsql_test json-10.62 { |
| 571 SELECT json_valid('" \] "'); |
| 572 } {0} |
| 573 do_execsql_test json-10.63 { |
| 574 SELECT json_valid('" \^ "'); |
| 575 } {0} |
| 576 do_execsql_test json-10.64 { |
| 577 SELECT json_valid('" \_ "'); |
| 578 } {0} |
| 579 do_execsql_test json-10.65 { |
| 580 SELECT json_valid('" \` "'); |
| 581 } {0} |
| 582 do_execsql_test json-10.66 { |
| 583 SELECT json_valid('" \a "'); |
| 584 } {0} |
| 585 do_execsql_test json-10.67 { |
| 586 SELECT json_valid('" \b "'); |
| 587 } {1} |
| 588 do_execsql_test json-10.68 { |
| 589 SELECT json_valid('" \c "'); |
| 590 } {0} |
| 591 do_execsql_test json-10.69 { |
| 592 SELECT json_valid('" \d "'); |
| 593 } {0} |
| 594 do_execsql_test json-10.70 { |
| 595 SELECT json_valid('" \e "'); |
| 596 } {0} |
| 597 do_execsql_test json-10.71 { |
| 598 SELECT json_valid('" \f "'); |
| 599 } {1} |
| 600 do_execsql_test json-10.72 { |
| 601 SELECT json_valid('" \g "'); |
| 602 } {0} |
| 603 do_execsql_test json-10.73 { |
| 604 SELECT json_valid('" \h "'); |
| 605 } {0} |
| 606 do_execsql_test json-10.74 { |
| 607 SELECT json_valid('" \i "'); |
| 608 } {0} |
| 609 do_execsql_test json-10.75 { |
| 610 SELECT json_valid('" \j "'); |
| 611 } {0} |
| 612 do_execsql_test json-10.76 { |
| 613 SELECT json_valid('" \k "'); |
| 614 } {0} |
| 615 do_execsql_test json-10.77 { |
| 616 SELECT json_valid('" \l "'); |
| 617 } {0} |
| 618 do_execsql_test json-10.78 { |
| 619 SELECT json_valid('" \m "'); |
| 620 } {0} |
| 621 do_execsql_test json-10.79 { |
| 622 SELECT json_valid('" \n "'); |
| 623 } {1} |
| 624 do_execsql_test json-10.80 { |
| 625 SELECT json_valid('" \o "'); |
| 626 } {0} |
| 627 do_execsql_test json-10.81 { |
| 628 SELECT json_valid('" \p "'); |
| 629 } {0} |
| 630 do_execsql_test json-10.82 { |
| 631 SELECT json_valid('" \q "'); |
| 632 } {0} |
| 633 do_execsql_test json-10.83 { |
| 634 SELECT json_valid('" \r "'); |
| 635 } {1} |
| 636 do_execsql_test json-10.84 { |
| 637 SELECT json_valid('" \s "'); |
| 638 } {0} |
| 639 do_execsql_test json-10.85 { |
| 640 SELECT json_valid('" \t "'); |
| 641 } {1} |
| 642 do_execsql_test json-10.86.0 { |
| 643 SELECT json_valid('" \u "'); |
| 644 } {0} |
| 645 do_execsql_test json-10.86.1 { |
| 646 SELECT json_valid('" \ua "'); |
| 647 } {0} |
| 648 do_execsql_test json-10.86.2 { |
| 649 SELECT json_valid('" \uab "'); |
| 650 } {0} |
| 651 do_execsql_test json-10.86.3 { |
| 652 SELECT json_valid('" \uabc "'); |
| 653 } {0} |
| 654 do_execsql_test json-10.86.4 { |
| 655 SELECT json_valid('" \uabcd "'); |
| 656 } {1} |
| 657 do_execsql_test json-10.86.5 { |
| 658 SELECT json_valid('" \uFEDC "'); |
| 659 } {1} |
| 660 do_execsql_test json-10.86.6 { |
| 661 SELECT json_valid('" \u1234 "'); |
| 662 } {1} |
| 663 do_execsql_test json-10.87 { |
| 664 SELECT json_valid('" \v "'); |
| 665 } {0} |
| 666 do_execsql_test json-10.88 { |
| 667 SELECT json_valid('" \w "'); |
| 668 } {0} |
| 669 do_execsql_test json-10.89 { |
| 670 SELECT json_valid('" \x "'); |
| 671 } {0} |
| 672 do_execsql_test json-10.90 { |
| 673 SELECT json_valid('" \y "'); |
| 674 } {0} |
| 675 do_execsql_test json-10.91 { |
| 676 SELECT json_valid('" \z "'); |
| 677 } {0} |
| 678 do_execsql_test json-10.92 { |
| 679 SELECT json_valid('" \{ "'); |
| 680 } {0} |
| 681 do_execsql_test json-10.93 { |
| 682 SELECT json_valid('" \| "'); |
| 683 } {0} |
| 684 do_execsql_test json-10.94 { |
| 685 SELECT json_valid('" \} "'); |
| 686 } {0} |
| 687 do_execsql_test json-10.95 { |
| 688 SELECT json_valid('" \~ "'); |
| 689 } {0} |
| 690 |
| 691 |
345 finish_test | 692 finish_test |
OLD | NEW |