mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* test/iconv/test_{basic,option}.rb, test/iconv/utils.rb: added.
* test/iconv/test_partial.rb: renamed from test_simple.rb. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16833 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
28c5fe3c6c
commit
b35b33c751
5 changed files with 143 additions and 27 deletions
49
test/iconv/test_basic.rb
Normal file
49
test/iconv/test_basic.rb
Normal file
|
@ -0,0 +1,49 @@
|
|||
require File.join(File.dirname(__FILE__), "utils.rb")
|
||||
|
||||
class TestIconv
|
||||
def test_euc2sjis
|
||||
iconv = Iconv.open('SHIFT_JIS', 'EUC-JP')
|
||||
str = iconv.iconv(EUCJ_STR)
|
||||
str << iconv.iconv(nil)
|
||||
assert_equal(SJIS_STR, str)
|
||||
iconv.close
|
||||
end
|
||||
|
||||
def test_close
|
||||
iconv = Iconv.new('Shift_JIS', 'EUC-JP')
|
||||
output = ""
|
||||
begin
|
||||
output += iconv.iconv(EUCJ_STR)
|
||||
output += iconv.iconv(nil)
|
||||
ensure
|
||||
assert_respond_to(iconv, :close)
|
||||
assert_equal("", iconv.close)
|
||||
assert_equal(SJIS_STR, output)
|
||||
end
|
||||
end
|
||||
|
||||
def test_open_without_block
|
||||
assert_respond_to(Iconv, :open)
|
||||
iconv = Iconv.open('SHIFT_JIS', 'EUC-JP')
|
||||
str = iconv.iconv(EUCJ_STR)
|
||||
str << iconv.iconv(nil)
|
||||
assert_equal(SJIS_STR, str )
|
||||
iconv.close
|
||||
end
|
||||
|
||||
def test_open_with_block
|
||||
input = "#{EUCJ_STR}\n"*2
|
||||
output = ""
|
||||
Iconv.open("Shift_JIS", "EUC-JP") do |cd|
|
||||
input.each_line do |s|
|
||||
output << cd.iconv(s)
|
||||
end
|
||||
output << cd.iconv(nil)
|
||||
end
|
||||
assert_equal("#{SJIS_STR}\n"*2, output)
|
||||
end
|
||||
|
||||
def test_unknown_encoding
|
||||
assert_raise(Iconv::InvalidEncoding) { Iconv.iconv("utf-8", "X-UKNOWN", "heh") }
|
||||
end
|
||||
end
|
31
test/iconv/test_option.rb
Normal file
31
test/iconv/test_option.rb
Normal file
|
@ -0,0 +1,31 @@
|
|||
require File.join(File.dirname(__FILE__), "utils.rb")
|
||||
|
||||
class TestIconv
|
||||
def test_ignore_option
|
||||
iconv = Iconv.new('SHIFT_JIS', 'EUC-JP//ignore')
|
||||
str = iconv.iconv(EUCJ_STR)
|
||||
str << iconv.iconv(nil)
|
||||
assert_equal(SJIS_STR, str)
|
||||
iconv.close
|
||||
|
||||
iconv = Iconv.new('SHIFT_JIS//IGNORE', 'EUC-JP//ignore')
|
||||
str = iconv.iconv(EUCJ_STR)
|
||||
str << iconv.iconv(nil)
|
||||
assert_equal(SJIS_STR, str)
|
||||
iconv.close
|
||||
end
|
||||
|
||||
def test_translit_option
|
||||
iconv = Iconv.new('SHIFT_JIS', 'EUC-JP//ignore')
|
||||
str = iconv.iconv(EUCJ_STR)
|
||||
str << iconv.iconv(nil)
|
||||
assert_equal(SJIS_STR, str)
|
||||
iconv.close
|
||||
|
||||
iconv = Iconv.new('SHIFT_JIS//TRANSLIT', 'EUC-JP//translit//ignore')
|
||||
str = iconv.iconv(EUCJ_STR)
|
||||
str << iconv.iconv(nil)
|
||||
assert_equal(SJIS_STR, str)
|
||||
iconv.close
|
||||
end
|
||||
end if defined?(::Iconv)
|
41
test/iconv/test_partial.rb
Normal file
41
test/iconv/test_partial.rb
Normal file
|
@ -0,0 +1,41 @@
|
|||
require File.join(File.dirname(__FILE__), "utils.rb")
|
||||
|
||||
class TestIconv
|
||||
def test_partial_ascii
|
||||
c = Iconv.open(ASCII, ASCII)
|
||||
ref = '[ruby-core:17092]'
|
||||
rescue
|
||||
return
|
||||
else
|
||||
assert_equal("abc", c.iconv("abc"))
|
||||
assert_equal("c", c.iconv("abc", 2), "#{ref}: with start")
|
||||
assert_equal("c", c.iconv("abc", 2, 1), "#{ref}: with start, length")
|
||||
assert_equal("c", c.iconv("abc", 2, 5), "#{ref}: with start, longer length")
|
||||
assert_equal("bc", c.iconv("abc", -2), "#{ref}: with nagative start")
|
||||
assert_equal("b", c.iconv("abc", -2, 1), "#{ref}: with nagative start, length")
|
||||
assert_equal("bc", c.iconv("abc", -2, 5), "#{ref}: with nagative start, longer length")
|
||||
assert_equal("", c.iconv("abc", 5), "#{ref}: with OOB")
|
||||
assert_equal("", c.iconv("abc", 5, 2), "#{ref}: with OOB, length")
|
||||
ensure
|
||||
c.close if c
|
||||
end
|
||||
|
||||
def test_partial_euc2sjis
|
||||
c = Iconv.open('SHIFT_JIS', 'EUC-JP')
|
||||
rescue
|
||||
return
|
||||
else
|
||||
assert_equal(SJIS_STR[0, 2], c.iconv(EUCJ_STR, 0, 2))
|
||||
assert_equal(SJIS_STR, c.iconv(EUCJ_STR, 0, 20))
|
||||
assert_equal(SJIS_STR[2..-1], c.iconv(EUCJ_STR, 2))
|
||||
assert_equal(SJIS_STR[2, 2], c.iconv(EUCJ_STR, 2, 2))
|
||||
assert_equal(SJIS_STR[2..-1], c.iconv(EUCJ_STR, 2, 20))
|
||||
assert_equal(SJIS_STR[-4..-1], c.iconv(EUCJ_STR, -4))
|
||||
assert_equal(SJIS_STR[-4, 2], c.iconv(EUCJ_STR, -4, 2))
|
||||
assert_equal(SJIS_STR[-4..-1], c.iconv(EUCJ_STR, -4, 20))
|
||||
assert_equal("", c.iconv(EUCJ_STR, 20))
|
||||
assert_equal("", c.iconv(EUCJ_STR, 20, 2))
|
||||
ensure
|
||||
c.close
|
||||
end
|
||||
end if defined?(::Iconv)
|
|
@ -1,27 +0,0 @@
|
|||
require 'test/unit'
|
||||
begin
|
||||
require 'iconv'
|
||||
rescue LoadError
|
||||
end
|
||||
|
||||
class TestIConv < Test::Unit::TestCase
|
||||
ASCII = "ascii"
|
||||
def test_simple
|
||||
c = Iconv.open(ASCII, ASCII)
|
||||
ref = '[ruby-core:17092]'
|
||||
rescue
|
||||
return
|
||||
else
|
||||
assert_equal("abc", c.iconv("abc"))
|
||||
assert_equal("c", c.iconv("abc", 2), "#{ref}: with start")
|
||||
assert_equal("c", c.iconv("abc", 2, 1), "#{ref}: with start, length")
|
||||
assert_equal("c", c.iconv("abc", 2, 5), "#{ref}: with start, longer length")
|
||||
assert_equal("bc", c.iconv("abc", -2), "#{ref}: with nagative start")
|
||||
assert_equal("b", c.iconv("abc", -2, 1), "#{ref}: with nagative start, length")
|
||||
assert_equal("bc", c.iconv("abc", -2, 5), "#{ref}: with nagative start, longer length")
|
||||
assert_equal("", c.iconv("abc", 5), "#{ref}: with OOB")
|
||||
assert_equal("", c.iconv("abc", 5, 2), "#{ref}: with OOB, length")
|
||||
ensure
|
||||
c.close if c
|
||||
end
|
||||
end if defined?(::Iconv)
|
22
test/iconv/utils.rb
Normal file
22
test/iconv/utils.rb
Normal file
|
@ -0,0 +1,22 @@
|
|||
begin
|
||||
require 'iconv'
|
||||
rescue LoadError
|
||||
else
|
||||
require 'test/unit'
|
||||
end
|
||||
|
||||
class TestIconv < Test::Unit::TestCase
|
||||
if defined?(::Encoding) and String.method_defined?(:force_encoding)
|
||||
def self.encode(str, enc)
|
||||
str.force_encoding(enc)
|
||||
end
|
||||
else
|
||||
def self.encode(str, enc)
|
||||
str
|
||||
end
|
||||
end
|
||||
|
||||
ASCII = "ascii"
|
||||
EUCJ_STR = encode("\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa", "EUC-JP").freeze
|
||||
SJIS_STR = encode("\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8", "Shift_JIS").freeze
|
||||
end if defined?(::Iconv)
|
Loading…
Reference in a new issue