aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/core_ext/string_ext_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/test/core_ext/string_ext_test.rb')
-rw-r--r--activesupport/test/core_ext/string_ext_test.rb53
1 files changed, 47 insertions, 6 deletions
diff --git a/activesupport/test/core_ext/string_ext_test.rb b/activesupport/test/core_ext/string_ext_test.rb
index c0decf2c3f..fe5ce276c5 100644
--- a/activesupport/test/core_ext/string_ext_test.rb
+++ b/activesupport/test/core_ext/string_ext_test.rb
@@ -191,13 +191,12 @@ class StringInflectionsTest < Test::Unit::TestCase
if RUBY_VERSION < '1.9'
def test_each_char_with_utf8_string_when_kcode_is_utf8
- old_kcode, $KCODE = $KCODE, 'UTF8'
- '€2.99'.each_char do |char|
- assert_not_equal 1, char.length
- break
+ with_kcode('UTF8') do
+ '€2.99'.each_char do |char|
+ assert_not_equal 1, char.length
+ break
+ end
end
- ensure
- $KCODE = old_kcode
end
end
end
@@ -206,4 +205,46 @@ class StringBehaviourTest < Test::Unit::TestCase
def test_acts_like_string
assert 'Bambi'.acts_like_string?
end
+end
+
+class CoreExtStringMultibyteTest < Test::Unit::TestCase
+ UNICODE_STRING = 'こにちわ'
+ ASCII_STRING = 'ohayo'
+ BYTE_STRING = "\270\236\010\210\245"
+
+ def test_core_ext_adds_mb_chars
+ assert UNICODE_STRING.respond_to?(:mb_chars)
+ end
+
+ def test_string_should_recognize_utf8_strings
+ assert UNICODE_STRING.is_utf8?
+ assert ASCII_STRING.is_utf8?
+ assert !BYTE_STRING.is_utf8?
+ end
+
+ if RUBY_VERSION < '1.8.7'
+ def test_core_ext_adds_chars
+ assert UNICODE_STRING.respond_to?(:chars)
+ end
+ end
+
+ if RUBY_VERSION < '1.9'
+ def test_mb_chars_returns_self_when_kcode_not_set
+ with_kcode('none') do
+ assert UNICODE_STRING.mb_chars.kind_of?(String)
+ end
+ end
+
+ def test_mb_chars_returns_an_instance_of_the_chars_proxy_when_kcode_utf8
+ with_kcode('UTF8') do
+ assert UNICODE_STRING.mb_chars.kind_of?(ActiveSupport::Multibyte.proxy_class)
+ end
+ end
+ end
+
+ if RUBY_VERSION >= '1.9'
+ def test_mb_chars_returns_string
+ assert UNICODE_STRING.mb_chars.kind_of?(String)
+ end
+ end
end \ No newline at end of file