diff options
| author | 2021-12-18 20:53:11 +0100 | |
|---|---|---|
| committer | 2021-12-18 21:47:16 +0100 | |
| commit | bb75a804f5e910b663f3f7af9378c83f2df31d07 (patch) | |
| tree | 625d16b8c207ec0c651d6d084f68cb807e350121 | |
| parent | always deinit the test database (diff) | |
| download | zig-sqlite-bb75a804f5e910b663f3f7af9378c83f2df31d07.tar.gz zig-sqlite-bb75a804f5e910b663f3f7af9378c83f2df31d07.tar.xz zig-sqlite-bb75a804f5e910b663f3f7af9378c83f2df31d07.zip | |
add a test binding an empty slice to a text column
Diffstat (limited to '')
| -rw-r--r-- | sqlite.zig | 67 |
1 files changed, 67 insertions, 0 deletions
| @@ -3122,3 +3122,70 @@ test "sqlite: oneDynamic" { | |||
| 3122 | try testing.expectEqual(@as(usize, 20), id.?); | 3122 | try testing.expectEqual(@as(usize, 20), id.?); |
| 3123 | } | 3123 | } |
| 3124 | } | 3124 | } |
| 3125 | |||
| 3126 | test "sqlite: empty slice" { | ||
| 3127 | var arena = std.heap.ArenaAllocator.init(testing.allocator); | ||
| 3128 | defer arena.deinit(); | ||
| 3129 | |||
| 3130 | var db = try getTestDb(); | ||
| 3131 | defer db.deinit(); | ||
| 3132 | try addTestData(&db); | ||
| 3133 | |||
| 3134 | var list = std.ArrayList(u8).init(arena.allocator()); | ||
| 3135 | const ptr = list.toOwnedSlice(); | ||
| 3136 | |||
| 3137 | try db.exec("INSERT INTO article(author_id, data) VALUES(?, ?)", .{}, .{ 1, ptr }); | ||
| 3138 | |||
| 3139 | // Read into an array | ||
| 3140 | { | ||
| 3141 | var stmt = try db.prepare("SELECT data FROM article"); | ||
| 3142 | defer stmt.deinit(); | ||
| 3143 | |||
| 3144 | const row = try stmt.one( | ||
| 3145 | struct { | ||
| 3146 | data: [128:0]u8, | ||
| 3147 | }, | ||
| 3148 | .{}, | ||
| 3149 | .{}, | ||
| 3150 | ); | ||
| 3151 | |||
| 3152 | try testing.expect(row != null); | ||
| 3153 | try testing.expectEqualSlices(u8, "", mem.sliceTo(&row.?.data, 0)); | ||
| 3154 | } | ||
| 3155 | |||
| 3156 | // Read into an allocated slice | ||
| 3157 | { | ||
| 3158 | var stmt = try db.prepare("SELECT data FROM article"); | ||
| 3159 | defer stmt.deinit(); | ||
| 3160 | |||
| 3161 | const row = try stmt.oneAlloc( | ||
| 3162 | struct { | ||
| 3163 | data: []const u8, | ||
| 3164 | }, | ||
| 3165 | arena.allocator(), | ||
| 3166 | .{}, | ||
| 3167 | .{}, | ||
| 3168 | ); | ||
| 3169 | |||
| 3170 | try testing.expect(row != null); | ||
| 3171 | try testing.expectEqualSlices(u8, "", row.?.data); | ||
| 3172 | } | ||
| 3173 | |||
| 3174 | // Read into a Text | ||
| 3175 | { | ||
| 3176 | var stmt = try db.prepare("SELECT data FROM article"); | ||
| 3177 | defer stmt.deinit(); | ||
| 3178 | |||
| 3179 | const row = try stmt.oneAlloc( | ||
| 3180 | struct { | ||
| 3181 | data: Text, | ||
| 3182 | }, | ||
| 3183 | arena.allocator(), | ||
| 3184 | .{}, | ||
| 3185 | .{}, | ||
| 3186 | ); | ||
| 3187 | |||
| 3188 | try testing.expect(row != null); | ||
| 3189 | try testing.expectEqualSlices(u8, "", row.?.data.data); | ||
| 3190 | } | ||
| 3191 | } | ||