ruby-changes:38942
From: nobu <ko1@a...>
Date: Thu, 25 Jun 2015 14:26:42 +0900 (JST)
Subject: [ruby-changes:38942] nobu:r51023 (trunk): test: refine assertions
nobu 2015-06-25 14:26:31 +0900 (Thu, 25 Jun 2015) New Revision: 51023 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=51023 Log: test: refine assertions * test/test_prime.rb (test_eratosthenes_works_fine_after_timeout): use assert_raise to check timeout. * test/test_securerandom.rb: check if results are hexadecimal strings, and refine failure messages. * test/test_tracer.rb (test_tracer_with_option_r_without_gems): use assert_equal to compare. Modified files: trunk/test/test_prime.rb trunk/test/test_securerandom.rb trunk/test/test_tracer.rb Index: test/test_tracer.rb =================================================================== --- test/test_tracer.rb (revision 51022) +++ test/test_tracer.rb (revision 51023) @@ -18,12 +18,7 @@ class TestTracer < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/test_tracer.rb#L18 def test_tracer_with_option_r_without_gems assert_in_out_err(%w[--disable-gems -rtracer -e 1]) do |(*lines),| - case lines.size - when 1 - # do nothing - else - flunk "unexpected output from `ruby --disable-gems -rtracer -e 1`" - end + assert_equal 1, lines.size, "unexpected output from `ruby --disable-gems -rtracer -e 1`" assert_equal "#0:-e:1::-: 1", lines.last end end Index: test/test_prime.rb =================================================================== --- test/test_prime.rb (revision 51022) +++ test/test_prime.rb (revision 51023) @@ -179,10 +179,8 @@ class TestPrime < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/test_prime.rb#L179 return n end - begin + assert_raise(Timeout::Error) do Timeout.timeout(0.5) { Prime.each(7*37){} } - flunk("timeout expected") - rescue Timeout::Error end ensure class << sieve Index: test/test_securerandom.rb =================================================================== --- test/test_securerandom.rb (revision 51022) +++ test/test_securerandom.rb (revision 51023) @@ -104,10 +104,13 @@ end https://github.com/ruby/ruby/blob/trunk/test/test_securerandom.rb#L104 end def test_s_hex - assert_equal(16 * 2, @it.hex.size) + s = @it.hex + assert_equal(16 * 2, s.size) + assert_match(/\A\h+\z/, s) 33.times do |idx| - assert_equal(idx * 2, @it.hex(idx).size) - assert_equal(idx, @it.hex(idx).gsub(/(..)/) { [$1].pack('H*') }.size) + s = @it.hex(idx) + assert_equal(idx * 2, s.size) + assert_match(/\A\h*\z/, s) end end @@ -128,23 +131,20 @@ end https://github.com/ruby/ruby/blob/trunk/test/test_securerandom.rb#L131 assert_not_match(safe, @it.urlsafe_base64(idx)) end # base64 can include unsafe byte - 10001.times do |idx| - return if safe =~ @it.base64(idx) - end - flunk + assert((0..10000).any? {|idx| safe =~ @it.base64(idx)}, "None of base64(0..10000) is url-safe") end def test_s_random_number_float 101.times do v = @it.random_number - assert(0.0 <= v && v < 1.0) + assert_in_range(0.0...1.0, v) end end def test_s_random_number_float_by_zero 101.times do v = @it.random_number(0) - assert(0.0 <= v && v < 1.0) + assert_in_range(0.0...1.0, v) end end @@ -152,16 +152,14 @@ end https://github.com/ruby/ruby/blob/trunk/test/test_securerandom.rb#L152 101.times do |idx| next if idx.zero? v = @it.random_number(idx) - assert(0 <= v && v < idx) + assert_in_range(0...idx, v) end end def test_uuid uuid = @it.uuid assert_equal(36, uuid.size) - uuid.unpack('a8xa4xa4xa4xa12').each do |e| - assert_match(/^[0-9a-f]+$/, e) - end + assert_match(/\A\h{8}-\h{4}-\h{4}-\h{4}-\h{12}\z/, uuid) end def protect @@ -182,4 +180,7 @@ end https://github.com/ruby/ruby/blob/trunk/test/test_securerandom.rb#L180 } end + def assert_in_range(range, result, mesg = nil) + assert(range.cover?(result), message(mesg) {"Expected #{result} to be in #{range}"}) + end end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/