fixint_test.zig (6606B) - Raw
1 const std = @import("std"); 2 const math = std.math; 3 const testing = std.testing; 4 5 const fixint = @import("fixint.zig").fixint; 6 7 fn 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 12 test "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 32 test "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 53 test "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 78 test "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 102 test "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 127 test "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 }