From f865e12fd3df87161bf75aeb54cf4d1a01bb86b8 Mon Sep 17 00:00:00 2001 From: "Jeffrey C. Ollie" Date: Sat, 29 Aug 2026 21:34:05 -0500 Subject: [PATCH] test configGetValues, its string-keyed variant, and iterator reset Covers multi-value splitting on ';', ValuesIterator.start resetting iteration, the string-keyed lookup, and that an unknown key returns null rather than an empty iterator. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_017i7R7ReKJAHGQpitxGXqrb --- src/tests.zig | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/tests.zig b/src/tests.zig index d88ef9b..6dd1b43 100644 --- a/src/tests.zig +++ b/src/tests.zig @@ -358,6 +358,32 @@ test "Database configGet and configSet" { try std.testing.expectError(error.ReadOnlyDatabase, db.configSet(.user_name, "nope")); } +test "Database.configGetValues" { + var test_db = try fixture.corpusDatabase(); + defer test_db.deinit(); + const db = test_db.database; + + try db.configSet(.exclude_tags, "spam;deleted"); + + var values = db.configGetValues(.exclude_tags) orelse return error.TestUnexpectedResult; + defer values.deinit(); + try std.testing.expectEqualStrings("spam", values.next() orelse return error.TestUnexpectedResult); + try std.testing.expectEqualStrings("deleted", values.next() orelse return error.TestUnexpectedResult); + try std.testing.expectEqual(@as(?[:0]const u8, null), values.next()); + + // start() resets the iterator to the first value. + values.start(); + try std.testing.expectEqualStrings("spam", values.next() orelse return error.TestUnexpectedResult); + + // The string-keyed variant reads the same configuration. + var by_string = db.configGetValuesString("search.exclude_tags") orelse return error.TestUnexpectedResult; + defer by_string.deinit(); + try std.testing.expectEqualStrings("spam", by_string.next() orelse return error.TestUnexpectedResult); + + // An unknown key yields no iterator at all. + try std.testing.expect(db.configGetValuesString("bogus.key") == null); +} + test "Database.getAllTags" { var test_db = try fixture.corpusDatabase(); defer test_db.deinit(); -- 2.51.2