mirror of
https://github.com/ziglang/zig.git
synced 2026-01-20 22:35:24 +00:00
Add expectWithinMargin and test
This commit is contained in:
parent
5229f6ec68
commit
2fc2355fc3
@ -168,6 +168,32 @@ test "expectEqual.union(enum)" {
|
||||
expectEqual(a10, a10);
|
||||
}
|
||||
|
||||
/// This function is intended to be used only in tests. When the actual value is not
|
||||
/// within the margin of the expected value,
|
||||
/// prints diagnostics to stderr to show exactly how they are not equal, then aborts.
|
||||
/// The types must be floating point
|
||||
pub fn expectWithinMargin(expected: var, actual: @TypeOf(expected), margin: @TypeOf(expected)) void {
|
||||
std.debug.assert(margin >= 0.0);
|
||||
|
||||
switch (@typeInfo(@TypeOf(actual))) {
|
||||
.Float,
|
||||
.ComptimeFloat,
|
||||
=> {
|
||||
if (@fabs(expected - actual) > margin) {
|
||||
std.debug.panic("actual {}, not within margin {} of expected {}", .{ actual, margin, expected });
|
||||
}
|
||||
},
|
||||
else => @compileError("Unable to compare non floating point values"),
|
||||
}
|
||||
}
|
||||
|
||||
test "expectWithinMargin.f32" {
|
||||
const x: f32 = 12.0;
|
||||
const y: f32 = 12.06;
|
||||
|
||||
expectWithinMargin(x, y, 0.1);
|
||||
}
|
||||
|
||||
/// This function is intended to be used only in tests. When the two slices are not
|
||||
/// equal, prints diagnostics to stderr to show exactly how they are not equal,
|
||||
/// then aborts.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user