iconv 0.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/iconv.gemspec ADDED
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'iconv/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "iconv"
8
+ gem.version = Iconv::VERSION
9
+ gem.authors = ["NARUSE, Yui"]
10
+ gem.email = ["naruse@airemix.jp"]
11
+ gem.description = %q{iconv wrapper library}
12
+ gem.summary = %q{iconv wrapper library}
13
+ gem.homepage = "https://github.com/nurse/iconv"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.extensions = ['ext/iconv/extconf.rb']
17
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
+ gem.require_paths = ["lib"]
20
+ end
@@ -0,0 +1,3 @@
1
+ class Iconv
2
+ VERSION = "1.0.0"
3
+ end
data/lib/iconv.rb ADDED
@@ -0,0 +1,6 @@
1
+ require "iconv/iconv.so"
2
+ require "iconv/version"
3
+
4
+ class Iconv
5
+ # Your code goes here...
6
+ end
@@ -0,0 +1,59 @@
1
+ require_relative "utils.rb"
2
+
3
+ class TestIconv::Basic < TestIconv
4
+ def test_euc2sjis
5
+ iconv = Iconv.open('SHIFT_JIS', 'EUC-JP')
6
+ str = iconv.iconv(EUCJ_STR)
7
+ str << iconv.iconv(nil)
8
+ assert_equal(SJIS_STR, str)
9
+ iconv.close
10
+ end
11
+
12
+ def test_close
13
+ iconv = Iconv.new('Shift_JIS', 'EUC-JP')
14
+ output = ""
15
+ begin
16
+ output += iconv.iconv(EUCJ_STR)
17
+ output += iconv.iconv(nil)
18
+ ensure
19
+ assert_respond_to(iconv, :close)
20
+ assert_equal("", iconv.close)
21
+ assert_equal(SJIS_STR, output)
22
+ end
23
+ end
24
+
25
+ def test_open_without_block
26
+ assert_respond_to(Iconv, :open)
27
+ iconv = Iconv.open('SHIFT_JIS', 'EUC-JP')
28
+ str = iconv.iconv(EUCJ_STR)
29
+ str << iconv.iconv(nil)
30
+ assert_equal(SJIS_STR, str )
31
+ iconv.close
32
+ end
33
+
34
+ def test_open_with_block
35
+ input = "#{EUCJ_STR}\n"*2
36
+ output = ""
37
+ Iconv.open("Shift_JIS", "EUC-JP") do |cd|
38
+ input.each_line do |s|
39
+ output << cd.iconv(s)
40
+ end
41
+ output << cd.iconv(nil)
42
+ end
43
+ assert_equal("#{SJIS_STR}\n"*2, output)
44
+ end
45
+
46
+ def test_invalid_arguments
47
+ assert_raise(TypeError) { Iconv.new(nil, 'Shift_JIS') }
48
+ assert_raise(TypeError) { Iconv.new('Shift_JIS', nil) }
49
+ assert_raise(TypeError) { Iconv.open(nil, 'Shift_JIS') }
50
+ assert_raise(TypeError) { Iconv.open('Shift_JIS', nil) }
51
+ end
52
+
53
+ def test_unknown_encoding
54
+ assert_raise(Iconv::InvalidEncoding) { Iconv.iconv("utf-8", "X-UKNOWN", "heh") }
55
+ assert_raise(Iconv::InvalidEncoding, '[ruby-dev:39487]') {
56
+ Iconv.iconv("X-UNKNOWN-1", "X-UNKNOWN-2") {break}
57
+ }
58
+ end
59
+ end
@@ -0,0 +1,43 @@
1
+ require_relative "utils.rb"
2
+
3
+ class TestIconv::Option < TestIconv
4
+ def test_ignore_option
5
+ begin
6
+ iconv = Iconv.new('SHIFT_JIS', 'EUC-JP')
7
+ iconv.transliterate?
8
+ rescue NotImplementedError
9
+ return
10
+ end
11
+ iconv = Iconv.new('SHIFT_JIS', 'EUC-JP//ignore')
12
+ str = iconv.iconv(EUCJ_STR)
13
+ str << iconv.iconv(nil)
14
+ assert_equal(SJIS_STR, str)
15
+ iconv.close
16
+
17
+ iconv = Iconv.new('SHIFT_JIS//IGNORE', 'EUC-JP//ignore')
18
+ str = iconv.iconv(EUCJ_STR)
19
+ str << iconv.iconv(nil)
20
+ assert_equal(SJIS_STR, str)
21
+ iconv.close
22
+ end
23
+
24
+ def test_translit_option
25
+ begin
26
+ iconv = Iconv.new('SHIFT_JIS', 'EUC-JP')
27
+ iconv.transliterate?
28
+ rescue NotImplementedError
29
+ return
30
+ end
31
+ iconv = Iconv.new('SHIFT_JIS', 'EUC-JP//ignore')
32
+ str = iconv.iconv(EUCJ_STR)
33
+ str << iconv.iconv(nil)
34
+ assert_equal(SJIS_STR, str)
35
+ iconv.close
36
+
37
+ iconv = Iconv.new('SHIFT_JIS//TRANSLIT', 'EUC-JP//translit//ignore')
38
+ str = iconv.iconv(EUCJ_STR)
39
+ str << iconv.iconv(nil)
40
+ assert_equal(SJIS_STR, str)
41
+ iconv.close
42
+ end
43
+ end
@@ -0,0 +1,41 @@
1
+ require_relative "utils.rb"
2
+
3
+ class TestIconv::Partial < TestIconv
4
+ def test_partial_ascii
5
+ c = Iconv.open(ASCII, ASCII)
6
+ ref = '[ruby-core:17092]'
7
+ rescue
8
+ return
9
+ else
10
+ assert_equal("abc", c.iconv("abc"))
11
+ assert_equal("c", c.iconv("abc", 2), "#{ref}: with start")
12
+ assert_equal("c", c.iconv("abc", 2, 1), "#{ref}: with start, length")
13
+ assert_equal("c", c.iconv("abc", 2, 5), "#{ref}: with start, longer length")
14
+ assert_equal("bc", c.iconv("abc", -2), "#{ref}: with nagative start")
15
+ assert_equal("b", c.iconv("abc", -2, 1), "#{ref}: with nagative start, length")
16
+ assert_equal("bc", c.iconv("abc", -2, 5), "#{ref}: with nagative start, longer length")
17
+ assert_equal("", c.iconv("abc", 5), "#{ref}: with OOB")
18
+ assert_equal("", c.iconv("abc", 5, 2), "#{ref}: with OOB, length")
19
+ ensure
20
+ c.close if c
21
+ end
22
+
23
+ def test_partial_euc2sjis
24
+ c = Iconv.open('SHIFT_JIS', 'EUC-JP')
25
+ rescue
26
+ return
27
+ else
28
+ assert_equal(SJIS_STR[0, 2], c.iconv(EUCJ_STR, 0, 2))
29
+ assert_equal(SJIS_STR, c.iconv(EUCJ_STR, 0, 20))
30
+ assert_equal(SJIS_STR[2..-1], c.iconv(EUCJ_STR, 2))
31
+ assert_equal(SJIS_STR[2, 2], c.iconv(EUCJ_STR, 2, 2))
32
+ assert_equal(SJIS_STR[2..-1], c.iconv(EUCJ_STR, 2, 20))
33
+ assert_equal(SJIS_STR[-4..-1], c.iconv(EUCJ_STR, -4))
34
+ assert_equal(SJIS_STR[-4, 2], c.iconv(EUCJ_STR, -4, 2))
35
+ assert_equal(SJIS_STR[-4..-1], c.iconv(EUCJ_STR, -4, 20))
36
+ assert_equal("", c.iconv(EUCJ_STR, 20))
37
+ assert_equal("", c.iconv(EUCJ_STR, 20, 2))
38
+ ensure
39
+ c.close
40
+ end
41
+ end
data/test/utils.rb ADDED
@@ -0,0 +1,23 @@
1
+ gem 'iconv'
2
+ require 'iconv'
3
+ require 'test/unit'
4
+
5
+ class TestIconv < ::Test::Unit::TestCase
6
+ if defined?(::Encoding) and String.method_defined?(:force_encoding)
7
+ def self.encode(str, enc)
8
+ str.force_encoding(enc)
9
+ end
10
+ else
11
+ def self.encode(str, enc)
12
+ str
13
+ end
14
+ end
15
+
16
+ def default_test
17
+ self.class == TestIconv or super
18
+ end
19
+
20
+ ASCII = "ascii"
21
+ EUCJ_STR = encode("\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa", "EUC-JP").freeze
22
+ SJIS_STR = encode("\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8", "Shift_JIS").freeze
23
+ end if defined?(::Iconv)
metadata CHANGED
@@ -1,69 +1,69 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: iconv
3
- version: !ruby/object:Gem::Version
4
- hash: 9
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- version: "0.1"
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
12
- - Yukihiro Matsumoto
7
+ authors:
8
+ - NARUSE, Yui
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2010-08-19 00:00:00 +04:00
18
- default_executable:
12
+ date: 2013-02-14 00:00:00.000000000 Z
19
13
  dependencies: []
20
-
21
- description: If you're using bundler, and your OS doesn't have iconv for some reason (silly FreeBSD), you can install it with this gem!
22
- email:
14
+ description: iconv wrapper library
15
+ email:
16
+ - naruse@airemix.jp
23
17
  executables: []
24
-
25
- extensions:
18
+ extensions:
26
19
  - ext/iconv/extconf.rb
27
20
  extra_rdoc_files: []
28
-
29
- files:
21
+ files:
22
+ - .gitignore
23
+ - BSDL
24
+ - Gemfile
25
+ - LICENSE.txt
26
+ - README.md
27
+ - Rakefile
30
28
  - ext/iconv/charset_alias.rb
29
+ - ext/iconv/depend
31
30
  - ext/iconv/extconf.rb
32
31
  - ext/iconv/iconv.c
33
32
  - ext/iconv/mkwrapper.rb
34
- has_rdoc: true
35
- homepage: http://github.com/ruby/ruby
33
+ - iconv.gemspec
34
+ - lib/iconv.rb
35
+ - lib/iconv/version.rb
36
+ - test/test_basic.rb
37
+ - test/test_option.rb
38
+ - test/test_partial.rb
39
+ - test/utils.rb
40
+ homepage: https://github.com/nurse/iconv
36
41
  licenses: []
37
-
38
42
  post_install_message:
39
43
  rdoc_options: []
40
-
41
- require_paths:
44
+ require_paths:
42
45
  - lib
43
- required_ruby_version: !ruby/object:Gem::Requirement
46
+ required_ruby_version: !ruby/object:Gem::Requirement
44
47
  none: false
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- hash: 3
49
- segments:
50
- - 0
51
- version: "0"
52
- required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ! '>='
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
53
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 3
58
- segments:
59
- - 0
60
- version: "0"
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
61
58
  requirements: []
62
-
63
59
  rubyforge_project:
64
- rubygems_version: 1.3.7
60
+ rubygems_version: 1.8.24
65
61
  signing_key:
66
62
  specification_version: 3
67
- summary: iconv extension. The same as you can install with ruby
68
- test_files: []
69
-
63
+ summary: iconv wrapper library
64
+ test_files:
65
+ - test/test_basic.rb
66
+ - test/test_option.rb
67
+ - test/test_partial.rb
68
+ - test/utils.rb
69
+ has_rdoc: