summaryrefslogtreecommitdiff
path: root/test/ruby/test_transcode.rb
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-12-07 13:05:26 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-12-07 13:05:26 +0000
commit5bf72d1fa60e195641cb9347c5e5bd98e85da72e (patch)
treecc5ec2f0a97a04b50138932edb8fd1f73ba02c0c /test/ruby/test_transcode.rb
parentc207b0b727d817793a1a508faf7060b2eae5cd7b (diff)
* transcode.c (transcode_loop): call default handler of the given
hash, method, proc or [] method as fallback. [ruby-dev:42692] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30118 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby/test_transcode.rb')
-rw-r--r--test/ruby/test_transcode.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/ruby/test_transcode.rb b/test/ruby/test_transcode.rb
index 8aaaee5043..267ecf90d9 100644
--- a/test/ruby/test_transcode.rb
+++ b/test/ruby/test_transcode.rb
@@ -1947,4 +1947,21 @@ class TestTranscode < Test::Unit::TestCase
assert_equal("[ISU]", "\u{1F4BA}".encode("SJIS-KDDI",
fallback: {"\u{1F4BA}" => "[ISU]"}))
end
+
+ def test_fallback_hash_default
+ fallback = Hash.new {|h, x| "U+%.4X" % x.unpack("U")}
+ assert_equal("U+3042", "\u{3042}".encode("US-ASCII", fallback: fallback))
+ end
+
+ def test_fallback_proc
+ fallback = proc {|x| "U+%.4X" % x.unpack("U")}
+ assert_equal("U+3042", "\u{3042}".encode("US-ASCII", fallback: fallback))
+ end
+
+ def test_fallback_method
+ def (fallback = "U+%.4X").escape(x)
+ self % x.unpack("U")
+ end
+ assert_equal("U+3042", "\u{3042}".encode("US-ASCII", fallback: fallback.method(:escape)))
+ end
end