72 lines
2.7 KiB
Plaintext
72 lines
2.7 KiB
Plaintext
@pragma entry main
|
|
@pragma implicit off
|
|
@pragma defermodsym on
|
|
|
|
@include "tap.inc";
|
|
|
|
function run_test_001 ()
|
|
{
|
|
@local sid, stmt, row, rc, rid, msg;
|
|
|
|
if (!hawk::function_exists("sqlite::open"))
|
|
{
|
|
tap_skip(sprintf("sqlite module unavailable - %s[%d]", @SCRIPTNAME, @SCRIPTLINE));
|
|
return;
|
|
}
|
|
|
|
sid = sqlite::open();
|
|
tap_ensure((sid >= 0), 1, @SCRIPTNAME, @SCRIPTLINE);
|
|
|
|
tap_ensure(sqlite::connect(sid, ":memory:"), 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(sqlite::exec(sid, "create table t (id integer primary key autoincrement, name text, score real)"), 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
|
|
stmt = sqlite::prepare(sid, "insert into t(name, score) values(?, ?)");
|
|
tap_ensure((stmt >= 0), 1, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(sqlite::bind_str(stmt, 1, "alice"), 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(sqlite::bind_flt(stmt, 2, 1.5), 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
row = @nil;
|
|
tap_ensure(sqlite::fetch_row(stmt, row), 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(sqlite::changes(sid), 1, @SCRIPTNAME, @SCRIPTLINE);
|
|
rid = sqlite::last_insert_rowid(sid);
|
|
tap_ensure((rid >= 1), 1, @SCRIPTNAME, @SCRIPTLINE);
|
|
|
|
tap_ensure(sqlite::reset(stmt), 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(sqlite::bind_str(stmt, 1, "bob"), 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(sqlite::bind_int(stmt, 2, 2), 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(sqlite::fetch_row(stmt, row), 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(sqlite::changes(sid), 1, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(sqlite::finalize(stmt), 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
|
|
stmt = sqlite::prepare(sid, "select id, name, score from t order by id");
|
|
tap_ensure((stmt >= 0), 1, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(sqlite::column_count(stmt), 3, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(sqlite::column_name(stmt, 1), "id", @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(sqlite::column_name(stmt, 2), "name", @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(sqlite::column_name(stmt, 3), "score", @SCRIPTNAME, @SCRIPTLINE);
|
|
|
|
row = @nil;
|
|
rc = sqlite::fetch_row(stmt, row);
|
|
tap_ensure(rc, 1, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(row["2"], "alice", @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(row["3"], 1.5, @SCRIPTNAME, @SCRIPTLINE);
|
|
|
|
rc = sqlite::fetch_row(stmt, row);
|
|
tap_ensure(rc, 1, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(row["2"], "bob", @SCRIPTNAME, @SCRIPTLINE);
|
|
|
|
rc = sqlite::fetch_row(stmt, row);
|
|
tap_ensure(rc, 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure(sqlite::finalize(stmt), 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
|
|
tap_ensure(sqlite::close(sid), 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure((sqlite::exec(sid, "select 1") < 0), 1, @SCRIPTNAME, @SCRIPTLINE);
|
|
msg = sqlite::errmsg();
|
|
tap_ensure((length(msg) > 0), 1, @SCRIPTNAME, @SCRIPTLINE);
|
|
}
|
|
|
|
function main ()
|
|
{
|
|
run_test_001();
|
|
tap_end();
|
|
}
|