Files
turso/testing/scalar-functions.test
Pekka Enberg 0c703a228d testing: Make individual test files executable
Each test file is standalone to make it easy to run just some specific
tests. However, some of the files didn't have the executable bit.
2024-07-29 09:41:40 +03:00

341 lines
6.1 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);
} {}
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 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 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);
} {}