Skip to content

Commit

Permalink
test: Move common constants
Browse files Browse the repository at this point in the history
  • Loading branch information
mrkn committed Nov 5, 2022
1 parent 4f0894c commit 62c9f20
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 35 deletions.
36 changes: 35 additions & 1 deletion test/bigdecimal/helper.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,23 @@
# frozen_string_literal: false
require "test/unit"
require "bigdecimal"
require 'rbconfig/sizeof'
require "rbconfig/sizeof"

module TestBigDecimalBase
ROUNDING_MODE_MAP = [
[ BigDecimal::ROUND_UP, :up],
[ BigDecimal::ROUND_DOWN, :down],
[ BigDecimal::ROUND_DOWN, :truncate],
[ BigDecimal::ROUND_HALF_UP, :half_up],
[ BigDecimal::ROUND_HALF_UP, :default],
[ BigDecimal::ROUND_HALF_DOWN, :half_down],
[ BigDecimal::ROUND_HALF_EVEN, :half_even],
[ BigDecimal::ROUND_HALF_EVEN, :banker],
[ BigDecimal::ROUND_CEILING, :ceiling],
[ BigDecimal::ROUND_CEILING, :ceil],
[ BigDecimal::ROUND_FLOOR, :floor],
]

if RbConfig::SIZEOF.key?("int64_t")
SIZEOF_DECDIG = RbConfig::SIZEOF["int32_t"]
BASE = 1_000_000_000
Expand All @@ -14,6 +28,26 @@ module TestBigDecimalBase
BASE_FIG = 4
end

if defined? RbConfig::LIMITS
LIMITS = RbConfig::LIMITS
else
require "fiddle"
LONG_MAX = (1 << (Fiddle::SIZEOF_LONG*8 - 1)) - 1
LONG_MIN = [LONG_MAX + 1].pack("L!").unpack("l!")[0]
LLONG_MAX = (1 << (Fiddle::SIZEOF_LONG_LONG*8 - 1)) - 1
LLONG_MIN = [LLONG_MAX + 1].pack("Q!").unpack("q!")[0]
ULLONG_MAX = (1 << Fiddle::SIZEOF_LONG_LONG*8) - 1
LIMITS = {
"LLONG_MIN" => LLONG_MIN,
"ULLONG_MAX" => ULLONG_MAX,
"FIXNUM_MIN" => LONG_MIN / 2,
"FIXNUM_MAX" => LONG_MAX / 2,
"INT64_MIN" => -9223372036854775808,
"INT64_MAX" => 9223372036854775807,
"UINT64_MAX" => 18446744073709551615,
}.freeze
end

def setup
@mode = BigDecimal.mode(BigDecimal::EXCEPTION_ALL)
BigDecimal.mode(BigDecimal::EXCEPTION_ALL, true)
Expand Down
34 changes: 0 additions & 34 deletions test/bigdecimal/test_bigdecimal.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,40 +5,6 @@
class TestBigDecimal < Test::Unit::TestCase
include TestBigDecimalBase

if defined? RbConfig::LIMITS
LIMITS = RbConfig::LIMITS
else
require 'fiddle'
LONG_MAX = (1 << (Fiddle::SIZEOF_LONG*8 - 1)) - 1
LONG_MIN = [LONG_MAX + 1].pack("L!").unpack("l!")[0]
LLONG_MAX = (1 << (Fiddle::SIZEOF_LONG_LONG*8 - 1)) - 1
LLONG_MIN = [LLONG_MAX + 1].pack("Q!").unpack("q!")[0]
ULLONG_MAX = (1 << Fiddle::SIZEOF_LONG_LONG*8) - 1
LIMITS = {
"LLONG_MIN" => LLONG_MIN,
"ULLONG_MAX" => ULLONG_MAX,
"FIXNUM_MIN" => LONG_MIN / 2,
"FIXNUM_MAX" => LONG_MAX / 2,
"INT64_MIN" => -9223372036854775808,
"INT64_MAX" => 9223372036854775807,
"UINT64_MAX" => 18446744073709551615,
}.freeze
end

ROUNDING_MODE_MAP = [
[ BigDecimal::ROUND_UP, :up],
[ BigDecimal::ROUND_DOWN, :down],
[ BigDecimal::ROUND_DOWN, :truncate],
[ BigDecimal::ROUND_HALF_UP, :half_up],
[ BigDecimal::ROUND_HALF_UP, :default],
[ BigDecimal::ROUND_HALF_DOWN, :half_down],
[ BigDecimal::ROUND_HALF_EVEN, :half_even],
[ BigDecimal::ROUND_HALF_EVEN, :banker],
[ BigDecimal::ROUND_CEILING, :ceiling],
[ BigDecimal::ROUND_CEILING, :ceil],
[ BigDecimal::ROUND_FLOOR, :floor],
]

def assert_nan(x)
assert(x.nan?, "Expected #{x.inspect} to be NaN")
end
Expand Down

0 comments on commit 62c9f20

Please sign in to comment.