[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]