Skip to content

Instantly share code, notes, and snippets.

@tony-o
Last active April 9, 2019 16:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tony-o/7fc00f9800214d09a84338d16a74b3cb to your computer and use it in GitHub Desktop.
Save tony-o/7fc00f9800214d09a84338d16a74b3cb to your computer and use it in GitHub Desktop.
# Tests for :HALF-[UP|DOWN|EVEN|ODD] and [TO|FROM]-ZERO rounding
# https://github.com/rakudo/rakudo/issues/2826
{
my @tests = [
[ 1.5, :HALF-UP(2), :HALF-DOWN(1), :HALF-EVEN(2), :HALF-ODD(1), :TO-ZERO(1), :FROM-ZERO(2) ],
[ 2, :HALF-UP(2), :HALF-DOWN(2), :HALF-EVEN(2), :HALF-ODD(2), :TO-ZERO(1), :FROM-ZERO(2) ],
[ 1.4999, :HALF-UP(1), :HALF-DOWN(1), :HALF-EVEN(1), :HALF-ODD(1), :TO-ZERO(1), :FROM-ZERO(1) ],
[ 0.1, :HALF-UP(0), :HALF-DOWN(0), :HALF-EVEN(0), :HALF-ODD(0), :TO-ZERO(0), :FROM-ZERO(0) ],
[ -1, :HALF-UP(-1), :HALF-DOWN(-1), :HALF-EVEN(-1), :HALF-ODD(-1), :TO-ZERO(-1), :FROM-ZERO(-1) ],
[ -5.9, :HALF-UP(-6), :HALF-DOWN(-6), :HALF-EVEN(-6), :HALF-ODD(-6), :TO-ZERO(-6), :FROM-ZERO(-6) ],
[ -0.5, :HALF-UP(0), :HALF-DOWN(-1), :HALF-EVEN(0), :HALF-ODD(-1), :TO-ZERO(0), :FROM-ZERO(-1) ],
[ -0.499, :HALF-UP(0), :HALF-DOWN(0), :HALF-EVEN(0), :HALF-ODD(0), :TO-ZERO(0), :FROM-ZERO(0) ],
[ -5.499, :HALF-UP(-5), :HALF-DOWN(-5), :HALF-EVEN(-5), :HALF-ODD(-5), :TO-ZERO(-5), :FROM-ZERO(-5) ],
[ -2, :HALF-UP(-2), :HALF-DOWN(-2), :HALF-EVEN(-2), :HALF-ODD(-2), :TO-ZERO(-2), :FROM-ZERO(-2) ],
];
my $to-round;
for @tests -> $test {
$to-round = $test.shift;
for @$test -> $test-pair {
ok $to-round.round(|Pair.new($test-pair.key,True)) == $test-pair.value, "Round {$to-round}:{$test-pair.key} == {$test-pair.value}";
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment