CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
literal.test104 linesDownload Raw Back to test
1# 2024-01-192#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#12# This file implements tests for SQL literals13 14 15set testdir [file dirname $argv0]16source $testdir/tester.tcl17set ::testprefix literal18 19proc test_literal {tn lit type val} {20  do_execsql_test $tn.1 "SELECT typeof( $lit ), $lit" [list $type $val]21 22  ifcapable altertable {23    do_execsql_test $tn.2 "24      DROP TABLE IF EXISTS x1;25      CREATE TABLE x1(a);26      INSERT INTO x1 VALUES(123);27      ALTER TABLE x1 ADD COLUMN b DEFAULT $lit ;28      SELECT typeof(b), b FROM x1;29    " [list $type $val]30  }31 32  do_execsql_test $tn.3 "33    DROP TABLE IF EXISTS x1;34    CREATE TABLE x1(a DEFAULT $lit);35    INSERT INTO x1 DEFAULT VALUES;36    SELECT typeof(a), a FROM x1;37  " [list $type $val]38}39 40proc test_literal_error {tn lit unrec} {41  do_catchsql_test $tn "SELECT $lit" "1 {unrecognized token: \"$unrec\"}"42}43 44 45test_literal 1.0 45                  integer 4546test_literal 1.1 0xFF                integer 25547test_literal 1.2 0xFFFFFFFF          integer [expr 0xFFFFFFFF]48test_literal 1.3 0x123FFFFFFFF       integer [expr 0x123FFFFFFFF]49test_literal 1.4 -0x123FFFFFFFF      integer [expr -1 * 0x123FFFFFFFF]50test_literal 1.5 0xFFFFFFFFFFFFFFFF  integer -151test_literal 1.7 0x7FFFFFFFFFFFFFFF  integer  [expr 0x7FFFFFFFFFFFFFFF]52test_literal 1.8 -0x7FFFFFFFFFFFFFFF integer [expr -0x7FFFFFFFFFFFFFFF]53test_literal 1.9 +0x7FFFFFFFFFFFFFFF integer [expr +0x7FFFFFFFFFFFFFFF]54test_literal 1.10 -45                integer -4555test_literal 1.11 '0xFF'             text 0xFF56test_literal 1.12 '-0xFF'            text -0xFF57test_literal 1.13 -'0xFF'            integer 058test_literal 1.14 -9223372036854775808 integer -922337203685477580859 60test_literal 2.1  1e12    real    1000000000000.061test_literal 2.2  1.0     real    1.062test_literal 2.3  1e1000  real    Inf63test_literal 2.4  -1e1000  real   -Inf64 65test_literal 3.1  1_000   integer 100066test_literal 3.2  1.1_1   real    1.1167test_literal 3.3  1_0.1_1 real    10.1168test_literal 3.4  1e1_000 real    Inf69test_literal 3.5  12_3_456.7_8_9 real 123456.78970test_literal 3.6  9_223_372_036_854_775_807 integer 922337203685477580771test_literal 3.7  9_223_372_036_854_775_808 real 9.22337203685478e+1872test_literal 3.8  -9_223_372_036_854_775_808 integer -922337203685477580873 74foreach {tn lit unrec} {75  0    123a456       123a45676  1    1_            1_77  2    1_.4          1_.478  3    1e_4          1e_479  4    1_e4          1_e480  5    1.4_e4        1.4_e481  6    1.4e+_4       1.4e82  7    1.4e-_4       1.4e83  8    1.4e4_        1.4e4_84  9    1.4_e4        1.4_e485  10   1.4e_4        1.4e_486  11   12__34        12__3487  12   1234_         1234_88  13   12._34        12._3489  14   12_.34        12_.3490  15   12.34_        12.34_91  16   1.0e1_______2 1.0e1_______2 92} {93  test_literal_error 4.$tn $lit $unrec94}95 96# dbsqlfuzz e3186a9e7826e9cd7f4085aa4452f8696485f9e197# See tag-20240224-a and -b98#99do_catchsql_test 5.1 {100  SELECT 1 ORDER BY 2_3;101} {1 {1st ORDER BY term out of range - should be between 1 and 1}}102 103finish_test104