From b4d8be82ef92e32b38e2faee3c9de625d61a31b3 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sun, 1 Mar 2026 00:07:21 -0800 Subject: [PATCH] add dynamic test --- qrcode.zig | 8 ++++++ test.zig | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) diff --git a/qrcode.zig b/qrcode.zig index df8263d98b0495abfeab6c6221227e78756bfed3..a0822ba0968f37225ef565e1091a491cc92aaa8f 100644 --- a/qrcode.zig +++ b/qrcode.zig @@ -1066,6 +1066,14 @@ fn versionBits(version: u16) u18 { })[version]; } +pub fn getMinVersion(comptime level: Level, comptime mode: Mode, length: usize) ?u16 { + const max_lengths = maxLenPerModeLevelVersion(mode, level); + for (max_lengths, 0..) |l, i| { + if (l > length) return @intCast(i); + } + return null; +} + // // // diff --git a/test.zig b/test.zig index 05c09d6d20222c18829300ee22b02b11ce5f90cc..71cb85e06e526568bf39f5443f88a6632f816699 100644 --- a/test.zig +++ b/test.zig @@ -988,3 +988,85 @@ test { \\ ); } + +test { + const allocator = std.testing.allocator; + const input = "https://en.wikipedia.org/wiki/Main_Page"; + const version = qrcode.getMinVersion(.L, .latin1, input.len).?; + switch (version) { + inline 1...40 => |v| { + const grid = qrcode.encode(.latin1, .L, v, input); + const blocks = try grid.asBlockString2(allocator); + defer allocator.free(blocks); + try expect(blocks).toEqualString( + \\█▀▀▀▀▀█ ▄▄█ ▀█▄ ▀▄ █▀▀▀▀▀█| + \\█ ███ █ ▀▄ ▄ █▄█▀█▀▀ █ ███ █| + \\█ ▀▀▀ █ █▀█ █▀▀▄█▄█▄▄ █ ▀▀▀ █| + \\▀▀▀▀▀▀▀ █ █▄▀ █ ▀▄█▄█ ▀▀▀▀▀▀▀| + \\▀█ █▄ ▀▀▄▄ ███▀█▄ ▀▀ ▄█▀▀▄▀▀▄| + \\▄ ▀▀▀ ▀▀▀▄▄███ ▄▀▄█▄ ▀█ ▀██ | + \\▀█▄▄██▀▀▄ ▀█ ▄▀▀▀█▄▄██▀▀ ▀ ▀▀| + \\ ▄ █▀█▀ ▄▀█ ▀▀▄ ▄▄▄▀ ▄▀▄█▀█▀| + \\ █▀▄▀▀ ▄█▄ ██▄▀▄█ ▀█▄ ▄ ▀▄| + \\▀ ▀█▀▀ █▀█ █▄▄▄█ █ ▄ ▄ ██| + \\▀ ▀▀ ▀ █▄ ▄ ▄ █ ▄█▀▀▀█ █▄▄| + \\█▀▀▀▀▀█ ▀▄▀ ▄▄█▀█ █ ▀ █▄▄▀▄| + \\█ ███ █ ▄▀▀▄█ █▀▀ ▄▀▀███▄▄█▀| + \\█ ▀▀▀ █ ▄█▀ █▄▄ ▄███▄█ ▀▀▀▄▀| + \\▀▀▀▀▀▀▀ ▀ ▀ ▀▀▀ ▀▀ ▀ ▀▀▀ ▀ | + \\ + ); + const braille = try grid.asBrailleString(allocator); + defer allocator.free(braille); + try expect(braille).toEqualString( + \\⡏⣭⡍⡇⢖⠃⡀⣝⡦⡬⠆⡏⣭⡍⡇| + \\⠧⠭⠥⠇⡏⣇⠏⡕⢗⣗⡆⠧⠭⠥⠇| + \\⡙⠼⠆⠭⢖⣸⣿⠙⡢⣩⡐⢯⠱⣭⠂| + \\⢙⢲⢿⠍⢂⢽⠰⢍⢙⣒⠟⡩⣨⢬⠅| + \\⠄⠋⢮⠥⠚⡦⡟⣎⣚⡄⡝⡂⡐⢨⡆| + \\⡥⠭⠤⡅⢗⠔⠀⣂⡧⡔⡏⠍⣇⡳⡂| + \\⡇⠿⠇⡇⣪⠕⣇⡘⣩⣴⣩⠛⠷⢞⠅| + \\⠉⠉⠉⠁⠁⠈⠈⠉⠈⠁⠁⠈⠉⠈⠀| + \\ + ); + const svg = try grid.asSvg(allocator); + defer allocator.free(svg); + try expect(svg).toEqualString( + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + \\ + ); + }, + else => unreachable, + } +} -- 2.54.0