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
|
require 'test/unit'
require 'url_safe_base64'
class UrlSafeBase64Test < Test::Unit::TestCase
TEST_STRING = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 !@#$%^&*()-=_+/?.:;[]{}\|"
TEST_STRING_ENCODED_BASE64 = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogQUJDREVGR0hJSktMTU5PUFFS\nU1RVVldYWVogMTIzNDU2Nzg5MCAhQCMkJV4mKigpLT1fKy8/Ljo7W117fXw=\n"
TEST_STRING_ENCODED_BASE64_URL = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVogMTIzNDU2Nzg5MCAhQCMkJV4mKigpLT1fKy8_Ljo7W117fXw"
MOD_GROUPS = {
"2" => [TEST_STRING+'AB', TEST_STRING+'ABCDE'],
"3" => [TEST_STRING, TEST_STRING+'ABC'],
"0" => [TEST_STRING+'A', TEST_STRING+'ABCD']
}
def test_the_test
result = Base64.encode64(TEST_STRING)
assert_equal TEST_STRING_ENCODED_BASE64, result
result = Base64.decode64(result)
assert_equal TEST_STRING, result
end
def test_url_safe_base64_on_png
result = UrlSafeBase64.encode64(TEST_STRING)
assert_equal TEST_STRING_ENCODED_BASE64_URL, result
result = UrlSafeBase64.decode64(result)
assert_equal TEST_STRING, result
end
def test_mod_groups
MOD_GROUPS.keys.each do |key|
MOD_GROUPS[key].each do |str|
result = UrlSafeBase64.encode64(str)
result = UrlSafeBase64.decode64(result)
assert_equal str, result
end
end
end
def test_for_correct_mod_values
MOD_GROUPS.keys.each do |key|
MOD_GROUPS[key].each do |str|
assert_equal key.to_i, UrlSafeBase64.encode64(str).length.modulo(4)
end
end
end
end
|