diff options
Diffstat (limited to 'sqlite.zig')
| -rw-r--r-- | sqlite.zig | 35 |
1 files changed, 35 insertions, 0 deletions
| @@ -1345,6 +1345,41 @@ test "sqlite: bind pointer" { | |||
| 1345 | } | 1345 | } |
| 1346 | } | 1346 | } |
| 1347 | 1347 | ||
| 1348 | test "sqlite: read pointers" { | ||
| 1349 | var arena = std.heap.ArenaAllocator.init(testing.allocator); | ||
| 1350 | defer arena.deinit(); | ||
| 1351 | |||
| 1352 | var db: Db = undefined; | ||
| 1353 | try db.init(initOptions()); | ||
| 1354 | try addTestData(&db); | ||
| 1355 | |||
| 1356 | const query = "SELECT id, name, age, weight FROM user"; | ||
| 1357 | |||
| 1358 | var stmt = try db.prepare(query); | ||
| 1359 | defer stmt.deinit(); | ||
| 1360 | |||
| 1361 | const rows = try stmt.all( | ||
| 1362 | struct { | ||
| 1363 | id: *usize, | ||
| 1364 | name: *[]const u8, | ||
| 1365 | age: *u32, | ||
| 1366 | weight: *f32, | ||
| 1367 | }, | ||
| 1368 | &arena.allocator, | ||
| 1369 | .{}, | ||
| 1370 | .{}, | ||
| 1371 | ); | ||
| 1372 | |||
| 1373 | testing.expectEqual(@as(usize, 3), rows.len); | ||
| 1374 | for (rows) |row, i| { | ||
| 1375 | const exp = test_users[i]; | ||
| 1376 | testing.expectEqual(exp.id, row.id.*); | ||
| 1377 | testing.expectEqualStrings(exp.name, row.name.*); | ||
| 1378 | testing.expectEqual(exp.age, row.age.*); | ||
| 1379 | testing.expectEqual(exp.weight, row.weight.*); | ||
| 1380 | } | ||
| 1381 | } | ||
| 1382 | |||
| 1348 | test "sqlite: statement reset" { | 1383 | test "sqlite: statement reset" { |
| 1349 | var db: Db = undefined; | 1384 | var db: Db = undefined; |
| 1350 | try db.init(initOptions()); | 1385 | try db.init(initOptions()); |