Sha256: 83176d0fe4adb17cdae56f745adf6d0f7b8d54379c7eb918b6c39b4e516fa908

Contents?: true

Size: 785 Bytes

Versions: 20

Compression:

Stored size: 785 Bytes

Contents

require File.expand_path(File.join(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
        DecNum.local_context do
          DecNum.context.precision = p
          n.times do
            t = (DecNum(1)/DecNum(3)).to_s
            n_fails += 1 if (t.size!=(p+2)) || (DecNum.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

20 entries across 20 versions & 1 rubygems

Version Path
flt-1.5.0 test/test_multithreading.rb
flt-1.4.7 test/test_multithreading.rb
flt-1.4.6 test/test_multithreading.rb
flt-1.4.5 test/test_multithreading.rb
flt-1.4.4 test/test_multithreading.rb
flt-1.4.3 test/test_multithreading.rb
flt-1.4.2 test/test_multithreading.rb
flt-1.4.1 test/test_multithreading.rb
flt-1.4.0 test/test_multithreading.rb
flt-1.3.4 test/test_multithreading.rb
flt-1.3.3 test/test_multithreading.rb
flt-1.3.2 test/test_multithreading.rb
flt-1.3.1 test/test_multithreading.rb
flt-1.3.0 test/test_multithreading.rb
flt-1.2.1 test/test_multithreading.rb
flt-1.2.0 test/test_multithreading.rb
flt-1.1.2 test/test_multithreading.rb
flt-1.1.1 test/test_multithreading.rb
flt-1.1.0 test/test_multithreading.rb
flt-1.0.0 test/test_multithreading.rb