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

ruby-changes:14153

From: nahi <ko1@a...>
Date: Tue, 1 Dec 2009 18:03:46 +0900 (JST)
Subject: [ruby-changes:14153] Ruby:r25970 (trunk): * test/digest/test_digest_extend.rb: added tests for digest framework.

nahi	2009-12-01 18:03:29 +0900 (Tue, 01 Dec 2009)

  New Revision: 25970

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25970

  Log:
    * test/digest/test_digest_extend.rb: added tests for digest framework.

  Modified files:
    trunk/ChangeLog
    trunk/test/digest/test_digest_extend.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 25969)
+++ ChangeLog	(revision 25970)
@@ -1,3 +1,7 @@
+Tue Dec  1 18:01:43 2009  NAKAMURA, Hiroshi  <nahi@r...>
+
+	* test/digest/test_digest_extend.rb: added tests for digest framework.
+
 Tue Dec  1 12:01:13 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* parse.y (dyna_push_gen, dyna_pop_gen): no needs to save both of
Index: test/digest/test_digest_extend.rb
===================================================================
--- test/digest/test_digest_extend.rb	(revision 25969)
+++ test/digest/test_digest_extend.rb	(revision 25970)
@@ -8,6 +8,10 @@
       @buf = []
     end
 
+    def initialize_copy(org)
+      @buf = org.buf.dup
+    end
+
     def update(arg)
       @buf << arg
       self
@@ -23,8 +27,34 @@
       @buf.clear
       self
     end
+
+  protected
+
+    def buf
+      @buf
+    end
   end
 
+  def test_digest_s_hexencode
+    assert_equal('', Digest.hexencode(''))
+    assert_equal('0102', Digest.hexencode("\1\2"))
+    assert_equal(
+      (0..0xff).to_a.map { |c| sprintf("%02x", c ) }.join,
+      Digest.hexencode((0..0xff).to_a.map { |c| c.chr }.join)
+    )
+  end
+
+  def test_class_reset
+    a = Digest::SHA1.new
+    base = a.to_s
+    assert_equal(base, a.reset.to_s)
+    b = a.new
+    assert_equal(base, b.to_s)
+    b.update('1')
+    assert_not_equal(base, b.to_s)
+    assert_equal(base, b.reset.to_s)
+  end
+
   def test_digest
     assert_equal("\3", MyDigest.digest("foo"))
   end
@@ -38,17 +68,65 @@
     digester.update("foo")
     assert_equal("\3", digester.digest)
     digester.update("foobar")
-    assert_equal("\6", digester.digest)
+    assert_equal("\t", digester.digest)
     digester.update("foo")
-    assert_equal("\3", digester.digest)
+    assert_equal("\f", digester.digest)
   end
 
+  def test_new
+    a = Digest::SHA1.new
+    b = a.new
+    obj = a.to_s
+    assert_equal(obj, a.to_s)
+    assert_equal(obj, b.to_s)
+    a.update('1')
+    assert_not_equal(obj, a.to_s)
+    assert_equal(obj, b.to_s)
+  end
+
+  def test_digest_hexdigest
+    [:digest, :hexdigest].each do |m|
+      exp_1st = "\3"; exp_1st = Digest.hexencode(exp_1st) if m == :hexdigest
+      exp_2nd = "\6"; exp_2nd = Digest.hexencode(exp_2nd) if m == :hexdigest
+      digester = MyDigest.new
+      digester.update("foo")
+      obj = digester.send(m)
+      # digest w/o param does not reset the org digester.
+      assert_equal(exp_1st, obj)
+      digester.update("bar")
+      obj = digester.send(m)
+      assert_equal(exp_2nd, obj)
+      obj = digester.send(m, "baz")
+      # digest with param resets the org digester.
+      assert_equal(exp_1st, obj)
+    end
+  end
+
+  def test_digest_hexdigest_bang
+    [:digest!, :hexdigest!].each do |m|
+      exp_1st = "\3"; exp_1st = Digest.hexencode(exp_1st) if m == :hexdigest!
+      digester = MyDigest.new
+      digester.update("foo")
+      obj = digester.send(m) # digest! always resets the org digester.
+      assert_equal(exp_1st, obj)
+      digester.update("bar")
+      obj = digester.send(m)
+      assert_equal(exp_1st, obj)
+    end
+  end
+
   def test_to_s
     digester = MyDigest.new
     digester.update("foo")
     assert_equal("03", digester.to_s)
   end
 
+  def test_length
+    digester = MyDigest.new
+    assert_equal(2, digester.length)
+    assert_equal(2, digester.size)
+  end
+
   def test_digest_length # breaks MyDigest#digest_length
     assert_equal(1, MyDigest.new.digest_length)
     MyDigest.class_eval do

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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