#!/usr/bin/env tclsh set sqlite_exec [expr {[info exists env(SQLITE_EXEC)] ? $env(SQLITE_EXEC) : "sqlite3"}] proc evaluate_sql {sqlite_exec sql} { set command [list $sqlite_exec testing/testing.db $sql] set output [exec {*}$command] return $output } proc run_test {sqlite_exec sql expected_output} { set actual_output [evaluate_sql $sqlite_exec $sql] if {$actual_output ne $expected_output} { puts "Test FAILED: '$sql'" puts "returned '$actual_output'" puts "expected '$expected_output'" exit 1 } } proc do_execsql_test {test_name sql_statements expected_outputs} { puts "Running test: $test_name" set combined_sql [join $sql_statements " "] set combined_expected_output [join $expected_outputs "\n"] run_test $::sqlite_exec $combined_sql $combined_expected_output } do_execsql_test select-const-1 { SELECT 1 } {1} do_execsql_test select-const-2 { SELECT 2 } {2} do_execsql_test select-avg { SELECT avg(age) FROM users; } {50.396} do_execsql_test select-sum { SELECT sum(age) FROM users; } {503960} do_execsql_test select-limit { SELECT id FROM users LIMIT 1; } {1} do_execsql_test select-count { SELECT count(id) FROM users; } {10000} do_execsql_test select-max { SELECT max(age) FROM users; } {100} do_execsql_test select-min { SELECT min(age) FROM users; } {1} do_execsql_test select-limit-0 { SELECT id FROM users LIMIT 0; } {} do_execsql_test pragma-cache-size { PRAGMA cache_size } {-2000} do_execsql_test cross-join { select * from users, products limit 1; } {1|Jamie|Foster|dylan00@example.com|496-522-9493|62375\ Johnson\ Rest\ Suite\ 322|West\ Lauriestad|IL|35865|94|1|hat|79} do_execsql_test cross-join-specific-columns { select first_name, price from users, products limit 1; } {Jamie|79}