;============================================================ ; 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()