1 # -*- encoding: binary -*-
5 class TestRaindrops < Test::Unit::TestCase
9 assert_equal 4, rd.size
14 assert_equal [0, 0, 0, 0] , rd.to_ary
19 assert_equal 1, rd.incr(0)
20 assert_equal [1, 0, 0, 0], rd.to_ary
25 assert_equal 6, rd.incr(3, 6)
26 assert_equal [0, 0, 0, 6], rd.to_ary
32 assert_equal 5, rd.decr(3, 1)
33 assert_equal [0, 0, 0, 5], rd.to_ary
39 pid = fork { rd.incr(1) }
40 _, status = Process.waitpid2(pid)
41 assert status.success?
43 assert_equal [0, 5], rd.to_ary
48 fork { 1000000.times { rd.incr(0) } }
49 1000.times { rd.decr(0) }
50 statuses = Process.waitall
51 statuses.each { |pid, status| assert status.success? }
52 assert_equal [999000], rd.to_ary
57 assert_raises(ArgumentError) { rd.incr(-1) }
58 assert_raises(ArgumentError) { rd.incr(2) }
59 assert_raises(ArgumentError) { rd.incr(0xffffffff) }
63 @rd = Raindrops.new(1)
65 assert_equal 1, @rd.incr(0)
66 assert_equal 1, rd.incr(0)
67 assert_equal 2, rd.incr(0)
69 assert_equal 1, @rd[0]
73 @rd = Raindrops.new(1)
75 assert_equal 1, @rd.incr(0)
76 assert_equal 1, rd.incr(0)
77 assert_equal 2, rd.incr(0)
79 assert_equal 1, @rd[0]
83 expect = 256.times.map { 0 }
84 rd = Raindrops.new(256)
85 assert_equal expect, rd.to_ary
86 assert_nothing_raised { rd[255] = 5 }
87 assert_equal 5, rd[255]
88 assert_nothing_raised { rd[2] = 2 }
92 assert_equal expect, rd.to_ary