test/test_base32.rb in otp-0.0.7 vs test/test_base32.rb in otp-0.0.8
- old
+ new
@@ -1,21 +1,21 @@
require "test/unit"
require "otp/base32"
class TestBase32 < Test::Unit::TestCase
- def assert_encode(encoded, plain)
- assert_equal(encoded, ::OTP::Base32.encode(plain))
+ def assert_encode(encoded, plain, padding: true)
+ assert_equal(encoded, ::OTP::Base32.encode(plain, padding: padding))
end
def assert_decode(plain, encoded)
plain &&= plain.dup.force_encoding("binary")
assert_equal(plain, ::OTP::Base32.decode(encoded))
end
- def assert_encode_decode(plain, encoded)
+ def assert_encode_decode(plain, encoded, padding: true)
assert_decode(plain, encoded)
- assert_encode(encoded, plain)
+ assert_encode(encoded, plain, padding: padding)
end
def test_base32
assert_encode_decode(nil, nil)
assert_encode_decode("", "")
@@ -26,16 +26,47 @@
assert_encode_decode("fooba", "MZXW6YTB")
assert_encode_decode("foobar", "MZXW6YTBOI======")
assert_encode_decode("\u{3042}\u{3044}\u{3046}\u{3048}\u{304a}", "4OAYFY4BQTRYDBXDQGEOHAMK")
end
+ def test_base32_without_padding
+ assert_encode_decode(nil, nil, padding: false)
+ assert_encode_decode("", "", padding: false)
+ assert_encode_decode("f", "MY", padding: false)
+ assert_encode_decode("fo", "MZXQ", padding: false)
+ assert_encode_decode("foo", "MZXW6", padding: false)
+ assert_encode_decode("foob", "MZXW6YQ", padding: false)
+ assert_encode_decode("fooba", "MZXW6YTB", padding: false)
+ assert_encode_decode("foobar", "MZXW6YTBOI", padding: false)
+ assert_encode_decode("\u{3042}\u{3044}\u{3046}\u{3048}\u{304a}", "4OAYFY4BQTRYDBXDQGEOHAMK", padding: false)
+ end
+
def test_truncated_decode
assert_decode("f", "MY")
assert_decode("fo", "MZXQ")
assert_decode("foo", "MZXW6")
assert_decode("foob", "MZXW6YQ")
assert_decode("f", "my")
assert_decode("fo", "mzxq")
assert_decode("foo", "mzxw6")
assert_decode("foob", "mzxw6yq")
+ end
+
+ def test_unspecified
+ assert_raise(ArgumentError){ OTP::Base32.decode("MY0") }
+ assert_decode("", "=")
+ assert_decode("`", "M=======")
+ assert_decode("fn", "MZX=====")
+ assert_decode("foo`", "MZXW6Y==")
+ assert_decode("`", "M=======G")
+ assert_decode("fn", "MZX=====G")
+ assert_decode("foo`", "MZXW6Y==G")
+ assert_decode("`", "M")
+ assert_decode("fn", "MZX")
+ assert_decode("foo`", "MZXW6Y")
+ assert_decode("fooba", "MZXW6YTB===")
+ assert_decode("f", "MY=AAAAA")
+ assert_decode("fo", "MZXQ=AAA")
+ assert_decode("foo", "MZXW6=AA")
+ assert_decode("foo", "MZXW6=00")
end
end