diff --git a/lib/std/testing.zig b/lib/std/testing.zig index fb75672fbd..1daf8dd740 100644 --- a/lib/std/testing.zig +++ b/lib/std/testing.zig @@ -125,7 +125,7 @@ fn expectEqualInner(comptime T: type, expected: T, actual: T) !void { var i: usize = 0; while (i < info.len) : (i += 1) { if (!std.meta.eql(expected[i], actual[i])) { - print("index {} incorrect. expected {}, found {}\n", .{ + print("index {d} incorrect. expected {any}, found {any}\n", .{ i, expected[i], actual[i], }); return error.TestExpectedEqual; @@ -214,6 +214,34 @@ test "expectEqual union with comptime-only field" { try expectEqual(U{ .a = {} }, .a); } +test "expectEqual nested array" { + const a = [2][2]f32{ + [_]f32{ 1.0, 0.0 }, + [_]f32{ 0.0, 1.0 }, + }; + + const b = [2][2]f32{ + [_]f32{ 1.0, 0.0 }, + [_]f32{ 0.0, 1.0 }, + }; + + try expectEqual(a, b); +} + +test "expectEqual vector" { + const a: @Vector(4, u32) = @splat(4); + const b: @Vector(4, u32) = @splat(4); + + try expectEqual(a, b); +} + +test "expectEqual null" { + const a = .{null}; + const b = @Vector(1, ?*u8){null}; + + try expectEqual(a, b); +} + /// This function is intended to be used only in tests. When the formatted result of the template /// and its arguments does not equal the expected text, it prints diagnostics to stderr to show how /// they are not equal, then returns an error. It depends on `expectEqualStrings()` for printing @@ -584,27 +612,6 @@ pub fn tmpDir(opts: std.fs.Dir.OpenOptions) TmpDir { }; } -test "expectEqual nested array" { - const a = [2][2]f32{ - [_]f32{ 1.0, 0.0 }, - [_]f32{ 0.0, 1.0 }, - }; - - const b = [2][2]f32{ - [_]f32{ 1.0, 0.0 }, - [_]f32{ 0.0, 1.0 }, - }; - - try expectEqual(a, b); -} - -test "expectEqual vector" { - const a: @Vector(4, u32) = @splat(4); - const b: @Vector(4, u32) = @splat(4); - - try expectEqual(a, b); -} - pub fn expectEqualStrings(expected: []const u8, actual: []const u8) !void { if (std.mem.indexOfDiff(u8, actual, expected)) |diff_index| { print("\n====== expected this output: =========\n", .{});