1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
#!/usr/bin/env ruby
#
# $RoughId: test.rb,v 1.4 2001/07/13 15:38:27 knu Exp $
# $Id$
require 'test/unit'
require 'digest'
%w[digest/md5 digest/rmd160 digest/sha1 digest/sha2].each do |lib|
begin
require lib
rescue LoadError
end
end
module TestDigest
Data1 = "abc"
Data2 = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
def test_s_new
self.class::DATA.each do |str, hexdigest|
assert_raise(ArgumentError) { self.class::ALGO.new("") }
end
end
def test_s_hexdigest
self.class::DATA.each do |str, hexdigest|
assert_equal(hexdigest, self.class::ALGO.hexdigest(str))
end
end
def test_s_base64digest
self.class::DATA.each do |str, hexdigest|
digest = [hexdigest].pack("H*")
assert_equal([digest].pack("m0"), self.class::ALGO.base64digest(str))
end
end
def test_s_digest
self.class::DATA.each do |str, hexdigest|
digest = [hexdigest].pack("H*")
assert_equal(digest, self.class::ALGO.digest(str))
end
end
def test_update
# This test is also for digest() and hexdigest()
str = "ABC"
md = self.class::ALGO.new
md.update str
assert_equal(self.class::ALGO.hexdigest(str), md.hexdigest)
assert_equal(self.class::ALGO.digest(str), md.digest)
end
def test_eq
# This test is also for clone()
md1 = self.class::ALGO.new
md1 << "ABC"
assert_equal(md1, md1.clone, self.class::ALGO)
md2 = self.class::ALGO.new
md2 << "A"
assert_not_equal(md1, md2, self.class::ALGO)
md2 << "BC"
assert_equal(md1, md2, self.class::ALGO)
end
def test_instance_eval
assert_nothing_raised {
self.class::ALGO.new.instance_eval { update "a" }
}
end
def test_alignment
md = self.class::ALGO.new
assert_nothing_raised('#4320') {
md.update('a' * 97)
md.update('a' * 97)
md.hexdigest
}
end
class TestMD5 < Test::Unit::TestCase
include TestDigest
ALGO = Digest::MD5
DATA = {
Data1 => "900150983cd24fb0d6963f7d28e17f72",
Data2 => "8215ef0796a20bcaaae116d3876c664a",
}
end if defined?(Digest::MD5)
class TestSHA1 < Test::Unit::TestCase
include TestDigest
ALGO = Digest::SHA1
DATA = {
Data1 => "a9993e364706816aba3e25717850c26c9cd0d89d",
Data2 => "84983e441c3bd26ebaae4aa1f95129e5e54670f1",
}
end if defined?(Digest::SHA1)
class TestSHA256 < Test::Unit::TestCase
include TestDigest
ALGO = Digest::SHA256
DATA = {
Data1 => "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",
Data2 => "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1",
}
end if defined?(Digest::SHA256)
class TestSHA384 < Test::Unit::TestCase
include TestDigest
ALGO = Digest::SHA384
DATA = {
Data1 => "cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7",
Data2 => "3391fdddfc8dc7393707a65b1b4709397cf8b1d162af05abfe8f450de5f36bc6b0455a8520bc4e6f5fe95b1fe3c8452b",
}
end if defined?(Digest::SHA384)
class TestSHA512 < Test::Unit::TestCase
include TestDigest
ALGO = Digest::SHA512
DATA = {
Data1 => "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f",
Data2 => "204a8fc6dda82f0a0ced7beb8e08a41657c16ef468b228a8279be331a703c33596fd15c13b1b07f9aa1d3bea57789ca031ad85c7a71dd70354ec631238ca3445",
}
end if defined?(Digest::SHA512)
class TestRMD160 < Test::Unit::TestCase
include TestDigest
ALGO = Digest::RMD160
DATA = {
Data1 => "8eb208f7e05d987a9b044a8e98c6b087f15a0bfc",
Data2 => "12a053384a9c0c88e405a06c27dcf49ada62eb2b",
}
end if defined?(Digest::RMD160)
class TestBase < Test::Unit::TestCase
def test_base
bug3810 = '[ruby-core:32231]'
assert_raise(NotImplementedError, bug3810) {Digest::Base.new}
end
end
end
|