aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/multibyte_chars_test.rb
diff options
context:
space:
mode:
authorManfred Stienstra <manfred@fngtps.com>2009-11-02 21:34:07 +0100
committerManfred Stienstra <manfred@fngtps.com>2009-11-04 10:14:49 +0100
commitda3a228a93e1858a46f9a0cefcb9c72285479a56 (patch)
tree9c8cada860e22f3b2866e72f64a47dedf83f290c /activesupport/test/multibyte_chars_test.rb
parent62a022891b5f12284205920a03a3cbbe5b8ecd27 (diff)
downloadrails-da3a228a93e1858a46f9a0cefcb9c72285479a56.tar.gz
rails-da3a228a93e1858a46f9a0cefcb9c72285479a56.tar.bz2
rails-da3a228a93e1858a46f9a0cefcb9c72285479a56.zip
Make ActiveSupport::Chars#limit run on Ruby 1.9.
Diffstat (limited to 'activesupport/test/multibyte_chars_test.rb')
-rw-r--r--activesupport/test/multibyte_chars_test.rb56
1 files changed, 27 insertions, 29 deletions
diff --git a/activesupport/test/multibyte_chars_test.rb b/activesupport/test/multibyte_chars_test.rb
index fc7b5e5081..4ff74abf61 100644
--- a/activesupport/test/multibyte_chars_test.rb
+++ b/activesupport/test/multibyte_chars_test.rb
@@ -100,15 +100,14 @@ class MultibyteCharsUTF8BehaviourTest < Test::Unit::TestCase
def setup
@chars = UNICODE_STRING.dup.mb_chars
- # NEWLINE, SPACE, EM SPACE
- @whitespace = "\n#{[32, 8195].pack('U*')}"
-
- # Ruby 1.9 doesn't recognize EM SPACE as whitespace!
- if @whitespace.respond_to?(:force_encoding)
- @whitespace.slice!(2)
- @whitespace.force_encoding(Encoding::UTF_8)
+ if RUBY_VERSION < '1.9'
+ # Multibyte support all kinds of whitespace (ie. NEWLINE, SPACE, EM SPACE)
+ @whitespace = "\n\t#{[32, 8195].pack('U*')}"
+ else
+ # Ruby 1.9 only supports basic whitespace
+ @whitespace = "\n\t ".force_encoding(Encoding::UTF_8)
end
-
+
@byte_order_mark = [65279].pack('U')
end
@@ -497,28 +496,27 @@ class MultibyteCharsExtrasTest < Test::Unit::TestCase
end
def test_limit_should_not_break_on_blank_strings
- chars = ''.mb_chars
-
- assert_equal '', chars.limit(0)
- assert_equal '', chars.limit(1)
+ example = chars('')
+ assert_equal example, example.limit(0)
+ assert_equal example, example.limit(1)
end
def test_limit_should_work_on_a_multibyte_string
- chars = UNICODE_STRING.mb_chars
+ example = chars(UNICODE_STRING)
+ bytesize = UNICODE_STRING.respond_to?(:bytesize) ? UNICODE_STRING.bytesize : UNICODE_STRING.size
- assert_equal UNICODE_STRING, chars.limit(UNICODE_STRING.length)
- assert_equal '', chars.limit(0)
- assert_equal '', chars.limit(1)
- assert_equal 'こ', chars.limit(3)
- assert_equal 'こに', chars.limit(6)
- assert_equal 'こに', chars.limit(8)
- assert_equal 'こにち', chars.limit(9)
- assert_equal 'こにちわ', chars.limit(50)
+ assert_equal UNICODE_STRING, example.limit(bytesize)
+ assert_equal '', example.limit(0)
+ assert_equal '', example.limit(1)
+ assert_equal 'こ', example.limit(3)
+ assert_equal 'こに', example.limit(6)
+ assert_equal 'こに', example.limit(8)
+ assert_equal 'こにち', example.limit(9)
+ assert_equal 'こにちわ', example.limit(50)
end
def test_limit_should_work_on_an_ascii_string
- ascii = ASCII_STRING.mb_chars
-
+ ascii = chars(ASCII_STRING)
assert_equal ASCII_STRING, ascii.limit(ASCII_STRING.length)
assert_equal '', ascii.limit(0)
assert_equal 'o', ascii.limit(1)
@@ -528,12 +526,12 @@ class MultibyteCharsExtrasTest < Test::Unit::TestCase
end
def test_limit_should_keep_under_the_specified_byte_limit
- chars = UNICODE_STRING.mb_chars
+ example = chars(UNICODE_STRING)
(1..UNICODE_STRING.length).each do |limit|
- assert chars.limit(limit).to_s.length <= limit
+ assert example.limit(limit).to_s.length <= limit
end
end
-
+
def test_composition_exclusion_is_set_up_properly
# Normalization of DEVANAGARI LETTER QA breaks when composition exclusion isn't used correctly
qa = [0x915, 0x93c].pack('U*')
@@ -647,9 +645,9 @@ end
class MultibyteInternalsTest < ActiveSupport::TestCase
include MultibyteTestHelpers
-
+
test "Chars translates a character offset to a byte offset" do
- chars = "Puisque c'était son erreur, il m'a aidé".mb_chars
+ example = chars("Puisque c'était son erreur, il m'a aidé")
[
[0, 0],
[3, 3],
@@ -657,7 +655,7 @@ class MultibyteInternalsTest < ActiveSupport::TestCase
[14, 13],
[41, 39]
].each do |byte_offset, character_offset|
- assert_equal character_offset, chars.send(:translate_offset, byte_offset),
+ assert_equal character_offset, example.send(:translate_offset, byte_offset),
"Expected byte offset #{byte_offset} to translate to #{character_offset}"
end
end