mirror of
https://github.com/tursodatabase/limbo.git
synced 2025-08-03 17:48:17 +00:00
451 lines
8.4 KiB
Tcl
Executable file
451 lines
8.4 KiB
Tcl
Executable file
#!/usr/bin/env tclsh
|
|
|
|
set testdir [file dirname $argv0]
|
|
source $testdir/tester.tcl
|
|
|
|
do_execsql_test abs {
|
|
select abs(1);
|
|
} {1}
|
|
|
|
do_execsql_test abs-negative {
|
|
select abs(-1);
|
|
} {1}
|
|
|
|
do_execsql_test abs-char {
|
|
select abs('a');
|
|
} {0.0}
|
|
|
|
do_execsql_test abs-null {
|
|
select abs(null);
|
|
} {}
|
|
|
|
db null {}
|
|
|
|
do_execsql_test ifnull-1 {
|
|
select ifnull(1, 2);
|
|
} {1}
|
|
|
|
do_execsql_test ifnull-2 {
|
|
select ifnull(null, 2);
|
|
} {2}
|
|
|
|
do_execsql_test upper {
|
|
select upper('Limbo')
|
|
} {LIMBO}
|
|
|
|
do_execsql_test upper-number {
|
|
select upper(1)
|
|
} {1}
|
|
|
|
do_execsql_test upper-char {
|
|
select upper('a')
|
|
} {A}
|
|
|
|
do_execsql_test upper-null {
|
|
select upper(null)
|
|
} {}
|
|
|
|
do_execsql_test lower {
|
|
select lower('Limbo')
|
|
} {limbo}
|
|
|
|
do_execsql_test lower-number {
|
|
select lower(1)
|
|
} {1}
|
|
|
|
do_execsql_test lower-char {
|
|
select lower('A')
|
|
} {a}
|
|
|
|
do_execsql_test lower-null {
|
|
select lower(null)
|
|
} {}
|
|
|
|
do_execsql_test trim {
|
|
SELECT trim(' Limbo ');
|
|
} {Limbo}
|
|
|
|
do_execsql_test trim-number {
|
|
SELECT trim(1);
|
|
} {1}
|
|
|
|
do_execsql_test trim-null {
|
|
SELECT trim(null);
|
|
} {}
|
|
|
|
do_execsql_test trim-leading-whitespace {
|
|
SELECT trim(' Leading');
|
|
} {Leading}
|
|
|
|
do_execsql_test trim-trailing-whitespace {
|
|
SELECT trim('Trailing ');
|
|
} {Trailing}
|
|
|
|
do_execsql_test trim-pattern {
|
|
SELECT trim('Limbo', 'Limbo');
|
|
} {}
|
|
|
|
do_execsql_test trim-pattern-number {
|
|
SELECT trim(1, '1');
|
|
} {}
|
|
|
|
do_execsql_test trim-pattern-null {
|
|
SELECT trim(null, 'null');
|
|
} {}
|
|
|
|
do_execsql_test trim-no-match-pattern {
|
|
SELECT trim('Limbo', 'xyz');
|
|
} {Limbo}
|
|
|
|
do_execsql_test ltrim {
|
|
SELECT ltrim(' Limbo ');
|
|
} {"Limbo "}
|
|
|
|
do_execsql_test ltrim-number {
|
|
SELECT ltrim(1);
|
|
} {1}
|
|
|
|
do_execsql_test ltrim-null {
|
|
SELECT ltrim(null);
|
|
} {}
|
|
|
|
do_execsql_test ltrim-leading-whitespace {
|
|
SELECT ltrim(' Leading');
|
|
} {Leading}
|
|
|
|
do_execsql_test ltrim-no-leading-whitespace {
|
|
SELECT ltrim('Limbo');
|
|
} {Limbo}
|
|
|
|
do_execsql_test ltrim-pattern {
|
|
SELECT ltrim('Limbo', 'Limbo');
|
|
} {}
|
|
|
|
do_execsql_test ltrim-pattern-number {
|
|
SELECT ltrim(1, '1');
|
|
} {}
|
|
|
|
do_execsql_test ltrim-pattern-null {
|
|
SELECT ltrim(null, 'null');
|
|
} {}
|
|
|
|
do_execsql_test ltrim-no-match-pattern {
|
|
SELECT ltrim('Limbo', 'xyz');
|
|
} {Limbo}
|
|
|
|
do_execsql_test rtrim {
|
|
SELECT rtrim(' Limbo ');
|
|
} {" Limbo"}
|
|
|
|
do_execsql_test rtrim-number {
|
|
SELECT rtrim(1);
|
|
} {1}
|
|
|
|
do_execsql_test rtrim-null {
|
|
SELECT rtrim(null);
|
|
} {}
|
|
|
|
do_execsql_test rtrim-trailing-whitespace {
|
|
SELECT rtrim('Trailing ');
|
|
} {Trailing}
|
|
|
|
do_execsql_test rtrim-no-trailing-whitespace {
|
|
SELECT rtrim('Limbo');
|
|
} {Limbo}
|
|
|
|
do_execsql_test rtrim-pattern {
|
|
SELECT rtrim('Limbo', 'Limbo');
|
|
} {}
|
|
|
|
do_execsql_test rtrim-pattern-number {
|
|
SELECT rtrim(1, '1');
|
|
} {}
|
|
|
|
do_execsql_test rtrim-pattern-null {
|
|
SELECT rtrim(null, 'null');
|
|
} {}
|
|
|
|
do_execsql_test rtrim-no-match-pattern {
|
|
SELECT rtrim('Limbo', 'xyz');
|
|
} {Limbo}
|
|
|
|
do_execsql_test round-float-no-precision {
|
|
SELECT round(123.456);
|
|
} {123.0}
|
|
|
|
do_execsql_test round-float-with-precision {
|
|
SELECT round(123.456, 2);
|
|
} {123.46}
|
|
|
|
do_execsql_test round-float-with-text-precision {
|
|
SELECT round(123.5, '1');
|
|
} {123.5}
|
|
|
|
do_execsql_test round-text-parsable {
|
|
SELECT round('123.456', 2);
|
|
} {123.46}
|
|
|
|
do_execsql_test round-text-non-parsable {
|
|
SELECT round('abc', 1);
|
|
} {0.0}
|
|
|
|
do_execsql_test round-integer-with-precision {
|
|
SELECT round(123, 1);
|
|
} {123.0}
|
|
|
|
do_execsql_test round-float-negative-precision {
|
|
SELECT round(123.456, -1);
|
|
} {123.0}
|
|
|
|
do_execsql_test round-float-zero-precision {
|
|
SELECT round(123.456, 0);
|
|
} {123.0}
|
|
|
|
do_execsql_test round-null-precision {
|
|
SELECT round(123.456, null);
|
|
} {}
|
|
|
|
do_execsql_test length-text {
|
|
SELECT length('limbo');
|
|
} {5}
|
|
|
|
do_execsql_test length-integer {
|
|
SELECT length(12345);
|
|
} {5}
|
|
|
|
do_execsql_test length-float {
|
|
SELECT length(123.456);
|
|
} {7}
|
|
|
|
do_execsql_test length-null {
|
|
SELECT length(NULL);
|
|
} {}
|
|
|
|
do_execsql_test length-empty-text {
|
|
SELECT length('');
|
|
} {0}
|
|
|
|
do_execsql_test min-number {
|
|
select min(-10,2,3)
|
|
} {-10}
|
|
|
|
do_execsql_test min-str {
|
|
select min('b','a','z')
|
|
} {a}
|
|
|
|
do_execsql_test min-null {
|
|
select min(null,null)
|
|
} {}
|
|
|
|
do_execsql_test max-number {
|
|
select max(-10,2,3)
|
|
} {3}
|
|
|
|
do_execsql_test max-str {
|
|
select max('b','a','z')
|
|
} {z}
|
|
|
|
do_execsql_test max-null {
|
|
select max(null,null)
|
|
} {}
|
|
|
|
do_execsql_test substring-3-args {
|
|
SELECT substring('limbo', 1, 3);
|
|
} {lim}
|
|
|
|
do_execsql_test substring-3-args-exceed-length {
|
|
SELECT substring('limbo', 1, 10);
|
|
} {limbo}
|
|
|
|
do_execsql_test substring-3-args-start-exceed-length {
|
|
SELECT substring('limbo', 10, 3);
|
|
} {}
|
|
|
|
do_execsql_test substring-2-args {
|
|
SELECT substring('limbo', 3);
|
|
} {mbo}
|
|
|
|
do_execsql_test substring-2-args-exceed-length {
|
|
SELECT substring('limbo', 10);
|
|
} {}
|
|
|
|
do_execsql_test date-current-date {
|
|
SELECT length(date('now')) = 10;
|
|
} {1}
|
|
|
|
do_execsql_test date-specific-date {
|
|
SELECT date('2023-05-18');
|
|
} {2023-05-18}
|
|
|
|
do_execsql_test date-with-time {
|
|
SELECT date('2023-05-18 15:30:45');
|
|
} {2023-05-18}
|
|
|
|
do_execsql_test date-iso8601 {
|
|
SELECT date('2023-05-18T15:30:45');
|
|
} {2023-05-18}
|
|
|
|
do_execsql_test date-with-milliseconds {
|
|
SELECT date('2023-05-18 15:30:45.123');
|
|
} {2023-05-18}
|
|
|
|
do_execsql_test date-julian-day-integer {
|
|
SELECT date(2460082);
|
|
} {2023-05-17}
|
|
|
|
do_execsql_test date-julian-day-float {
|
|
SELECT date(2460082.5);
|
|
} {2023-05-18}
|
|
|
|
do_execsql_test date-invalid-input {
|
|
SELECT date('not a date');
|
|
} {{}}
|
|
|
|
do_execsql_test date-null-input {
|
|
SELECT date(NULL);
|
|
} {{}}
|
|
|
|
do_execsql_test date-out-of-range {
|
|
SELECT date('10001-01-01');
|
|
} {{}}
|
|
|
|
do_execsql_test date-time-only {
|
|
SELECT date('15:30:45');
|
|
} {2000-01-01}
|
|
|
|
do_execsql_test date-with-timezone-utc {
|
|
SELECT date('2023-05-18 15:30:45Z');
|
|
} {2023-05-18}
|
|
|
|
do_execsql_test date-with-timezone-positive {
|
|
SELECT date('2023-05-18 23:30:45+02:00');
|
|
} {2023-05-18}
|
|
|
|
do_execsql_test date-with-timezone-negative {
|
|
SELECT date('2023-05-19 01:30:45-05:00');
|
|
} {2023-05-19}
|
|
|
|
do_execsql_test date-with-timezone-day-change-positive {
|
|
SELECT date('2023-05-18 23:30:45-03:00');
|
|
} {2023-05-19}
|
|
|
|
do_execsql_test date-with-timezone-day-change-negative {
|
|
SELECT date('2023-05-19 01:30:45+03:00');
|
|
} {2023-05-18}
|
|
|
|
do_execsql_test date-with-timezone-iso8601 {
|
|
SELECT date('2023-05-18T15:30:45+02:00');
|
|
} {2023-05-18}
|
|
|
|
do_execsql_test date-with-timezone-and-milliseconds {
|
|
SELECT date('2023-05-18 15:30:45.123+02:00');
|
|
} {2023-05-18}
|
|
|
|
do_execsql_test date-with-invalid-timezone {
|
|
SELECT date('2023-05-18 15:30:45+25:00');
|
|
} {{}}
|
|
|
|
do_execsql_test time-no-arg {
|
|
SELECT length(time()) = 8;
|
|
} {1}
|
|
|
|
do_execsql_test time-current-time {
|
|
SELECT length(time('now')) = 8;
|
|
} {1}
|
|
|
|
do_execsql_test time-specific-time {
|
|
SELECT time('04:02:00');
|
|
} {04:02:00}
|
|
|
|
do_execsql_test time-of-datetime {
|
|
SELECT time('2023-05-18 15:30:45');
|
|
} {15:30:45}
|
|
|
|
do_execsql_test time-iso8601 {
|
|
SELECT time('2023-05-18T15:30:45');
|
|
} {15:30:45}
|
|
|
|
do_execsql_test time-with-milliseconds {
|
|
SELECT time('2023-05-18 15:30:45.123');
|
|
} {15:30:45}
|
|
|
|
do_execsql_test time-julian-day-integer {
|
|
SELECT time(2460082);
|
|
} {12:00:00}
|
|
|
|
do_execsql_test time-julian-day-float {
|
|
SELECT time(2460082.2);
|
|
} {16:48:00}
|
|
|
|
do_execsql_test time-invalid-input {
|
|
SELECT time('not a time');
|
|
} {{}}
|
|
|
|
do_execsql_test time-null-input {
|
|
SELECT time(NULL);
|
|
} {{}}
|
|
|
|
do_execsql_test time-out-of-range {
|
|
SELECT time('25:05:01');
|
|
} {{}}
|
|
|
|
do_execsql_test time-date-only {
|
|
SELECT time('2024-02-02');
|
|
} {00:00:00}
|
|
|
|
do_execsql_test time-with-timezone-utc {
|
|
SELECT time('2023-05-18 15:30:45Z');
|
|
} {15:30:45}
|
|
|
|
do_execsql_test time-with-timezone-positive {
|
|
SELECT time('2023-05-18 23:30:45+07:00');
|
|
} {16:30:45}
|
|
|
|
do_execsql_test time-with-timezone-negative {
|
|
SELECT time('2023-05-19 01:30:45-05:00');
|
|
} {06:30:45}
|
|
|
|
do_execsql_test time-with-timezone-day-change-positive {
|
|
SELECT time('2023-05-18 23:30:45-03:00');
|
|
} {02:30:45}
|
|
|
|
do_execsql_test time-with-timezone-day-change-negative {
|
|
SELECT time('2023-05-19 01:30:45+03:00');
|
|
} {22:30:45}
|
|
|
|
do_execsql_test time-with-timezone-iso8601 {
|
|
SELECT time('2023-05-18T15:30:45+02:00');
|
|
} {13:30:45}
|
|
|
|
do_execsql_test time-with-timezone-and-milliseconds {
|
|
SELECT time('2023-05-18 15:30:45.123+02:00');
|
|
} {13:30:45}
|
|
|
|
do_execsql_test time-with-invalid-timezone {
|
|
SELECT time('2023-05-18 15:30:45+25:00');
|
|
} {{}}
|
|
|
|
do_execsql_test unicode-a {
|
|
SELECT unicode('a');
|
|
} {97}
|
|
|
|
do_execsql_test unicode-emoji {
|
|
SELECT unicode('😊');
|
|
} {128522}
|
|
|
|
do_execsql_test unicode-empty {
|
|
SELECT unicode('');
|
|
} {}
|
|
|
|
do_execsql_test unicode-number {
|
|
SELECT unicode(23);
|
|
} {50}
|
|
|
|
do_execsql_test unicode-float {
|
|
SELECT unicode(23.45);
|
|
} {50}
|
|
|
|
do_execsql_test unicode-null {
|
|
SELECT unicode(NULL);
|
|
} {}
|
|
|