From de37263908af30b59e32ab6987fc5989d5c67b7d Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 10 Aug 2025 09:50:51 +0800 Subject: [PATCH] Add test program --- test.ha | 44 ++++++++++++++++++++++++++++++++++++++++++++ diff --git a/test.ha b/test.ha new file mode 100644 index 0000000000000000000000000000000000000000..48065a80ade777f9073eb503308877b5ba97bce0 --- /dev/null +++ b/test.ha @@ -0,0 +1,44 @@ +use fmt; +use types::c; + +use ffi; + +export fn main() void = { + const conn = ffi::connectdb(c::fromstr("")!); + defer ffi::finish(conn); + + if (ffi::status(conn) != ffi::ConnStatusType::OK) { + fmt::fatalf("Connection failed: {}\n", c::tostr_unsafe(ffi::errorMessage(conn))); + }; + + const res = ffi::exec(conn, c::fromstr("SELECT * FROM test")!); + defer ffi::clear(res); + + const status = ffi::resultStatus(res); + switch (status) { + case ffi::ExecStatusType::TUPLES_OK => void; + case => fmt::fatalf("Query failed with status {}: {}\n", status: int, c::tostr_unsafe(ffi::errorMessage(conn))); + }; + + const nrows = ffi::ntuples(res); + const ncols = ffi::nfields(res); + + for (let i = 0; i < ncols; i += 1) { + if (i > 0) { + fmt::print("\t")!; + }; + fmt::printf("{}", c::tostr_unsafe(ffi::fname(res, i)))!; + }; + fmt::println("")!; + + for (let row = 0; row < nrows; row += 1) { + for (let col = 0; col < ncols; col += 1) { + if (col > 0) { + fmt::print("\t")!; + }; + const val = ffi::getvalue(res, row, col); + fmt::printf("{}", c::tostr_unsafe(val))!; + }; + fmt::println("")!; + }; +}; -- 2.48.1