diff options
| author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-23 08:41:02 +0000 |
|---|---|---|
| committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-23 08:41:02 +0000 |
| commit | f0f5884639ce2d5686f3b7fd73640f7058276b81 (patch) | |
| tree | 92472d4223537daff1773cec05d01aefe7881dda /test/ruby | |
| parent | bbc858c10c86c4a559cb5cd971cf5111482874eb (diff) | |
| download | ruby-f0f5884639ce2d5686f3b7fd73640f7058276b81.tar.gz ruby-f0f5884639ce2d5686f3b7fd73640f7058276b81.tar.xz ruby-f0f5884639ce2d5686f3b7fd73640f7058276b81.zip | |
* include/ruby/io.h (FMODE_INVALID_MASK): defined.
(FMODE_INVALID_IGNORE): defined.
(FMODE_INVALID_REPLACE): defined.
(FMODE_UNDEF_MASK): defined.
(FMODE_UNDEF_IGNORE): defined.
(FMODE_UNDEF_REPLACE): defined.
* io.c (sym_invalid): defined.
(sym_undef): defined.
(sym_ignore): defined.
(sym_replace): defined.
(make_readconv): specify ECONV_INVALID_* and ECONV_UNDEF_* if
FMODE_INVALID_* and FMODE_UNDEF_* is set.
(rb_io_extract_modeenc): check {:invalid, :undef} => {:replace,
:ignore} for FMODE_INVALID_* and FMODE_UNDEF_*.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18791 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby')
| -rw-r--r-- | test/ruby/test_io_m17n.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/test/ruby/test_io_m17n.rb b/test/ruby/test_io_m17n.rb index 59a691cbd..94be8b311 100644 --- a/test/ruby/test_io_m17n.rb +++ b/test/ruby/test_io_m17n.rb @@ -1163,5 +1163,44 @@ EOT } end + def test_invalid_r + with_tmpdir { + generate_file("t.txt", "a\x80b") + open("t.txt", "r:utf-8:euc-jp", :invalid => :replace) {|f| + assert_equal("a?b", f.read) + } + open("t.txt", "r:utf-8:euc-jp", :invalid => :ignore) {|f| + assert_equal("ab", f.read) + } + open("t.txt", "r:utf-8:euc-jp", :undef => :replace) {|f| + assert_raise(Encoding::InvalidByteSequence) { f.read } + assert_equal("b", f.read) + } + open("t.txt", "r:utf-8:euc-jp", :undef => :ignore) {|f| + assert_raise(Encoding::InvalidByteSequence) { f.read } + assert_equal("b", f.read) + } + } + end + + def test_undef_r + with_tmpdir { + generate_file("t.txt", "a\uFFFDb") + open("t.txt", "r:utf-8:euc-jp", :undef => :replace) {|f| + assert_equal("a?b", f.read) + } + open("t.txt", "r:utf-8:euc-jp", :undef => :ignore) {|f| + assert_equal("ab", f.read) + } + open("t.txt", "r:utf-8:euc-jp", :invalid => :replace) {|f| + assert_raise(Encoding::ConversionUndefined) { f.read } + assert_equal("b", f.read) + } + open("t.txt", "r:utf-8:euc-jp", :invalid => :ignore) {|f| + assert_raise(Encoding::ConversionUndefined) { f.read } + assert_equal("b", f.read) + } + } + end end |
