mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-01 07:41:12 +00:00
fix: RocDec tests
* try in tests starts in 0.8.0 not 0.7.1 * needed an @intCast in fromU64 * removed if statements in test cases in favor of checking null equality and unwrapping the optional
This commit is contained in:
parent
8952b942b7
commit
d57277de4b
1 changed files with 34 additions and 50 deletions
|
@ -1,4 +1,5 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const math = std.math;
|
const math = std.math;
|
||||||
|
|
||||||
pub const RocDec = struct {
|
pub const RocDec = struct {
|
||||||
|
@ -13,7 +14,7 @@ pub const RocDec = struct {
|
||||||
pub const one_point_zero: comptime RocDec = .{ .num = one_point_zero_i128 };
|
pub const one_point_zero: comptime RocDec = .{ .num = one_point_zero_i128 };
|
||||||
|
|
||||||
pub fn fromU64(num: u64) RocDec {
|
pub fn fromU64(num: u64) RocDec {
|
||||||
return .{ .num = num * one_point_zero_i128 };
|
return .{ .num = @intCast(i128, num) * one_point_zero_i128 };
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn fromString(bytes_ptr: [*]const u8, length: usize) ?RocDec {
|
pub fn fromString(bytes_ptr: [*]const u8, length: usize) ?RocDec {
|
||||||
|
@ -310,118 +311,101 @@ fn mul_u128(a: u128, b: u128) U256 {
|
||||||
return .{ .hi = hi, .lo = lo };
|
return .{ .hi = hi, .lo = lo };
|
||||||
}
|
}
|
||||||
|
|
||||||
const one_e20: i256 = 100000000000000000000;
|
|
||||||
|
|
||||||
const testing = std.testing;
|
const testing = std.testing;
|
||||||
const expectEqual = testing.expectEqual;
|
const expectEqual = testing.expectEqual;
|
||||||
|
|
||||||
test "fromU64" {
|
test "fromU64" {
|
||||||
var dec = RocDec.fromU64(25);
|
var dec = RocDec.fromU64(25);
|
||||||
try expectEqual(RocDec{ .num = 25000000000000000000 }, dec);
|
|
||||||
|
expectEqual(RocDec{ .num = 25000000000000000000 }, dec);
|
||||||
}
|
}
|
||||||
|
|
||||||
test "fromString: empty" {
|
test "fromString: empty" {
|
||||||
var dec = RocDec.fromString("", 0);
|
var dec = RocDec.fromString("", 0);
|
||||||
if (dec) |_| {
|
|
||||||
unreachable;
|
expectEqual(dec, null);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
test "fromString: 0" {
|
test "fromString: 0" {
|
||||||
var dec = RocDec.fromString("0", 1);
|
var dec = RocDec.fromString("0", 1);
|
||||||
if (dec) |d| {
|
|
||||||
try expectEqual(RocDec{ .num = 0 }, d);
|
expectEqual(RocDec{ .num = 0 }, dec.?);
|
||||||
} else {
|
|
||||||
unreachable;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
test "fromString: 1" {
|
test "fromString: 1" {
|
||||||
var dec = RocDec.fromString("1", 1);
|
var dec = RocDec.fromString("1", 1);
|
||||||
if (dec) |d| {
|
|
||||||
try expectEqual(RocDec.one_point_zero, d);
|
expectEqual(RocDec.one_point_zero, dec.?);
|
||||||
} else {
|
|
||||||
unreachable;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
test "fromString: 123.45" {
|
test "fromString: 123.45" {
|
||||||
var dec = RocDec.fromString("123.45", 6);
|
var dec = RocDec.fromString("123.45", 6);
|
||||||
if (dec) |d| {
|
|
||||||
try expectEqual(RocDec{ .num = 123450000000000000000 }, d);
|
expectEqual(RocDec{ .num = 123450000000000000000 }, dec.?);
|
||||||
} else {
|
|
||||||
unreachable;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
test "fromString: .45" {
|
test "fromString: .45" {
|
||||||
var dec = RocDec.fromString(".45", 3);
|
var dec = RocDec.fromString(".45", 3);
|
||||||
if (dec) |d| {
|
|
||||||
try expectEqual(RocDec{ .num = 450000000000000000 }, d);
|
expectEqual(RocDec{ .num = 450000000000000000 }, dec.?);
|
||||||
} else {
|
|
||||||
unreachable;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
test "fromString: 123" {
|
test "fromString: 123" {
|
||||||
var dec = RocDec.fromString("123", 3);
|
var dec = RocDec.fromString("123", 3);
|
||||||
if (dec) |d| {
|
|
||||||
try expectEqual(RocDec{ .num = 123000000000000000000 }, d);
|
expectEqual(RocDec{ .num = 123000000000000000000 }, dec.?);
|
||||||
} else {
|
|
||||||
unreachable;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
test "fromString: abc" {
|
test "fromString: abc" {
|
||||||
var dec = RocDec.fromString("abc", 3);
|
var dec = RocDec.fromString("abc", 3);
|
||||||
if (dec) |_| {
|
|
||||||
unreachable;
|
expectEqual(dec, null);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
test "fromString: 123.abc" {
|
test "fromString: 123.abc" {
|
||||||
var dec = RocDec.fromString("123.abc", 7);
|
var dec = RocDec.fromString("123.abc", 7);
|
||||||
if (dec) |_| {
|
|
||||||
unreachable;
|
expectEqual(dec, null);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
test "fromString: abc.123" {
|
test "fromString: abc.123" {
|
||||||
var dec = RocDec.fromString("abc.123", 7);
|
var dec = RocDec.fromString("abc.123", 7);
|
||||||
if (dec) |_| {
|
|
||||||
unreachable;
|
expectEqual(dec, null);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
test "fromString: .123.1" {
|
test "fromString: .123.1" {
|
||||||
var dec = RocDec.fromString(".123.1", 6);
|
var dec = RocDec.fromString(".123.1", 6);
|
||||||
if (dec) |d| {
|
|
||||||
std.debug.print("d: {}", .{d});
|
expectEqual(dec, null);
|
||||||
unreachable;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
test "add: 0" {
|
test "add: 0" {
|
||||||
var dec: RocDec = .{ .num = 0 };
|
var dec: RocDec = .{ .num = 0 };
|
||||||
try expectEqual(RocDec{ .num = 0 }, dec.add(.{ .num = 0 }));
|
|
||||||
|
expectEqual(RocDec{ .num = 0 }, dec.add(.{ .num = 0 }));
|
||||||
}
|
}
|
||||||
|
|
||||||
test "add: 1" {
|
test "add: 1" {
|
||||||
var dec: RocDec = .{ .num = 0 };
|
var dec: RocDec = .{ .num = 0 };
|
||||||
try expectEqual(RocDec{ .num = 1 }, dec.add(.{ .num = 1 }));
|
|
||||||
|
expectEqual(RocDec{ .num = 1 }, dec.add(.{ .num = 1 }));
|
||||||
}
|
}
|
||||||
|
|
||||||
test "mul: by 0" {
|
test "mul: by 0" {
|
||||||
var dec: RocDec = .{ .num = 0 };
|
var dec: RocDec = .{ .num = 0 };
|
||||||
try expectEqual(RocDec{ .num = 0 }, dec.mul(.{ .num = 0 }));
|
|
||||||
|
expectEqual(RocDec{ .num = 0 }, dec.mul(.{ .num = 0 }));
|
||||||
}
|
}
|
||||||
|
|
||||||
test "mul: by 1" {
|
test "mul: by 1" {
|
||||||
var dec: RocDec = RocDec.fromU64(15);
|
var dec: RocDec = RocDec.fromU64(15);
|
||||||
try expectEqual(RocDec.fromU64(15), dec.mul(RocDec.fromU64(1)));
|
|
||||||
|
expectEqual(RocDec.fromU64(15), dec.mul(RocDec.fromU64(1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
test "mul: by 2" {
|
test "mul: by 2" {
|
||||||
var dec: RocDec = RocDec.fromU64(15);
|
var dec: RocDec = RocDec.fromU64(15);
|
||||||
try expectEqual(RocDec.fromU64(30), dec.mul(RocDec.fromU64(2)));
|
|
||||||
|
expectEqual(RocDec.fromU64(30), dec.mul(RocDec.fromU64(2)));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue