Add tests for u_unpack to make sure it raises an EncodingError on invalid UTF-8 strings.

This commit is contained in:
Manfred Stienstra
2008-09-21 17:30:45 +02:00
parent 52f8c04e1e
commit 85c05b5394
2 changed files with 12 additions and 1 deletions

View File

@@ -446,7 +446,7 @@ module ActiveSupport #:nodoc:
begin
string.unpack 'U*'
rescue ArgumentError
raise EncodingError.new('malformed UTF-8 character')
raise EncodingError, 'malformed UTF-8 character'
end
end

View File

@@ -82,6 +82,17 @@ class MultibyteCharsTest < Test::Unit::TestCase
assert !@proxy_class.consumes?(BYTE_STRING)
end
def test_unpack_utf8_strings
assert_equal 4, @proxy_class.u_unpack(UNICODE_STRING).length
assert_equal 5, @proxy_class.u_unpack(ASCII_STRING).length
end
def test_unpack_raises_encoding_error_on_broken_strings
assert_raises(ActiveSupport::Multibyte::EncodingError) do
@proxy_class.u_unpack(BYTE_STRING)
end
end
if RUBY_VERSION < '1.9'
def test_concatenation_should_return_a_proxy_class_instance
assert_equal ActiveSupport::Multibyte.proxy_class, ('a'.mb_chars + 'b').class