|
| 1 | +# frozen_string_literal: false |
| 2 | +require 'test/unit' |
| 3 | + |
| 4 | +require 'digest' |
| 5 | +%w[digest/md5 digest/rmd160 digest/sha1 digest/sha2 digest/bubblebabble].each do |lib| |
| 6 | + begin |
| 7 | + require lib |
| 8 | + rescue LoadError |
| 9 | + end |
| 10 | +end |
| 11 | + |
| 12 | +module TestDigestRactor |
| 13 | + Data1 = "abc" |
| 14 | + Data2 = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" |
| 15 | + |
| 16 | + def setup |
| 17 | + skip unless defined?(Ractor) |
| 18 | + end |
| 19 | + |
| 20 | + def test_s_hexdigest |
| 21 | + assert_in_out_err([], <<-"end;", ["true", "true"], []) |
| 22 | + $VERBOSE = nil |
| 23 | + require "digest" |
| 24 | + require "#{self.class::LIB}" |
| 25 | + DATA = #{self.class::DATA.inspect} |
| 26 | + rs = DATA.map do |str, hexdigest| |
| 27 | + r = Ractor.new str do |x| |
| 28 | + #{self.class::ALGO}.hexdigest(x) |
| 29 | + end |
| 30 | + [r, hexdigest] |
| 31 | + end |
| 32 | + rs.each do |r, hexdigest| |
| 33 | + puts r.take == hexdigest |
| 34 | + end |
| 35 | + end; |
| 36 | + end |
| 37 | + |
| 38 | + class TestMD5Ractor < Test::Unit::TestCase |
| 39 | + include TestDigestRactor |
| 40 | + LIB = "digest/md5" |
| 41 | + ALGO = Digest::MD5 |
| 42 | + DATA = { |
| 43 | + Data1 => "900150983cd24fb0d6963f7d28e17f72", |
| 44 | + Data2 => "8215ef0796a20bcaaae116d3876c664a", |
| 45 | + } |
| 46 | + end if defined?(Digest::MD5) |
| 47 | + |
| 48 | + class TestSHA1Ractor < Test::Unit::TestCase |
| 49 | + include TestDigestRactor |
| 50 | + LIB = "digest/sha1" |
| 51 | + ALGO = Digest::SHA1 |
| 52 | + DATA = { |
| 53 | + Data1 => "a9993e364706816aba3e25717850c26c9cd0d89d", |
| 54 | + Data2 => "84983e441c3bd26ebaae4aa1f95129e5e54670f1", |
| 55 | + } |
| 56 | + end if defined?(Digest::SHA1) |
| 57 | + |
| 58 | + class TestSHA256Ractor < Test::Unit::TestCase |
| 59 | + include TestDigestRactor |
| 60 | + LIB = "digest/sha2" |
| 61 | + ALGO = Digest::SHA256 |
| 62 | + DATA = { |
| 63 | + Data1 => "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad", |
| 64 | + Data2 => "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1", |
| 65 | + } |
| 66 | + end if defined?(Digest::SHA256) |
| 67 | + |
| 68 | + class TestSHA384Ractor < Test::Unit::TestCase |
| 69 | + include TestDigestRactor |
| 70 | + LIB = "digest/sha2" |
| 71 | + ALGO = Digest::SHA384 |
| 72 | + DATA = { |
| 73 | + Data1 => "cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed"\ |
| 74 | + "8086072ba1e7cc2358baeca134c825a7", |
| 75 | + Data2 => "3391fdddfc8dc7393707a65b1b4709397cf8b1d162af05abfe8f450de5f36bc6"\ |
| 76 | + "b0455a8520bc4e6f5fe95b1fe3c8452b", |
| 77 | + } |
| 78 | + end if defined?(Digest::SHA384) |
| 79 | + |
| 80 | + class TestSHA512Ractor < Test::Unit::TestCase |
| 81 | + include TestDigestRactor |
| 82 | + LIB = "digest/sha2" |
| 83 | + ALGO = Digest::SHA512 |
| 84 | + DATA = { |
| 85 | + Data1 => "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a"\ |
| 86 | + "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f", |
| 87 | + Data2 => "204a8fc6dda82f0a0ced7beb8e08a41657c16ef468b228a8279be331a703c335"\ |
| 88 | + "96fd15c13b1b07f9aa1d3bea57789ca031ad85c7a71dd70354ec631238ca3445", |
| 89 | + } |
| 90 | + end if defined?(Digest::SHA512) |
| 91 | + |
| 92 | + class TestRMD160Ractor < Test::Unit::TestCase |
| 93 | + include TestDigestRactor |
| 94 | + LIB = "digest/rmd160" |
| 95 | + ALGO = Digest::RMD160 |
| 96 | + DATA = { |
| 97 | + Data1 => "8eb208f7e05d987a9b044a8e98c6b087f15a0bfc", |
| 98 | + Data2 => "12a053384a9c0c88e405a06c27dcf49ada62eb2b", |
| 99 | + } |
| 100 | + end if defined?(Digest::RMD160) |
| 101 | +end |
0 commit comments