diff options
| author | 2021-11-22 22:36:22 +0100 | |
|---|---|---|
| committer | 2021-11-22 23:34:41 +0100 | |
| commit | f442497e36722af2ca24ed85f65a78d2dbdc244f (patch) | |
| tree | 27729ae97589768cef1099842343e4adab3078df /sqlite.zig | |
| parent | dynamic statement: fix one() (diff) | |
| download | zig-sqlite-f442497e36722af2ca24ed85f65a78d2dbdc244f.tar.gz zig-sqlite-f442497e36722af2ca24ed85f65a78d2dbdc244f.tar.xz zig-sqlite-f442497e36722af2ca24ed85f65a78d2dbdc244f.zip | |
dynamic statement: add some tests
Diffstat (limited to '')
| -rw-r--r-- | sqlite.zig | 98 |
1 files changed, 98 insertions, 0 deletions
| @@ -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 | |||
| 2942 | test "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 | |||
| 2982 | test "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 | } | ||