Files
turso/testing/math.test
2024-12-11 15:38:21 -05:00

364 lines
6.6 KiB
Tcl

#!/usr/bin/env tclsh
set testdir [file dirname $argv0]
source $testdir/tester.tcl
do_execsql_test add-int {
SELECT 10 + 1
} {11}
do_execsql_test add-float {
SELECT 10.1 + 0.3
} {10.4}
do_execsql_test add-int-float {
SELECT 10 + 0.1
} {10.1}
do_execsql_test add-agg-int-agg-int {
SELECT sum(1) + sum(2)
} {3}
do_execsql_test add-agg-int-agg-float {
SELECT sum(1) + sum(2.5)
} {3.5}
do_execsql_test add-agg-float-agg-int {
SELECT sum(1.5) + sum(2)
} {3.5}
do_execsql_test subtract-int {
SELECT 10 - 1
} {9}
do_execsql_test subtract-float {
SELECT 10.2 - 0.1
} {10.1}
do_execsql_test subtract-int-float {
SELECT 10 - 0.1
} {9.9}
do_execsql_test subtract-agg-int-agg-int {
SELECT sum(3) - sum(1)
} {2}
do_execsql_test subtract-agg-int-agg-float {
SELECT sum(3) - sum(1.5)
} {1.5}
do_execsql_test subtract-agg-float-agg-int {
SELECT sum(3.5) - sum(1)
} {2.5}
do_execsql_test multiply-int {
SELECT 10 * 2
} {20}
do_execsql_test multiply-float {
SELECT 10.2 * 2.2
} {22.44}
do_execsql_test multiply-int-float {
SELECT 10 * 1.45
} {14.5}
do_execsql_test multiply-float-int {
SELECT 1.45 * 10
} {14.5}
do_execsql_test multiply-agg-int-agg-int {
SELECT sum(2) * sum(3)
} {6}
do_execsql_test multiply-agg-int-agg-float {
SELECT sum(2) * sum(3.5)
} {7.0}
do_execsql_test multiply-agg-float-agg-int {
SELECT sum(2.5) * sum(3)
} {7.5}
do_execsql_test divide-int {
SELECT 10 / 2
} {5}
do_execsql_test divide-int-no-fraction {
SELECT 10 / 3
} {3}
do_execsql_test divide-float {
SELECT 10.6 / 2.5
} {4.24}
do_execsql_test divide-int-float {
SELECT 10 / 4.0
} {2.5}
do_execsql_test divide-float-int {
SELECT 10.0 / 4
} {2.5}
do_execsql_test divide-by-zero {
SELECT 10 / 0
} {}
do_execsql_test divide-int-null {
SELECT 10 / null
} {}
do_execsql_test divide-null-int {
SELECT null / 10
} {}
do_execsql_test divide-null {
SELECT null / null
} {}
do_execsql_test divide-agg-int-agg-int {
SELECT sum(4) / sum(2)
} {2}
do_execsql_test divide-agg-int-agg-float {
SELECT sum(4) / sum(2.0)
} {2.0}
do_execsql_test divide-agg-float-agg-int {
SELECT sum(4.0) / sum(2)
} {2.0}
do_execsql_test add-agg-int {
SELECT sum(id) + 10 from products
} {76}
do_execsql_test add-int-agg {
SELECT 10 + sum(id) from products
} {76}
do_execsql_test add-agg-float {
SELECT sum(id) + 10.1 from products
} {76.1}
do_execsql_test add-float-agg {
SELECT 10.1 + sum(id) from products
} {76.1}
do_execsql_test add-agg-int-agg-int {
SELECT sum(id) + sum(id) from products
} {132}
do_execsql_test add-agg-float-agg-float {
SELECT sum(price) + sum(price) from products
} {1246.0}
do_execsql_test add-agg-int-agg-float {
SELECT sum(id) + sum(price) from products
} {689.0}
do_execsql_test add-agg-int-agg-float {
SELECT sum(id) + sum(price) from products
} {689.0}
do_execsql_test subtract-agg-int {
SELECT sum(id) - 10 from products
} {56}
do_execsql_test subtract-int-agg {
SELECT 10 - sum(id) from products
} {-56}
do_execsql_test subtract-agg-float {
SELECT sum(id) - 10.1 from products
} {55.9}
do_execsql_test subtract-float-agg {
SELECT 10.1 - sum(id) from products
} {-55.9}
do_execsql_test subtract-agg-int-agg-int {
SELECT sum(id) - sum(id) from products
} {0}
do_execsql_test subtract-agg-float-agg-float {
SELECT sum(price) - sum(price) from products
} {0.0}
do_execsql_test subtract-agg-int-agg-float {
SELECT sum(id) - sum(price) from products
} {-557.0}
do_execsql_test subtract-agg-float-agg-int {
SELECT sum(price) - sum(id) from products
} {557.0}
do_execsql_test multiply-agg-int {
SELECT sum(id) * 10 from products
} {660}
do_execsql_test multiply-int-agg {
SELECT 10 * sum(id) from products
} {660}
do_execsql_test multiply-agg-float {
SELECT sum(id) * 10.1 from products
} {666.6}
do_execsql_test multiply-float-agg {
SELECT 10.1 * sum(id) from products
} {666.6}
do_execsql_test multiply-agg-int-agg-int {
SELECT sum(id) * sum(id) from products
} {4356}
do_execsql_test multiply-agg-float-agg-float {
SELECT sum(price) * sum(price) from products
} {388129.0}
do_execsql_test multiply-agg-int-agg-float {
SELECT sum(id) * sum(price) from products
} {41118.0}
do_execsql_test multiply-agg-float-agg-int {
SELECT sum(price) * sum(id) from products
} {41118.0}
do_execsql_test divide-agg-int {
SELECT sum(id) / 10 from products
} {6}
do_execsql_test divide-int-agg {
SELECT 660 / sum(id) from products
} {10}
do_execsql_test divide-agg-float {
SELECT sum(id) / 1.5 from products
} {44.0}
do_execsql_test divide-float-agg {
SELECT 66.0 / sum(id) from products
} {1.0}
do_execsql_test divide-agg-int-agg-int {
SELECT sum(id) / sum(id) from products
} {1}
do_execsql_test divide-agg-float-agg-float {
SELECT sum(price) / sum(price) from products
} {1.0}
do_execsql_test divide-agg-int-agg-float {
SELECT sum(id) / min(price) from products
} {66.0}
do_execsql_test divide-agg-float-agg-int {
SELECT min(price) / min(id) from products
} {1.0}
do_execsql_test bitwise-and-int-null {
SELECT 1234 & NULL
} {}
do_execsql_test bitwise-and-int-int {
SELECT 1234 & 1234
} {1234}
do_execsql_test bitwise-and-int-float {
SELECT 660 & 261.8
} {4}
do_execsql_test bitwise-and-float-float {
SELECT 660.63 & 261.8
} {4}
do_execsql_test bitwise-and-float-int-rev {
SELECT 261.8 & 660
} {4}
do_execsql_test bitwise-and-int-agg-int {
SELECT 8261 & sum(id) from products
} {64}
do_execsql_test bitwise-and-int-agg-float {
SELECT 1036.6 & sum(id) from products
} {0}
do_execsql_test bitwise-and-int-agg-int-agg {
SELECT sum(id) & sum(id) from products
} {66}
do_execsql_test bitwise-or-int-null {
SELECT 1234 | NULL
} {}
do_execsql_test bitwise-or-null-int {
SELECT NULL | 1234
} {}
do_execsql_test bitwise-or-int-int {
SELECT 4321 | 1234
} {5363}
do_execsql_test bitwise-or-int-float {
SELECT 660 | 1234.0
} {1750}
do_execsql_test bitwise-or-int-agg {
SELECT 18823 | sum(id) from products
} {18887}
do_execsql_test bitwise-or-float-float {
SELECT 1234.6 | 5432.2
} {5626}
do_execsql_test bitwise-and-int-agg-int-agg {
SELECT sum(id) | sum(id) from products
} {66}
do_execsql_test bitwise-not-null {
SELECT ~NULL
} {}
do_execsql_test bitwise-not-int {
SELECT ~1234
} {-1235}
do_execsql_test bitwise-not-float {
SELECT ~823.34
} {-824}
do_execsql_test bitwise-not-scalar-float {
SELECT ~abs(693.9)
} {-694}
do_execsql_test bitwise-not-scalar-int {
SELECT ~abs(7566)
} {-7567}
do_execsql_test bitwise-not-agg-int {
SELECT ~sum(693)
} {-694}
do_execsql_test bitwise-not-agg-and-agg {
SELECT ~sum(693) & sum(-302)
} {-958}
do_execsql_test bitwise-not-agg-int {
SELECT ~sum(693)
} {-694}
do_execsql_test bitwise-not-zero {
SELECT ~0
} {-1}