Sha256: cdec934a5cf343327cb5e379e98001abf734af3733424d308e689bd6cb3dcddc

Contents?: true

Size: 764 Bytes

Versions: 4

Compression:

Stored size: 764 Bytes

Contents

require File.dirname(__FILE__) + '/helper.rb'



class TestMultithreading < Test::Unit::TestCase

  def setup
    initialize_context
  end

  def test_concurrent_precision
    threads = []
    for prec in (5..100)
      threads << Thread.new(prec) do |p|
        n = 10000/(p/3)
        n_fails = 0
        Decimal.local_context do
          Decimal.context.precision = p
          n.times do
            t = (Decimal(1)/Decimal(3)).to_s
            n_fails += 1 if (t.size!=(p+2)) || (Decimal.context.precision!=p)
          end
        end
        Thread.current[:n_fails] = n_fails
      end
    end
    total_fails = 0
    threads.each{|thr| thr.join; total_fails += thr[:n_fails]}
    assert total_fails==0,"Context precision different per thread"
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ruby-decimal-0.1.0 test/test_multithreading.rb
ruby-decimal-0.2.0 test/test_multithreading.rb
ruby-decimal-0.2.1 test/test_multithreading.rb
ruby-decimal-0.2.2 test/test_multithreading.rb