1require "test/unit" 2require "bigdecimal" 3 4module TestBigDecimalBase 5 def setup 6 @mode = BigDecimal.mode(BigDecimal::EXCEPTION_ALL) 7 BigDecimal.mode(BigDecimal::EXCEPTION_ALL, true) 8 BigDecimal.mode(BigDecimal::EXCEPTION_UNDERFLOW, true) 9 BigDecimal.mode(BigDecimal::EXCEPTION_OVERFLOW, true) 10 BigDecimal.mode(BigDecimal::ROUND_MODE, BigDecimal::ROUND_HALF_UP) 11 BigDecimal.limit(0) 12 end 13 14 def teardown 15 [BigDecimal::EXCEPTION_INFINITY, BigDecimal::EXCEPTION_NaN, 16 BigDecimal::EXCEPTION_UNDERFLOW, BigDecimal::EXCEPTION_OVERFLOW].each do |mode| 17 BigDecimal.mode(mode, !(@mode & mode).zero?) 18 end 19 end 20 21 def under_gc_stress 22 stress, GC.stress = GC.stress, true 23 yield 24 ensure 25 GC.stress = stress 26 end 27end 28