Tue, 09 Dec 2025 14:47:35 +0100
add single table query test
| test/database.c | file | annotate | diff | comparison | revisions | |
| test/database.h | file | annotate | diff | comparison | revisions | |
| test/main.c | file | annotate | diff | comparison | revisions |
--- a/test/database.c Tue Dec 09 14:33:26 2025 +0100 +++ b/test/database.c Tue Dec 09 14:47:35 2025 +0100 @@ -35,6 +35,7 @@ #include <cx/buffer.h> #include <cx/streams.h> +#include <cx/mempool.h> #define TEST_DB "test.db" #define TEST_DATA_FILE "testdata.sql" @@ -89,6 +90,10 @@ static DBUContext *ctx; static DBUConnection *conn; +static DBUClass *address; +static DBUClass *person; +static DBUClass *role; + typedef struct Address { int64_t address_id; @@ -120,14 +125,14 @@ int init_db_tests(void) { ctx = dbuContextCreate(); - DBUClass *address = dbuRegisterClass(ctx, "address", Address, address_id); + address = dbuRegisterClass(ctx, "address", Address, address_id); dbuClassAdd(address, Address, street); dbuClassAdd(address, Address, zip); dbuClassAdd(address, Address, city); - DBUClass *role = dbuRegisterClass(ctx, "role", Role, role_id); + role = dbuRegisterClass(ctx, "role", Role, role_id); - DBUClass *person = dbuRegisterClass(ctx, "person", Person, person_id); + person = dbuRegisterClass(ctx, "person", Person, person_id); dbuClassAdd(person, Person, name); dbuClassAdd(person, Person, email); dbuClassAdd(person, Person, age); @@ -226,3 +231,29 @@ free(value.ptr); } } + +CX_TEST(testSingleTableQuery) { + CxMempool *mp = cxMempoolCreateSimple(64); + + CX_TEST_DO { + DBUQuery *query = dbuQueryCreate(conn, mp->allocator, "select * from address order by street;"); + DBUObjectBuilder *builder = dbuObjectBuilder(address, query, mp->allocator); + CxList *adr = dbuObjectBuilderGetList(builder); + + CX_TEST_ASSERT(adr); + CX_TEST_ASSERT(cxListSize(adr) == 2); + + Address *a0 = cxListAt(adr, 0); + Address *a1 = cxListAt(adr, 1); + CX_TEST_ASSERT(a0); + CX_TEST_ASSERT(a1); + CX_TEST_ASSERT(!cx_strcmp(a0->street, "street 1")); + CX_TEST_ASSERT(!cx_strcmp(a1->street, "street 2")); + CX_TEST_ASSERT(!cx_strcmp(a0->zip, "12343")); + CX_TEST_ASSERT(!cx_strcmp(a1->zip, "23456")); + CX_TEST_ASSERT(!cx_strcmp(a0->city, "city 17")); + CX_TEST_ASSERT(!cx_strcmp(a1->city, "city 18")); + } + + cxMempoolFree(mp); +}
--- a/test/database.h Tue Dec 09 14:33:26 2025 +0100 +++ b/test/database.h Tue Dec 09 14:47:35 2025 +0100 @@ -51,6 +51,7 @@ CX_TEST(testSingleValueQuery); CX_TEST(testSqlExec); CX_TEST(testSqlExecParam); +CX_TEST(testSingleTableQuery); #ifdef __cplusplus
--- a/test/main.c Tue Dec 09 14:33:26 2025 +0100 +++ b/test/main.c Tue Dec 09 14:47:35 2025 +0100 @@ -130,6 +130,7 @@ cx_test_register(suite, testSingleValueQuery); cx_test_register(suite, testSqlExec); cx_test_register(suite, testSqlExecParam); + cx_test_register(suite, testSingleTableQuery); #endif cx_test_run_stdout(suite);