diff options
author | Cliff Pruitt <cliff.pruitt@cliffpruitt.com> | 2019-07-19 15:16:23 -0400 |
---|---|---|
committer | Cliff Pruitt <cliff.pruitt@cliffpruitt.com> | 2019-07-26 12:18:01 -0400 |
commit | 0cdaa38dd190cae1f13f0f22ab3d1002b6a82081 (patch) | |
tree | 88c14339dc0bf7824c68d9625f2beaa12bfcbfd6 /activesupport/test/transliterate_test.rb | |
parent | 5b0a805c6a9f22818c17ddd5641b9480ea1d668d (diff) | |
download | rails-0cdaa38dd190cae1f13f0f22ab3d1002b6a82081.tar.gz rails-0cdaa38dd190cae1f13f0f22ab3d1002b6a82081.tar.bz2 rails-0cdaa38dd190cae1f13f0f22ab3d1002b6a82081.zip |
Add encoding tests for ActiveSupport::Inflector.transliterate
Diffstat (limited to 'activesupport/test/transliterate_test.rb')
-rw-r--r-- | activesupport/test/transliterate_test.rb | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/activesupport/test/transliterate_test.rb b/activesupport/test/transliterate_test.rb index 620bb20305..4101e4878a 100644 --- a/activesupport/test/transliterate_test.rb +++ b/activesupport/test/transliterate_test.rb @@ -58,6 +58,63 @@ class TransliterateTest < ActiveSupport::TestCase assert_equal "Can only transliterate strings. Received Object", exception.message end + # Valid UTF-8 Works + def test_transliterate_handles_strings_with_valid_utf8_encodings + string = String.new("A", encoding: Encoding::UTF_8) + assert_equal "A", ActiveSupport::Inflector.transliterate(string) + end + + # Valid US-ASCII Works + def test_transliterate_handles_strings_with_valid_us_ascii_encodings + string = String.new("A", encoding: Encoding::US_ASCII) + assert_equal "A", ActiveSupport::Inflector.transliterate(string) + end + + # Valid GB18030 Works + def test_transliterate_handles_strings_with_valid_gb18030_encodings + string = String.new("A", encoding: Encoding::GB18030) + assert_equal "A", ActiveSupport::Inflector.transliterate(string) + end + + # All other encodings raise exceptions + def test_transliterate_handles_strings_with_incompatible_encodings + incompatible_encodings = Encoding.list - [ + Encoding::UTF_8, + Encoding::US_ASCII, + Encoding::GB18030, + ] + # This Raises an argument error + incompatible_encodings -= [Encoding::ASCII_8BIT] + incompatible_encodings.each do |encoding| + string = String.new("", encoding: encoding) + exception = assert_raises Encoding::CompatibilityError do + ActiveSupport::Inflector.transliterate(string) + end + end + end + + # Invalid UTF-8 Works + def test_transliterate_handles_strings_with_invalid_utf8_bytes + string = String.new("\255", encoding: Encoding::UTF_8) + assert_equal "?", ActiveSupport::Inflector.transliterate(string) + end + + # Invalid raises exception + def test_transliterate_handles_strings_with_invalid_us_ascii_bytes + string = String.new("\255", encoding: Encoding::US_ASCII) + exception = assert_raises Encoding::CompatibilityError do + ActiveSupport::Inflector.transliterate(string) + end + end + + # Invalid GB18030 raises exception + def test_transliterate_handles_strings_with_invalid_gb18030_bytes + string = String.new("\255", encoding: Encoding::GB18030) + exception = assert_raises Encoding::CompatibilityError do + ActiveSupport::Inflector.transliterate(string) + end + end + def test_transliterate_handles_ascci_8bit_strings ascii_8bit_string = "A".b exception = assert_raises ArgumentError do |