1
0
Fork 0
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:
nobu 2008-06-05 04:58:41 +00:00
parent 28c5fe3c6c
commit b35b33c751
5 changed files with 143 additions and 27 deletions

49
test/iconv/test_basic.rb Normal file
View 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
View 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)

View 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)

View file

@ -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
View 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)