aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activesupport/test/transliterate_test.rb57
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