[前][次][番号順一覧][スレッド一覧]

ruby-changes:64703

From: Kenta <ko1@a...>
Date: Sat, 2 Jan 2021 00:54:27 +0900 (JST)
Subject: [ruby-changes:64703] c2c0147538 (master): [ruby/bigdecimal] Fix test for Ruby 2.4

https://git.ruby-lang.org/ruby.git/commit/?id=c2c0147538

From c2c0147538f72e37a6c718456751bc5776bebd93 Mon Sep 17 00:00:00 2001
From: Kenta Murata <mrkn@m...>
Date: Fri, 1 Jan 2021 16:00:23 +0900
Subject: [ruby/bigdecimal] Fix test for Ruby 2.4

Ruby 2.4 does not have RbConfig::LIMITS.

https://github.com/ruby/bigdecimal/commit/c8087523b0

diff --git a/ext/bigdecimal/bigdecimal.gemspec b/ext/bigdecimal/bigdecimal.gemspec
index f8fbde7..caf449b 100644
--- a/ext/bigdecimal/bigdecimal.gemspec
+++ b/ext/bigdecimal/bigdecimal.gemspec
@@ -35,6 +35,7 @@ Gem::Specification.new do |s| https://github.com/ruby/ruby/blob/trunk/ext/bigdecimal/bigdecimal.gemspec#L35
 
   s.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
 
+  s.add_development_dependency "fiddle"
   s.add_development_dependency "rake", ">= 12.3.3"
   s.add_development_dependency "rake-compiler", ">= 0.9"
   s.add_development_dependency "minitest", "< 5.0.0"
diff --git a/test/bigdecimal/test_bigdecimal.rb b/test/bigdecimal/test_bigdecimal.rb
index c2591de..5599234 100644
--- a/test/bigdecimal/test_bigdecimal.rb
+++ b/test/bigdecimal/test_bigdecimal.rb
@@ -6,6 +6,21 @@ require 'rbconfig/sizeof' https://github.com/ruby/ruby/blob/trunk/test/bigdecimal/test_bigdecimal.rb#L6
 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]
+    LIMITS = {
+      "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],
@@ -111,20 +126,15 @@ class TestBigDecimal < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/bigdecimal/test_bigdecimal.rb#L126
     assert_equal(BigDecimal((2**100).to_s), BigDecimal(2**100))
     assert_equal(BigDecimal((-2**100).to_s), BigDecimal(-2**100))
 
-    assert_equal(BigDecimal(RbConfig::LIMITS["FIXNUM_MIN"].to_s),
-                 BigDecimal(RbConfig::LIMITS["FIXNUM_MIN"]))
+    assert_equal(BigDecimal(LIMITS["FIXNUM_MIN"].to_s), BigDecimal(LIMITS["FIXNUM_MIN"]))
 
-    assert_equal(BigDecimal(RbConfig::LIMITS["FIXNUM_MAX"].to_s),
-                 BigDecimal(RbConfig::LIMITS["FIXNUM_MAX"]))
+    assert_equal(BigDecimal(LIMITS["FIXNUM_MAX"].to_s), BigDecimal(LIMITS["FIXNUM_MAX"]))
 
-    assert_equal(BigDecimal(RbConfig::LIMITS["INT64_MIN"].to_s),
-                 BigDecimal(RbConfig::LIMITS["INT64_MIN"]))
+    assert_equal(BigDecimal(LIMITS["INT64_MIN"].to_s), BigDecimal(LIMITS["INT64_MIN"]))
 
-    assert_equal(BigDecimal(RbConfig::LIMITS["INT64_MAX"].to_s),
-                 BigDecimal(RbConfig::LIMITS["INT64_MAX"]))
+    assert_equal(BigDecimal(LIMITS["INT64_MAX"].to_s), BigDecimal(LIMITS["INT64_MAX"]))
 
-    assert_equal(BigDecimal(RbConfig::LIMITS["UINT64_MAX"].to_s),
-                 BigDecimal(RbConfig::LIMITS["UINT64_MAX"]))
+    assert_equal(BigDecimal(LIMITS["UINT64_MAX"].to_s), BigDecimal(LIMITS["UINT64_MAX"]))
   end
 
   def test_BigDecimal_with_rational
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]