zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

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 }