summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Vincent Rischmann2021-11-22 22:36:22 +0100
committerGravatar Vincent Rischmann2021-11-22 23:34:41 +0100
commitf442497e36722af2ca24ed85f65a78d2dbdc244f (patch)
tree27729ae97589768cef1099842343e4adab3078df
parentdynamic statement: fix one() (diff)
downloadzig-sqlite-f442497e36722af2ca24ed85f65a78d2dbdc244f.tar.gz
zig-sqlite-f442497e36722af2ca24ed85f65a78d2dbdc244f.tar.xz
zig-sqlite-f442497e36722af2ca24ed85f65a78d2dbdc244f.zip
dynamic statement: add some tests
-rw-r--r--sqlite.zig98
1 files changed, 98 insertions, 0 deletions
diff --git a/sqlite.zig b/sqlite.zig
index 703294f..8037f28 100644
--- a/sqlite.zig
+++ b/sqlite.zig
@@ -2938,3 +2938,101 @@ test "sqlite: bind custom type" {
2938 try testing.expectEqualSlices(u8, &my_data.data, &row.?.data.data); 2938 try testing.expectEqualSlices(u8, &my_data.data, &row.?.data.data);
2939 } 2939 }
2940} 2940}
2941
2942test "sqlite: prepareDynamic" {
2943 var arena = std.heap.ArenaAllocator.init(testing.allocator);
2944 defer arena.deinit();
2945
2946 var db = try getTestDb();
2947 try addTestData(&db);
2948
2949 var diags = Diagnostics{};
2950 var stmt = try db.prepareDynamicWithDiags("SELECT id FROM user WHERE age = ?", .{ .diags = &diags });
2951 defer stmt.deinit();
2952
2953 {
2954 var iter = try stmt.iterator(usize, .{ .age = 33 });
2955
2956 const id = try iter.next(.{});
2957 try testing.expect(id != null);
2958 try testing.expectEqual(@as(usize, 20), id.?);
2959 }
2960
2961 stmt.reset();
2962
2963 {
2964 var iter = try stmt.iteratorAlloc(usize, &arena.allocator, .{ .age = 33 });
2965
2966 const id = try iter.next(.{});
2967 try testing.expect(id != null);
2968 try testing.expectEqual(@as(usize, 20), id.?);
2969 }
2970
2971 stmt.reset();
2972
2973 {
2974 var iter = try stmt.iteratorAlloc(usize, &arena.allocator, .{33});
2975
2976 const id = try iter.next(.{});
2977 try testing.expect(id != null);
2978 try testing.expectEqual(@as(usize, 20), id.?);
2979 }
2980}
2981
2982test "sqlite: oneDynamic" {
2983 var arena = std.heap.ArenaAllocator.init(testing.allocator);
2984 defer arena.deinit();
2985
2986 var db = try getTestDb();
2987 try addTestData(&db);
2988
2989 var diags = Diagnostics{};
2990
2991 {
2992 const id = try db.oneDynamic(
2993 usize,
2994 "SELECT id FROM user WHERE age = ?",
2995 .{ .diags = &diags },
2996 .{ .age = 33 },
2997 );
2998 try testing.expect(id != null);
2999 try testing.expectEqual(@as(usize, 20), id.?);
3000 }
3001
3002 {
3003 // Mix bind marker prefix for good measure
3004
3005 const id = try db.oneDynamic(
3006 usize,
3007 "SELECT id FROM user WHERE age = $age AND weight < :weight and id < @id",
3008 .{ .diags = &diags },
3009 .{ .id = 400, .age = 33, .weight = 200 },
3010 );
3011 try testing.expect(id != null);
3012 try testing.expectEqual(@as(usize, 20), id.?);
3013 }
3014
3015 {
3016 const id = try db.oneDynamicAlloc(
3017 usize,
3018 &arena.allocator,
3019 "SELECT id FROM user WHERE age = ?",
3020 .{ .diags = &diags },
3021 .{ .age = 33 },
3022 );
3023 try testing.expect(id != null);
3024 try testing.expectEqual(@as(usize, 20), id.?);
3025 }
3026
3027 {
3028 const id = try db.oneDynamicAlloc(
3029 usize,
3030 &arena.allocator,
3031 "SELECT id FROM user WHERE age = ?",
3032 .{ .diags = &diags },
3033 .{33},
3034 );
3035 try testing.expect(id != null);
3036 try testing.expectEqual(@as(usize, 20), id.?);
3037 }
3038}