master
  1const std = @import("std");
  2const math = std.math;
  3const testing = std.testing;
  4
  5const fixint = @import("fixint.zig").fixint;
  6
  7fn test__fixint(comptime fp_t: type, comptime fixint_t: type, a: fp_t, expected: fixint_t) !void {
  8    const x = fixint(fp_t, fixint_t, a);
  9    try testing.expect(x == expected);
 10}
 11
 12test "fixint.i1" {
 13    try test__fixint(f32, i1, -math.inf(f32), -1);
 14    try test__fixint(f32, i1, -math.floatMax(f32), -1);
 15    try test__fixint(f32, i1, -2.0, -1);
 16    try test__fixint(f32, i1, -1.1, -1);
 17    try test__fixint(f32, i1, -1.0, -1);
 18    try test__fixint(f32, i1, -0.9, 0);
 19    try test__fixint(f32, i1, -0.1, 0);
 20    try test__fixint(f32, i1, -math.floatMin(f32), 0);
 21    try test__fixint(f32, i1, -0.0, 0);
 22    try test__fixint(f32, i1, 0.0, 0);
 23    try test__fixint(f32, i1, math.floatMin(f32), 0);
 24    try test__fixint(f32, i1, 0.1, 0);
 25    try test__fixint(f32, i1, 0.9, 0);
 26    try test__fixint(f32, i1, 1.0, 0);
 27    try test__fixint(f32, i1, 2.0, 0);
 28    try test__fixint(f32, i1, math.floatMax(f32), 0);
 29    try test__fixint(f32, i1, math.inf(f32), 0);
 30}
 31
 32test "fixint.i2" {
 33    try test__fixint(f32, i2, -math.inf(f32), -2);
 34    try test__fixint(f32, i2, -math.floatMax(f32), -2);
 35    try test__fixint(f32, i2, -2.0, -2);
 36    try test__fixint(f32, i2, -1.9, -1);
 37    try test__fixint(f32, i2, -1.1, -1);
 38    try test__fixint(f32, i2, -1.0, -1);
 39    try test__fixint(f32, i2, -0.9, 0);
 40    try test__fixint(f32, i2, -0.1, 0);
 41    try test__fixint(f32, i2, -math.floatMin(f32), 0);
 42    try test__fixint(f32, i2, -0.0, 0);
 43    try test__fixint(f32, i2, 0.0, 0);
 44    try test__fixint(f32, i2, math.floatMin(f32), 0);
 45    try test__fixint(f32, i2, 0.1, 0);
 46    try test__fixint(f32, i2, 0.9, 0);
 47    try test__fixint(f32, i2, 1.0, 1);
 48    try test__fixint(f32, i2, 2.0, 1);
 49    try test__fixint(f32, i2, math.floatMax(f32), 1);
 50    try test__fixint(f32, i2, math.inf(f32), 1);
 51}
 52
 53test "fixint.i3" {
 54    try test__fixint(f32, i3, -math.inf(f32), -4);
 55    try test__fixint(f32, i3, -math.floatMax(f32), -4);
 56    try test__fixint(f32, i3, -4.0, -4);
 57    try test__fixint(f32, i3, -3.0, -3);
 58    try test__fixint(f32, i3, -2.0, -2);
 59    try test__fixint(f32, i3, -1.9, -1);
 60    try test__fixint(f32, i3, -1.1, -1);
 61    try test__fixint(f32, i3, -1.0, -1);
 62    try test__fixint(f32, i3, -0.9, 0);
 63    try test__fixint(f32, i3, -0.1, 0);
 64    try test__fixint(f32, i3, -math.floatMin(f32), 0);
 65    try test__fixint(f32, i3, -0.0, 0);
 66    try test__fixint(f32, i3, 0.0, 0);
 67    try test__fixint(f32, i3, math.floatMin(f32), 0);
 68    try test__fixint(f32, i3, 0.1, 0);
 69    try test__fixint(f32, i3, 0.9, 0);
 70    try test__fixint(f32, i3, 1.0, 1);
 71    try test__fixint(f32, i3, 2.0, 2);
 72    try test__fixint(f32, i3, 3.0, 3);
 73    try test__fixint(f32, i3, 4.0, 3);
 74    try test__fixint(f32, i3, math.floatMax(f32), 3);
 75    try test__fixint(f32, i3, math.inf(f32), 3);
 76}
 77
 78test "fixint.i32" {
 79    try test__fixint(f64, i32, -math.inf(f64), math.minInt(i32));
 80    try test__fixint(f64, i32, -math.floatMax(f64), math.minInt(i32));
 81    try test__fixint(f64, i32, @as(f64, math.minInt(i32)), math.minInt(i32));
 82    try test__fixint(f64, i32, @as(f64, math.minInt(i32)) + 1, math.minInt(i32) + 1);
 83    try test__fixint(f64, i32, -2.0, -2);
 84    try test__fixint(f64, i32, -1.9, -1);
 85    try test__fixint(f64, i32, -1.1, -1);
 86    try test__fixint(f64, i32, -1.0, -1);
 87    try test__fixint(f64, i32, -0.9, 0);
 88    try test__fixint(f64, i32, -0.1, 0);
 89    try test__fixint(f64, i32, -@as(f64, math.floatMin(f32)), 0);
 90    try test__fixint(f64, i32, -0.0, 0);
 91    try test__fixint(f64, i32, 0.0, 0);
 92    try test__fixint(f64, i32, @as(f64, math.floatMin(f32)), 0);
 93    try test__fixint(f64, i32, 0.1, 0);
 94    try test__fixint(f64, i32, 0.9, 0);
 95    try test__fixint(f64, i32, 1.0, 1);
 96    try test__fixint(f64, i32, @as(f64, math.maxInt(i32)) - 1, math.maxInt(i32) - 1);
 97    try test__fixint(f64, i32, @as(f64, math.maxInt(i32)), math.maxInt(i32));
 98    try test__fixint(f64, i32, math.floatMax(f64), math.maxInt(i32));
 99    try test__fixint(f64, i32, math.inf(f64), math.maxInt(i32));
100}
101
102test "fixint.i64" {
103    try test__fixint(f64, i64, -math.inf(f64), math.minInt(i64));
104    try test__fixint(f64, i64, -math.floatMax(f64), math.minInt(i64));
105    try test__fixint(f64, i64, @as(f64, math.minInt(i64)), math.minInt(i64));
106    try test__fixint(f64, i64, @as(f64, math.minInt(i64)) + 1, math.minInt(i64));
107    try test__fixint(f64, i64, @as(f64, math.minInt(i64) / 2), math.minInt(i64) / 2);
108    try test__fixint(f64, i64, -2.0, -2);
109    try test__fixint(f64, i64, -1.9, -1);
110    try test__fixint(f64, i64, -1.1, -1);
111    try test__fixint(f64, i64, -1.0, -1);
112    try test__fixint(f64, i64, -0.9, 0);
113    try test__fixint(f64, i64, -0.1, 0);
114    try test__fixint(f64, i64, -@as(f64, math.floatMin(f32)), 0);
115    try test__fixint(f64, i64, -0.0, 0);
116    try test__fixint(f64, i64, 0.0, 0);
117    try test__fixint(f64, i64, @as(f64, math.floatMin(f32)), 0);
118    try test__fixint(f64, i64, 0.1, 0);
119    try test__fixint(f64, i64, 0.9, 0);
120    try test__fixint(f64, i64, 1.0, 1);
121    try test__fixint(f64, i64, @as(f64, math.maxInt(i64)) - 1, math.maxInt(i64));
122    try test__fixint(f64, i64, @as(f64, math.maxInt(i64)), math.maxInt(i64));
123    try test__fixint(f64, i64, math.floatMax(f64), math.maxInt(i64));
124    try test__fixint(f64, i64, math.inf(f64), math.maxInt(i64));
125}
126
127test "fixint.i128" {
128    try test__fixint(f64, i128, -math.inf(f64), math.minInt(i128));
129    try test__fixint(f64, i128, -math.floatMax(f64), math.minInt(i128));
130    try test__fixint(f64, i128, @as(f64, math.minInt(i128)), math.minInt(i128));
131    try test__fixint(f64, i128, @as(f64, math.minInt(i128)) + 1, math.minInt(i128));
132    try test__fixint(f64, i128, -2.0, -2);
133    try test__fixint(f64, i128, -1.9, -1);
134    try test__fixint(f64, i128, -1.1, -1);
135    try test__fixint(f64, i128, -1.0, -1);
136    try test__fixint(f64, i128, -0.9, 0);
137    try test__fixint(f64, i128, -0.1, 0);
138    try test__fixint(f64, i128, -@as(f64, math.floatMin(f32)), 0);
139    try test__fixint(f64, i128, -0.0, 0);
140    try test__fixint(f64, i128, 0.0, 0);
141    try test__fixint(f64, i128, @as(f64, math.floatMin(f32)), 0);
142    try test__fixint(f64, i128, 0.1, 0);
143    try test__fixint(f64, i128, 0.9, 0);
144    try test__fixint(f64, i128, 1.0, 1);
145    try test__fixint(f64, i128, @as(f64, math.maxInt(i128)) - 1, math.maxInt(i128));
146    try test__fixint(f64, i128, @as(f64, math.maxInt(i128)), math.maxInt(i128));
147    try test__fixint(f64, i128, math.floatMax(f64), math.maxInt(i128));
148    try test__fixint(f64, i128, math.inf(f64), math.maxInt(i128));
149}