Wed, 31 Dec 2025 15:41:51 +0100
add additional multi table query test
| 23 | 1 | /* |
| 2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. | |
| 3 | * | |
| 4 | * Copyright 2025 Olaf Wintermann. All rights reserved. | |
| 5 | * | |
| 6 | * Redistribution and use in source and binary forms, with or without | |
| 7 | * modification, are permitted provided that the following conditions are met: | |
| 8 | * | |
| 9 | * 1. Redistributions of source code must retain the above copyright | |
| 10 | * notice, this list of conditions and the following disclaimer. | |
| 11 | * | |
| 12 | * 2. Redistributions in binary form must reproduce the above copyright | |
| 13 | * notice, this list of conditions and the following disclaimer in the | |
| 14 | * documentation and/or other materials provided with the distribution. | |
| 15 | * | |
| 16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |
| 17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| 18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| 19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | |
| 20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
| 21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
| 22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
| 23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
| 24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
| 25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
| 26 | * POSSIBLIITY OF SUCH DAMAGE. | |
| 27 | */ | |
| 28 | ||
| 29 | #include "database.h" | |
| 30 | ||
| 31 | #include <stdio.h> | |
| 32 | #include <stdlib.h> | |
| 33 | #include <errno.h> | |
| 34 | #include <unistd.h> | |
| 35 | ||
| 36 | #include <cx/buffer.h> | |
| 37 | #include <cx/streams.h> | |
|
25
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
38 | #include <cx/mempool.h> |
| 23 | 39 | |
| 40 | #define TEST_DB "test.db" | |
| 41 | #define TEST_DATA_FILE "testdata.sql" | |
| 42 | ||
| 43 | ||
| 44 | // create test.db and execute testdata script | |
| 45 | int init_test_db(void) { | |
| 46 | sqlite3 *db; | |
| 47 | char *err_msg = NULL; | |
| 48 | ||
| 49 | FILE *f = fopen(TEST_DATA_FILE, "r"); | |
| 50 | if(!f) { | |
| 51 | fprintf(stderr, "Cannot open test data file %s: %s\n", TEST_DATA_FILE, strerror(errno)); | |
| 52 | } | |
| 53 | ||
| 54 | if(unlink(TEST_DB)) { | |
| 55 | if(errno != ENOENT) { | |
| 56 | fprintf(stderr, "Cannot unlink %s: %s\n", TEST_DB, strerror(errno)); | |
| 57 | fclose(f); | |
| 58 | return 1; | |
| 59 | } | |
| 60 | } | |
| 61 | if(sqlite3_open(TEST_DB, &db) != SQLITE_OK) { | |
| 62 | fprintf(stderr, "Cannot open database %s: %s\n", TEST_DB, sqlite3_errmsg(db)); | |
| 63 | fclose(f); | |
| 64 | return 1; | |
| 65 | } | |
| 66 | ||
| 31 | 67 | CxBuffer *buf = cxBufferCreate(cxDefaultAllocator, NULL, 2048, CX_BUFFER_AUTO_EXTEND | CX_BUFFER_FREE_CONTENTS); |
| 23 | 68 | cx_stream_copy(f, buf, (cx_read_func)fread, (cx_write_func)cxBufferWrite); |
| 69 | int err = 0; | |
| 70 | if(buf->size > 0) { | |
| 71 | cxBufferTerminate(buf); | |
| 72 | ||
| 73 | if(sqlite3_exec(db, buf->space, 0, 0, &err_msg) != SQLITE_OK) { | |
| 74 | fprintf(stderr, "SQL error: %s\n", err_msg); | |
| 75 | sqlite3_free(err_msg); | |
| 76 | err = 1; | |
| 77 | } | |
| 78 | } else { | |
| 79 | fprintf(stderr, "Error: no file content\n"); | |
| 80 | err = 1; | |
| 81 | } | |
| 82 | cxBufferFree(buf); | |
| 83 | sqlite3_close(db); | |
| 84 | ||
| 85 | return err; | |
| 86 | } | |
| 87 | ||
| 88 | ||
| 89 | ||
| 90 | static DBUContext *ctx; | |
| 91 | static DBUConnection *conn; | |
| 92 | ||
|
33
106ff84c18ed
extend multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
32
diff
changeset
|
93 | static DBUClass *country; |
|
25
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
94 | static DBUClass *address; |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
95 | static DBUClass *person; |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
96 | static DBUClass *role; |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
97 | |
|
33
106ff84c18ed
extend multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
32
diff
changeset
|
98 | typedef struct Country { |
|
106ff84c18ed
extend multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
32
diff
changeset
|
99 | int64_t country_id; |
|
106ff84c18ed
extend multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
32
diff
changeset
|
100 | cxmutstr name; |
|
106ff84c18ed
extend multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
32
diff
changeset
|
101 | } Country; |
|
106ff84c18ed
extend multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
32
diff
changeset
|
102 | |
| 23 | 103 | typedef struct Address { |
| 104 | int64_t address_id; | |
| 105 | ||
| 106 | cxmutstr street; | |
| 107 | cxmutstr zip; | |
| 108 | cxmutstr city; | |
|
33
106ff84c18ed
extend multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
32
diff
changeset
|
109 | |
|
106ff84c18ed
extend multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
32
diff
changeset
|
110 | Country *country; |
| 23 | 111 | } Address; |
| 112 | ||
| 113 | typedef struct Person { | |
| 114 | int64_t person_id; | |
| 115 | ||
| 116 | cxmutstr name; | |
| 117 | cxmutstr email; | |
| 118 | int age; | |
| 119 | bool iscustomer; | |
| 120 | uint64_t hash; | |
| 121 | ||
| 122 | Address *address; | |
| 123 | ||
| 124 | CxList *roles; | |
| 125 | } Person; | |
| 126 | ||
| 127 | typedef struct Role { | |
| 128 | int64_t role_id; | |
| 129 | int64_t person_id; | |
| 130 | cxmutstr name; | |
| 131 | } Role; | |
| 132 | ||
| 133 | int init_db_tests(void) { | |
| 134 | ctx = dbuContextCreate(); | |
| 135 | ||
|
33
106ff84c18ed
extend multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
32
diff
changeset
|
136 | country = dbuRegisterClass(ctx, "country", Country, country_id); |
|
106ff84c18ed
extend multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
32
diff
changeset
|
137 | dbuClassAdd(country, Country, name); |
|
106ff84c18ed
extend multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
32
diff
changeset
|
138 | |
|
25
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
139 | address = dbuRegisterClass(ctx, "address", Address, address_id); |
| 23 | 140 | dbuClassAdd(address, Address, street); |
| 141 | dbuClassAdd(address, Address, zip); | |
| 142 | dbuClassAdd(address, Address, city); | |
|
33
106ff84c18ed
extend multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
32
diff
changeset
|
143 | dbuClassAddObj(address, "country_id", offsetof(Address, country), country); |
| 23 | 144 | |
|
25
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
145 | role = dbuRegisterClass(ctx, "role", Role, role_id); |
| 23 | 146 | |
|
25
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
147 | person = dbuRegisterClass(ctx, "person", Person, person_id); |
| 23 | 148 | dbuClassAdd(person, Person, name); |
| 149 | dbuClassAdd(person, Person, email); | |
| 150 | dbuClassAdd(person, Person, age); | |
| 151 | dbuClassAdd(person, Person, iscustomer); | |
| 152 | dbuClassAdd(person, Person, hash); | |
| 153 | dbuClassAddObj(person, "address_id", offsetof(Person, address), address); | |
| 154 | dbuClassAddCxLinkedList(person, "person_id", offsetof(Person, roles), role); | |
| 155 | ||
| 156 | dbuClassAddForeignKey(role, Role, person_id, person); | |
| 157 | dbuClassAdd(role, Role, name); | |
| 158 | ||
| 159 | return 0; | |
| 160 | } | |
| 161 | ||
| 162 | void cleanup_db_tests(void) { | |
| 163 | if(conn) { | |
| 164 | dbuConnectionFree(conn); | |
| 165 | } | |
| 166 | dbuContextFree(ctx); | |
| 167 | } | |
| 168 | ||
| 169 | CX_TEST(testSqliteConnection) { | |
| 170 | CX_TEST_DO { | |
| 171 | conn = dbuSQLiteConnection(TEST_DB); | |
| 172 | CX_TEST_ASSERT(conn); | |
| 173 | CX_TEST_ASSERT(dbuConnectionIsActive(conn)); | |
| 174 | } | |
| 175 | } | |
| 176 | ||
| 177 | CX_TEST(testConnectionExec) { | |
| 178 | CX_TEST_DO { | |
| 179 | CX_TEST_ASSERT(conn); | |
| 180 | ||
| 181 | int t1 = dbuConnectionExec(conn, "create table ExecTest1(a int);"); | |
| 182 | CX_TEST_ASSERT(t1 == 0); | |
| 183 | ||
| 184 | int t2 = dbuConnectionExec(conn, "insert into ExecTest1(a) values (1);"); | |
| 185 | CX_TEST_ASSERT(t2 == 0); | |
| 186 | ||
| 187 | int t3 = dbuConnectionExec(conn, "drop table ExecTest1;"); | |
| 188 | CX_TEST_ASSERT(t3 == 0); | |
| 189 | ||
| 190 | int fail = dbuConnectionExec(conn, "select * from Fail;"); | |
| 191 | CX_TEST_ASSERT(fail != 0); | |
| 192 | } | |
| 193 | } | |
| 194 | ||
| 195 | CX_TEST(testSingleValueQuery) { | |
| 196 | CX_TEST_DO { | |
| 197 | CX_TEST_ASSERT(conn); | |
| 198 | ||
| 199 | DBUQuery *q = dbuConnectionQuery(conn, NULL); | |
| 200 | CX_TEST_ASSERT(q); | |
| 201 | CX_TEST_ASSERT(dbuQuerySetSQL(q, "select 12;") == 0); | |
| 202 | CX_TEST_ASSERT(dbuQueryExec(q) == 0); | |
| 203 | ||
| 204 | DBUResult *r = dbuQueryGetResult(q); | |
| 205 | CX_TEST_ASSERT(r); | |
| 206 | int value; | |
| 207 | CX_TEST_ASSERT(dbuResultAsValue(r, &value) == 0); | |
| 208 | CX_TEST_ASSERT(value == 12); | |
| 209 | ||
| 210 | dbuQueryFree(q); | |
| 211 | ||
| 212 | } | |
| 213 | } | |
|
24
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
214 | |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
215 | CX_TEST(testSqlExec) { |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
216 | CX_TEST_DO { |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
217 | CX_TEST_ASSERT(conn); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
218 | |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
219 | DBUResult *r = dbuSqlExec(conn, NULL, "select email from person where name = 'alice';"); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
220 | CX_TEST_ASSERT(r); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
221 | cxmutstr value; |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
222 | CX_TEST_ASSERT(dbuResultAsValue(r, &value) == 0); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
223 | CX_TEST_ASSERT(!cx_strcmp(value, "alice@example.com")); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
224 | free(value.ptr); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
225 | } |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
226 | } |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
227 | |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
228 | CX_TEST(testSqlExecParam) { |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
229 | CX_TEST_DO { |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
230 | CX_TEST_ASSERT(conn); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
231 | |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
232 | DBUResult *r = dbuSqlExecParam(conn, NULL, "select email from person where name = ?;", "alice"); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
233 | CX_TEST_ASSERT(r); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
234 | cxmutstr value; |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
235 | CX_TEST_ASSERT(dbuResultAsValue(r, &value) == 0); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
236 | CX_TEST_ASSERT(!cx_strcmp(value, "alice@example.com")); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
237 | free(value.ptr); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
238 | |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
239 | r = dbuSqlExecParam(conn, NULL, "select name from person where hash = ?;", 987654321); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
240 | CX_TEST_ASSERT(r); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
241 | CX_TEST_ASSERT(dbuResultAsValue(r, &value) == 0); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
242 | CX_TEST_ASSERT(!cx_strcmp(value, "bob")); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
243 | free(value.ptr); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
244 | } |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
245 | } |
|
25
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
246 | |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
247 | CX_TEST(testSingleTableQuery) { |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
248 | CxMempool *mp = cxMempoolCreateSimple(64); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
249 | |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
250 | CX_TEST_DO { |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
251 | DBUQuery *query = dbuQueryCreate(conn, mp->allocator, "select * from address order by street;"); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
252 | DBUObjectBuilder *builder = dbuObjectBuilder(address, query, mp->allocator); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
253 | CxList *adr = dbuObjectBuilderGetList(builder); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
254 | |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
255 | CX_TEST_ASSERT(adr); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
256 | CX_TEST_ASSERT(cxListSize(adr) == 2); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
257 | |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
258 | Address *a0 = cxListAt(adr, 0); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
259 | Address *a1 = cxListAt(adr, 1); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
260 | CX_TEST_ASSERT(a0); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
261 | CX_TEST_ASSERT(a1); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
262 | CX_TEST_ASSERT(!cx_strcmp(a0->street, "street 1")); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
263 | CX_TEST_ASSERT(!cx_strcmp(a1->street, "street 2")); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
264 | CX_TEST_ASSERT(!cx_strcmp(a0->zip, "12343")); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
265 | CX_TEST_ASSERT(!cx_strcmp(a1->zip, "23456")); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
266 | CX_TEST_ASSERT(!cx_strcmp(a0->city, "city 17")); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
267 | CX_TEST_ASSERT(!cx_strcmp(a1->city, "city 18")); |
|
26
dc36aa437249
implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
25
diff
changeset
|
268 | |
|
dc36aa437249
implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
25
diff
changeset
|
269 | dbuObjectBuilderDestroy(builder); |
|
25
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
270 | } |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
271 | |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
272 | cxMempoolFree(mp); |
|
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
273 | } |
|
32
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
274 | |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
275 | CX_TEST(testMultiTableQuery) { |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
276 | CxMempool *mp = cxMempoolCreateSimple(64); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
277 | |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
278 | CX_TEST_DO { |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
279 | 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;"; |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
280 | DBUQuery *query = dbuQueryCreate(conn, mp->allocator, sql1); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
281 | DBUObjectBuilder *builder = dbuObjectBuilder(person, query, mp->allocator); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
282 | CxList *persons = dbuObjectBuilderGetList(builder); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
283 | |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
284 | CX_TEST_ASSERT(persons); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
285 | CX_TEST_ASSERT(cxListSize(persons) == 2); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
286 | |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
287 | Person *p0 = cxListAt(persons, 0); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
288 | Person *p1 = cxListAt(persons, 1); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
289 | CX_TEST_ASSERT(p0); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
290 | CX_TEST_ASSERT(p1); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
291 | CX_TEST_ASSERT(!cx_strcmp(p0->name, "alice")); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
292 | CX_TEST_ASSERT(!cx_strcmp(p1->name, "bob")); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
293 | CX_TEST_ASSERT(!cx_strcmp(p0->email, "alice@example.com")); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
294 | CX_TEST_ASSERT(!cx_strcmp(p1->email, "bob@example.com")); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
295 | CX_TEST_ASSERT(p0->age == 30); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
296 | CX_TEST_ASSERT(p1->age == 25); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
297 | CX_TEST_ASSERT(p0->iscustomer == 0); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
298 | CX_TEST_ASSERT(p1->iscustomer == 1); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
299 | CX_TEST_ASSERT(p0->hash == 123456789); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
300 | CX_TEST_ASSERT(p1->hash == 987654321); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
301 | |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
302 | CX_TEST_ASSERT(p0->address != NULL); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
303 | CX_TEST_ASSERT(p1->address != NULL); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
304 | |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
305 | CX_TEST_ASSERT(!cx_strcmp(p0->address->street, "street 1")); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
306 | CX_TEST_ASSERT(!cx_strcmp(p1->address->street, "street 2")); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
307 | CX_TEST_ASSERT(!cx_strcmp(p0->address->zip, "12343")); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
308 | CX_TEST_ASSERT(!cx_strcmp(p1->address->zip, "23456")); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
309 | CX_TEST_ASSERT(!cx_strcmp(p0->address->city, "city 17")); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
310 | CX_TEST_ASSERT(!cx_strcmp(p1->address->city, "city 18")); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
311 | |
|
33
106ff84c18ed
extend multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
32
diff
changeset
|
312 | dbuObjectBuilderDestroy(builder); |
|
32
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
313 | } |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
314 | |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
315 | cxMempoolFree(mp); |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
316 | } |
|
6bd927c1cb11
add test for multi table queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
31
diff
changeset
|
317 | |
|
36
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
318 | CX_TEST(testMultiTableQuery1) { |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
319 | CxMempool *mp = cxMempoolCreateSimple(64); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
320 | |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
321 | CX_TEST_DO { |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
322 | const char *sql1 = "select p.*, NULL as [__address], a.* from Person p inner join Address a on p.address_id = a.address_id order by p.person_id;"; |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
323 | DBUQuery *query = dbuQueryCreate(conn, mp->allocator, sql1); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
324 | DBUObjectBuilder *builder = dbuObjectBuilder(person, query, mp->allocator); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
325 | CxList *persons = dbuObjectBuilderGetList(builder); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
326 | |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
327 | CX_TEST_ASSERT(persons); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
328 | CX_TEST_ASSERT(cxListSize(persons) == 2); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
329 | |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
330 | Person *p0 = cxListAt(persons, 0); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
331 | Person *p1 = cxListAt(persons, 1); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
332 | CX_TEST_ASSERT(p0); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
333 | CX_TEST_ASSERT(p1); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
334 | CX_TEST_ASSERT(!cx_strcmp(p0->name, "alice")); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
335 | CX_TEST_ASSERT(!cx_strcmp(p1->name, "bob")); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
336 | CX_TEST_ASSERT(!cx_strcmp(p0->email, "alice@example.com")); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
337 | CX_TEST_ASSERT(!cx_strcmp(p1->email, "bob@example.com")); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
338 | CX_TEST_ASSERT(p0->age == 30); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
339 | CX_TEST_ASSERT(p1->age == 25); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
340 | CX_TEST_ASSERT(p0->iscustomer == 0); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
341 | CX_TEST_ASSERT(p1->iscustomer == 1); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
342 | CX_TEST_ASSERT(p0->hash == 123456789); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
343 | CX_TEST_ASSERT(p1->hash == 987654321); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
344 | |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
345 | CX_TEST_ASSERT(p0->address != NULL); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
346 | CX_TEST_ASSERT(p1->address != NULL); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
347 | |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
348 | CX_TEST_ASSERT(!cx_strcmp(p0->address->street, "street 1")); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
349 | CX_TEST_ASSERT(!cx_strcmp(p1->address->street, "street 2")); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
350 | CX_TEST_ASSERT(!cx_strcmp(p0->address->zip, "12343")); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
351 | CX_TEST_ASSERT(!cx_strcmp(p1->address->zip, "23456")); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
352 | CX_TEST_ASSERT(!cx_strcmp(p0->address->city, "city 17")); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
353 | CX_TEST_ASSERT(!cx_strcmp(p1->address->city, "city 18")); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
354 | |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
355 | dbuObjectBuilderDestroy(builder); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
356 | } |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
357 | |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
358 | cxMempoolFree(mp); |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
359 | } |
|
93753b036d9f
add additional multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
35
diff
changeset
|
360 | |
|
34
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
361 | CX_TEST(testMultiTableQuery2) { |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
362 | CxMempool *mp = cxMempoolCreateSimple(64); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
363 | |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
364 | CX_TEST_DO { |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
365 | const char *sql2 = "select p.*, " |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
366 | "a.address_id as [__address__address_id], a.street, a.zip, a.city, " |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
367 | "c.country_id as [__country__country_id], c.name " |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
368 | "from Person p inner join Address a on p.address_id = a.address_id inner join Country c on a.country_id = c.country_id " |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
369 | "order by p.person_id;"; |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
370 | DBUQuery *query = dbuQueryCreate(conn, mp->allocator, sql2); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
371 | DBUObjectBuilder *builder = dbuObjectBuilder(person, query, mp->allocator); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
372 | CxList *persons = dbuObjectBuilderGetList(builder); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
373 | |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
374 | CX_TEST_ASSERT(persons); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
375 | CX_TEST_ASSERT(cxListSize(persons) == 2); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
376 | |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
377 | Person *p0 = cxListAt(persons, 0); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
378 | Person *p1 = cxListAt(persons, 1); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
379 | CX_TEST_ASSERT(p0); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
380 | CX_TEST_ASSERT(p1); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
381 | CX_TEST_ASSERT(!cx_strcmp(p0->name, "alice")); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
382 | CX_TEST_ASSERT(!cx_strcmp(p1->name, "bob")); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
383 | CX_TEST_ASSERT(!cx_strcmp(p0->email, "alice@example.com")); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
384 | CX_TEST_ASSERT(!cx_strcmp(p1->email, "bob@example.com")); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
385 | CX_TEST_ASSERT(p0->age == 30); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
386 | CX_TEST_ASSERT(p1->age == 25); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
387 | CX_TEST_ASSERT(p0->iscustomer == 0); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
388 | CX_TEST_ASSERT(p1->iscustomer == 1); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
389 | CX_TEST_ASSERT(p0->hash == 123456789); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
390 | CX_TEST_ASSERT(p1->hash == 987654321); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
391 | |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
392 | CX_TEST_ASSERT(p0->address != NULL); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
393 | CX_TEST_ASSERT(p1->address != NULL); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
394 | |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
395 | CX_TEST_ASSERT(!cx_strcmp(p0->address->street, "street 1")); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
396 | CX_TEST_ASSERT(!cx_strcmp(p1->address->street, "street 2")); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
397 | CX_TEST_ASSERT(!cx_strcmp(p0->address->zip, "12343")); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
398 | CX_TEST_ASSERT(!cx_strcmp(p1->address->zip, "23456")); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
399 | CX_TEST_ASSERT(!cx_strcmp(p0->address->city, "city 17")); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
400 | CX_TEST_ASSERT(!cx_strcmp(p1->address->city, "city 18")); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
401 | |
|
35
16731869cc05
fix that NULL as __tabname did not work as table separator in queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
34
diff
changeset
|
402 | CX_TEST_ASSERT(p0->address->country); |
|
16731869cc05
fix that NULL as __tabname did not work as table separator in queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
34
diff
changeset
|
403 | CX_TEST_ASSERT(p1->address->country); |
|
16731869cc05
fix that NULL as __tabname did not work as table separator in queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
34
diff
changeset
|
404 | CX_TEST_ASSERT(!cx_strcmp(p0->address->country->name, "Germany")); |
|
16731869cc05
fix that NULL as __tabname did not work as table separator in queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
34
diff
changeset
|
405 | CX_TEST_ASSERT(!cx_strcmp(p1->address->country->name, "Germany")); |
|
16731869cc05
fix that NULL as __tabname did not work as table separator in queries
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
34
diff
changeset
|
406 | |
|
34
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
407 | dbuObjectBuilderDestroy(builder); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
408 | } |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
409 | |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
410 | cxMempoolFree(mp); |
|
0d2291e77d32
split multi table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
33
diff
changeset
|
411 | } |