summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--query.zig60
1 files changed, 37 insertions, 23 deletions
diff --git a/query.zig b/query.zig
index f2907b9..bc1bbc1 100644
--- a/query.zig
+++ b/query.zig
@@ -128,7 +128,7 @@ pub const ParsedQuery = struct {
128 } 128 }
129 } 129 }
130 130
131 // The last character was ? so this must be an untyped bind marker. 131 // The last character was a bind marker prefix so this must be an untyped bind marker.
132 switch (state) { 132 switch (state) {
133 .bind_marker => { 133 .bind_marker => {
134 parsed_query.bind_markers[parsed_query.nb_bind_markers].typed = null; 134 parsed_query.bind_markers[parsed_query.nb_bind_markers].typed = null;
@@ -223,32 +223,46 @@ test "parsed query: bind markers types" {
223 expected_marker: BindMarker, 223 expected_marker: BindMarker,
224 }; 224 };
225 225
226 const testCases = &[_]testCase{ 226 const prefixes = &[_][]const u8{
227 .{ 227 "?",
228 .query = "foobar ?{usize}", 228 "?123",
229 .expected_marker = .{ .typed = usize }, 229 ":",
230 }, 230 ":hello",
231 .{ 231 "$",
232 .query = "foobar ?{text}", 232 "$foobar",
233 .expected_marker = .{ .typed = Text }, 233 "@",
234 }, 234 "@name",
235 .{
236 .query = "foobar ?{blob}",
237 .expected_marker = .{ .typed = Blob },
238 },
239 .{
240 .query = "foobar ?",
241 .expected_marker = .{ .typed = null },
242 },
243 }; 235 };
244 236
245 inline for (testCases) |tc| { 237 inline for (prefixes) |prefix| {
246 comptime var parsed_query = ParsedQuery.from(tc.query); 238 const testCases = &[_]testCase{
239 .{
240 .query = "foobar " ++ prefix ++ "{usize}",
241 .expected_marker = .{ .typed = usize },
242 },
243 .{
244 .query = "foobar " ++ prefix ++ "{text}",
245 .expected_marker = .{ .typed = Text },
246 },
247 .{
248 .query = "foobar " ++ prefix ++ "{blob}",
249 .expected_marker = .{ .typed = Blob },
250 },
251 .{
252 .query = "foobar " ++ prefix,
253 .expected_marker = .{ .typed = null },
254 },
255 };
247 256
248 try testing.expectEqual(1, parsed_query.nb_bind_markers); 257 inline for (testCases) |tc| {
258 @setEvalBranchQuota(100000);
259 comptime var parsed_query = ParsedQuery.from(tc.query);
249 260
250 const bind_marker = parsed_query.bind_markers[0]; 261 try testing.expectEqual(1, parsed_query.nb_bind_markers);
251 try testing.expectEqual(tc.expected_marker.typed, bind_marker.typed); 262
263 const bind_marker = parsed_query.bind_markers[0];
264 try testing.expectEqual(tc.expected_marker.typed, bind_marker.typed);
265 }
252 } 266 }
253} 267}
254 268