sample\iron\test_duckdb.hsp » Plain Format
;============================================================
; test_duckdb.hsp — hspduckdb.dll 自動テスト
;
; in-memory DuckDB を開いて簡単な SQL を走らせ、結果を検証。
;============================================================
#include "hsp3cl_net_64.as"
#include "hspduckdb.as"
#include "iron_test_ex.hsp"
; in-memory database を開く (":memory:")
duckdb_open_db ":memory:", h
test_case "duckdb_open_db :memory:"
ok = 0
if h >= 0 : ok = 1
assert_true ok
test_end
if h < 0 : end testrt_summary()
; シンプルな SELECT
duckdb_query h, "SELECT 42 AS answer", qh
test_case "SELECT 42: query handle ok"
ok = 0
if qh >= 0 : ok = 1
assert_true ok
test_end
; 行数 = 1
test_case "SELECT 42: 1 row"
duckdb_result_rows qh, nrows
expect_eq nrows, 1
test_end
; 列数 = 1
test_case "SELECT 42: 1 col"
duckdb_result_cols qh, ncols
expect_eq ncols, 1
test_end
; 列名 = "answer"
test_case "SELECT 42: col name is 'answer'"
sdim cn, 64
duckdb_result_col_name qh, 0, cn, 64
expect_streq cn, "answer"
test_end
; 値 = "42" (文字列経由で取得)
test_case "SELECT 42: cell value is '42'"
sdim cv, 64
duckdb_result_cell_str qh, 0, 0, cv, 64
expect_streq cv, "42"
test_end
duckdb_result_free qh
; CREATE TABLE + INSERT + SELECT
duckdb_exec h, "CREATE TABLE t (id INT, name VARCHAR)", rc
duckdb_exec h, "INSERT INTO t VALUES (1, 'alice'), (2, 'bob'), (3, 'carol')", rc
duckdb_query h, "SELECT COUNT(*) FROM t", qh
test_case "INSERT 3 rows then COUNT"
sdim cv, 64
duckdb_result_cell_str qh, 0, 0, cv, 64
expect_streq cv, "3"
test_end
duckdb_result_free qh
duckdb_close_db h
end testrt_summary()