# HG changeset patch # User Olaf Wintermann # Date 1767028183 -3600 # Node ID 6bd927c1cb111aac47d712f191f3939041dfb6b4 # Parent 2874845198445614b865ca7f1cdb081062e1d8a6 add test for multi table queries diff -r 287484519844 -r 6bd927c1cb11 test/database.c --- a/test/database.c Fri Dec 19 17:22:03 2025 +0100 +++ b/test/database.c Mon Dec 29 18:09:43 2025 +0100 @@ -259,3 +259,48 @@ cxMempoolFree(mp); } + +CX_TEST(testMultiTableQuery) { + CxMempool *mp = cxMempoolCreateSimple(64); + + CX_TEST_DO { + const char *sql1 = "select p.*, a.address_id as [__address__address_id], a.street, a.zip, a.city from Person p inner join Address a on p.address_id = a.address_id order by p.person_id;"; + DBUQuery *query = dbuQueryCreate(conn, mp->allocator, sql1); + DBUObjectBuilder *builder = dbuObjectBuilder(person, query, mp->allocator); + CxList *persons = dbuObjectBuilderGetList(builder); + + CX_TEST_ASSERT(persons); + CX_TEST_ASSERT(cxListSize(persons) == 2); + + Person *p0 = cxListAt(persons, 0); + Person *p1 = cxListAt(persons, 1); + CX_TEST_ASSERT(p0); + CX_TEST_ASSERT(p1); + CX_TEST_ASSERT(!cx_strcmp(p0->name, "alice")); + CX_TEST_ASSERT(!cx_strcmp(p1->name, "bob")); + CX_TEST_ASSERT(!cx_strcmp(p0->email, "alice@example.com")); + CX_TEST_ASSERT(!cx_strcmp(p1->email, "bob@example.com")); + CX_TEST_ASSERT(p0->age == 30); + CX_TEST_ASSERT(p1->age == 25); + CX_TEST_ASSERT(p0->iscustomer == 0); + CX_TEST_ASSERT(p1->iscustomer == 1); + CX_TEST_ASSERT(p0->hash == 123456789); + CX_TEST_ASSERT(p1->hash == 987654321); + + CX_TEST_ASSERT(p0->address != NULL); + CX_TEST_ASSERT(p1->address != NULL); + + CX_TEST_ASSERT(!cx_strcmp(p0->address->street, "street 1")); + CX_TEST_ASSERT(!cx_strcmp(p1->address->street, "street 2")); + CX_TEST_ASSERT(!cx_strcmp(p0->address->zip, "12343")); + CX_TEST_ASSERT(!cx_strcmp(p1->address->zip, "23456")); + CX_TEST_ASSERT(!cx_strcmp(p0->address->city, "city 17")); + CX_TEST_ASSERT(!cx_strcmp(p1->address->city, "city 18")); + + + dbuObjectBuilderDestroy(builder); + } + + cxMempoolFree(mp); +} + diff -r 287484519844 -r 6bd927c1cb11 test/database.h --- a/test/database.h Fri Dec 19 17:22:03 2025 +0100 +++ b/test/database.h Mon Dec 29 18:09:43 2025 +0100 @@ -50,6 +50,7 @@ CX_TEST(testSqlExec); CX_TEST(testSqlExecParam); CX_TEST(testSingleTableQuery); +CX_TEST(testMultiTableQuery); #ifdef __cplusplus diff -r 287484519844 -r 6bd927c1cb11 test/main.c --- a/test/main.c Fri Dec 19 17:22:03 2025 +0100 +++ b/test/main.c Mon Dec 29 18:09:43 2025 +0100 @@ -133,6 +133,7 @@ cx_test_register(suite, testSqlExec); cx_test_register(suite, testSqlExecParam); cx_test_register(suite, testSingleTableQuery); + cx_test_register(suite, testMultiTableQuery); #endif cx_test_register(suite, testObjectToJsonSimple); cx_test_register(suite, testObjectToJsonChildObj);