test/database.c

changeset 32
6bd927c1cb11
parent 31
287484519844
equal deleted inserted replaced
31:287484519844 32:6bd927c1cb11
257 dbuObjectBuilderDestroy(builder); 257 dbuObjectBuilderDestroy(builder);
258 } 258 }
259 259
260 cxMempoolFree(mp); 260 cxMempoolFree(mp);
261 } 261 }
262
263 CX_TEST(testMultiTableQuery) {
264 CxMempool *mp = cxMempoolCreateSimple(64);
265
266 CX_TEST_DO {
267 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;";
268 DBUQuery *query = dbuQueryCreate(conn, mp->allocator, sql1);
269 DBUObjectBuilder *builder = dbuObjectBuilder(person, query, mp->allocator);
270 CxList *persons = dbuObjectBuilderGetList(builder);
271
272 CX_TEST_ASSERT(persons);
273 CX_TEST_ASSERT(cxListSize(persons) == 2);
274
275 Person *p0 = cxListAt(persons, 0);
276 Person *p1 = cxListAt(persons, 1);
277 CX_TEST_ASSERT(p0);
278 CX_TEST_ASSERT(p1);
279 CX_TEST_ASSERT(!cx_strcmp(p0->name, "alice"));
280 CX_TEST_ASSERT(!cx_strcmp(p1->name, "bob"));
281 CX_TEST_ASSERT(!cx_strcmp(p0->email, "alice@example.com"));
282 CX_TEST_ASSERT(!cx_strcmp(p1->email, "bob@example.com"));
283 CX_TEST_ASSERT(p0->age == 30);
284 CX_TEST_ASSERT(p1->age == 25);
285 CX_TEST_ASSERT(p0->iscustomer == 0);
286 CX_TEST_ASSERT(p1->iscustomer == 1);
287 CX_TEST_ASSERT(p0->hash == 123456789);
288 CX_TEST_ASSERT(p1->hash == 987654321);
289
290 CX_TEST_ASSERT(p0->address != NULL);
291 CX_TEST_ASSERT(p1->address != NULL);
292
293 CX_TEST_ASSERT(!cx_strcmp(p0->address->street, "street 1"));
294 CX_TEST_ASSERT(!cx_strcmp(p1->address->street, "street 2"));
295 CX_TEST_ASSERT(!cx_strcmp(p0->address->zip, "12343"));
296 CX_TEST_ASSERT(!cx_strcmp(p1->address->zip, "23456"));
297 CX_TEST_ASSERT(!cx_strcmp(p0->address->city, "city 17"));
298 CX_TEST_ASSERT(!cx_strcmp(p1->address->city, "city 18"));
299
300
301 dbuObjectBuilderDestroy(builder);
302 }
303
304 cxMempoolFree(mp);
305 }
306

mercurial