aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/maximum_minimum.zig
diff options
context:
space:
mode:
authorRobin Voetter <robin@voetter.nl>2021-07-25 05:34:11 +0200
committerAndrew Kelley <andrew@ziglang.org>2021-07-26 20:41:00 -0400
commitcdeea3b0943b070d49d8d8d0855f9a38843e3ecc (patch)
tree541557cd87bddd0fb76cadd34e2cb9d20495a4bf /test/behavior/maximum_minimum.zig
parent50a29f7c213d4a906839dfd625b6280663348781 (diff)
downloadzig-cdeea3b0943b070d49d8d8d0855f9a38843e3ecc.tar.gz
zig-cdeea3b0943b070d49d8d8d0855f9a38843e3ecc.zip
minimum/maximum builtins
Diffstat (limited to 'test/behavior/maximum_minimum.zig')
-rw-r--r--test/behavior/maximum_minimum.zig58
1 files changed, 58 insertions, 0 deletions
diff --git a/test/behavior/maximum_minimum.zig b/test/behavior/maximum_minimum.zig
new file mode 100644
index 0000000000..5fef818f2b
--- /dev/null
+++ b/test/behavior/maximum_minimum.zig
@@ -0,0 +1,58 @@
+const std = @import("std");
+const builtin = @import("builtin");
+const mem = std.mem;
+const expect = std.testing.expect;
+const expectEqual = std.testing.expectEqual;
+const Vector = std.meta.Vector;
+
+test "@maximum" {
+ const S = struct {
+ fn doTheTest() !void {
+ try expectEqual(@as(i32, 10), @maximum(@as(i32, -3), @as(i32, 10)));
+ try expectEqual(@as(f32, 3.2), @maximum(@as(f32, 3.2), @as(f32, 0.68)));
+
+ var a: Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 };
+ var b: Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 };
+ var x = @maximum(a, b);
+ try expect(mem.eql(i32, &@as([4]i32, x), &[4]i32{ 2147483647, 2147483647, 30, 40 }));
+
+ var c: Vector(4, f32) = [4]f32{ 0, 0.4, -2.4, 7.8 };
+ var d: Vector(4, f32) = [4]f32{ -0.23, 0.42, -0.64, 0.9 };
+ var y = @maximum(c, d);
+ try expect(mem.eql(f32, &@as([4]f32, y), &[4]f32{ 0, 0.42, -0.64, 7.8 }));
+
+ var e: Vector(2, f32) = [2]f32{ 0, std.math.qnan_f32 };
+ var f: Vector(2, f32) = [2]f32{ std.math.qnan_f32, 0 };
+ var z = @maximum(e, f);
+ try expect(mem.eql(f32, &@as([2]f32, z), &[2]f32{ 0, 0 }));
+ }
+ };
+ try S.doTheTest();
+ comptime try S.doTheTest();
+}
+
+test "@minimum" {
+ const S = struct {
+ fn doTheTest() !void {
+ try expectEqual(@as(i32, -3), @minimum(@as(i32, -3), @as(i32, 10)));
+ try expectEqual(@as(f32, 0.68), @minimum(@as(f32, 3.2), @as(f32, 0.68)));
+
+ var a: Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 };
+ var b: Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 };
+ var x = @minimum(a, b);
+ try expect(mem.eql(i32, &@as([4]i32, x), &[4]i32{ 1, -2, 3, 4 }));
+
+ var c: Vector(4, f32) = [4]f32{ 0, 0.4, -2.4, 7.8 };
+ var d: Vector(4, f32) = [4]f32{ -0.23, 0.42, -0.64, 0.9 };
+ var y = @minimum(c, d);
+ try expect(mem.eql(f32, &@as([4]f32, y), &[4]f32{ -0.23, 0.4, -2.4, 0.9 }));
+
+ var e: Vector(2, f32) = [2]f32{ 0, std.math.qnan_f32 };
+ var f: Vector(2, f32) = [2]f32{ std.math.qnan_f32, 0 };
+ var z = @maximum(e, f);
+ try expect(mem.eql(f32, &@as([2]f32, z), &[2]f32{ 0, 0 }));
+ }
+ };
+ try S.doTheTest();
+ comptime try S.doTheTest();
+}