e4u-encode 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +17 -0
  5. data/Rakefile +50 -0
  6. data/VERSION +1 -0
  7. data/lib/e4u/encode/docomo/cp932/docomo_unicode.rb +301 -0
  8. data/lib/e4u/encode/docomo/cp932.rb +12 -0
  9. data/lib/e4u/encode/docomo/unicode/cp932.rb +5 -0
  10. data/lib/e4u/encode/docomo/unicode/google_unicode.rb +294 -0
  11. data/lib/e4u/encode/docomo/unicode/utf8.rb +5 -0
  12. data/lib/e4u/encode/docomo/unicode.rb +34 -0
  13. data/lib/e4u/encode/docomo/utf8/docomo_unicode.rb +300 -0
  14. data/lib/e4u/encode/docomo/utf8.rb +12 -0
  15. data/lib/e4u/encode/docomo.rb +50 -0
  16. data/lib/e4u/encode/encoding.rb +25 -0
  17. data/lib/e4u/encode/google/unicode/docomo_unicode.rb +818 -0
  18. data/lib/e4u/encode/google/unicode/kddi_unicode.rb +818 -0
  19. data/lib/e4u/encode/google/unicode/softbank_unicode.rb +818 -0
  20. data/lib/e4u/encode/google/unicode/utf8.rb +5 -0
  21. data/lib/e4u/encode/google/unicode.rb +45 -0
  22. data/lib/e4u/encode/google/utf8/unicode.rb +823 -0
  23. data/lib/e4u/encode/google/utf8.rb +12 -0
  24. data/lib/e4u/encode/google.rb +47 -0
  25. data/lib/e4u/encode/kddi/cp932/kddi_unicode.rb +667 -0
  26. data/lib/e4u/encode/kddi/cp932.rb +12 -0
  27. data/lib/e4u/encode/kddi/unicode/cp932.rb +5 -0
  28. data/lib/e4u/encode/kddi/unicode/google_unicode.rb +660 -0
  29. data/lib/e4u/encode/kddi/unicode/utf8.rb +5 -0
  30. data/lib/e4u/encode/kddi/unicode.rb +34 -0
  31. data/lib/e4u/encode/kddi/utf8/kddi_unicode.rb +1313 -0
  32. data/lib/e4u/encode/kddi/utf8.rb +12 -0
  33. data/lib/e4u/encode/kddi.rb +50 -0
  34. data/lib/e4u/encode/softbank/cp932/softbank_unicode.rb +504 -0
  35. data/lib/e4u/encode/softbank/cp932.rb +32 -0
  36. data/lib/e4u/encode/softbank/unicode/cp932.rb +5 -0
  37. data/lib/e4u/encode/softbank/unicode/google_unicode.rb +497 -0
  38. data/lib/e4u/encode/softbank/unicode/utf8.rb +5 -0
  39. data/lib/e4u/encode/softbank/unicode.rb +45 -0
  40. data/lib/e4u/encode/softbank/utf8/softbank_unicode.rb +503 -0
  41. data/lib/e4u/encode/softbank/utf8.rb +12 -0
  42. data/lib/e4u/encode/softbank.rb +53 -0
  43. data/lib/e4u/encode.rb +79 -0
  44. data/spec/docomo_spec.rb +230 -0
  45. data/spec/e4u_spec.rb +173 -0
  46. data/spec/encode_spec.rb +78 -0
  47. data/spec/encoding_spec.rb +47 -0
  48. data/spec/google_spec.rb +86 -0
  49. data/spec/kddi_spec.rb +130 -0
  50. data/spec/softbank_spec.rb +147 -0
  51. data/spec/spec.opts +4 -0
  52. data/spec/spec_helper.rb +13 -0
  53. data/tasks/mk_docomo_cp932.rb +34 -0
  54. data/tasks/mk_docomo_unicode.rb +28 -0
  55. data/tasks/mk_docomo_utf8.rb +33 -0
  56. data/tasks/mk_google_unicode_docomo.rb +37 -0
  57. data/tasks/mk_google_unicode_kddi.rb +37 -0
  58. data/tasks/mk_google_unicode_softbank.rb +37 -0
  59. data/tasks/mk_google_utf8.rb +34 -0
  60. data/tasks/mk_kddi_cp932.rb +35 -0
  61. data/tasks/mk_kddi_unicode.rb +30 -0
  62. data/tasks/mk_kddi_utf8.rb +36 -0
  63. data/tasks/mk_softbank_cp932.rb +34 -0
  64. data/tasks/mk_softbank_unicode.rb +28 -0
  65. data/tasks/mk_softbank_utf8.rb +33 -0
  66. data/tasks/tables.rake +70 -0
  67. data/tasks/task_helper.rb +3 -0
  68. metadata +148 -0
@@ -0,0 +1,230 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
+
4
+ describe E4U::Encode::DoCoMo do
5
+
6
+ describe "encode" do
7
+ before :all do
8
+ @from, @to = {}, {}
9
+ end
10
+
11
+ it "from[:carrier]が:docomo以外ならば例外が起こる" do
12
+ @from.update :carrier => :not_docomo
13
+ lambda {
14
+ E4U::Encode::DoCoMo.encode('', @from, @to)
15
+ }.should raise_error
16
+ end
17
+
18
+ context "to[:carrier]が:docomo以外の時" do
19
+ before :all do
20
+ @to.update :carrier => :not_docomo
21
+ end
22
+
23
+ before :each do
24
+ @from.update :carrier => :docomo
25
+ end
26
+
27
+ it "from[:encoding]が:utf8なら :unicodeに変換される" do
28
+ @from.update :encoding => :utf8
29
+ lambda {
30
+ E4U::Encode::DoCoMo.encode('', @from, @to)
31
+ }.should change { @from[:encoding] }.from(:utf8).to(:unicode)
32
+ end
33
+
34
+ it "from[:encoding]が:sjisなら :unicodeに変換される" do
35
+ @from.update :encoding => :sjis
36
+ lambda {
37
+ E4U::Encode::DoCoMo.encode('', @from, @to)
38
+ }.should change { @from[:encoding] }.from(:sjis).to(:unicode)
39
+ end
40
+
41
+ it "from[:encoding]が:unicodeなら from[:carrier]が:googleに変換される" do
42
+ @from.update :encoding => :unicode
43
+ lambda {
44
+ E4U::Encode::DoCoMo.encode('', @from, @to)
45
+ }.should change { @from[:carrier] }.from(:docomo).to(:google)
46
+ end
47
+ end
48
+
49
+ context "to[:carrier]が:docomoの時" do
50
+ before :all do
51
+ @to.update :carrier => :docomo
52
+ end
53
+
54
+ before :each do
55
+ @from.update :carrier => :docomo
56
+ end
57
+
58
+ it "from[:encoding]が:sjisならば、:unicodeに変換される" do
59
+ @from.update :encoding => :sjis
60
+ lambda {
61
+ E4U::Encode::DoCoMo.encode('', @from, @to)
62
+ }.should change { @from[:encoding] }.from(:sjis).to(:unicode)
63
+ end
64
+
65
+ it "from[:encoding]が:utf8ならば、:unicodeに変換される" do
66
+ @from.update :encoding => :utf8
67
+ lambda {
68
+ E4U::Encode::DoCoMo.encode('', @from, @to)
69
+ }.should change { @from[:encoding] }.from(:utf8).to(:unicode)
70
+ end
71
+
72
+ context "from[:encoding]が:unicodeの時" do
73
+ before :each do
74
+ @from.update :encoding => :unicode
75
+ end
76
+
77
+ it "to[:encoding]が:sjisならば、from[:encoding]も:sjisになる" do
78
+ @to.update :encoding => :sjis
79
+ lambda {
80
+ E4U::Encode::DoCoMo.encode('', @from, @to)
81
+ }.should change { @from[:encoding] }.from(:unicode).to(:sjis)
82
+ end
83
+
84
+ it "to[:encoding]が:utf8ならば、from[:encoding]も:utf8になる" do
85
+ @to.update :encoding => :utf8
86
+ lambda {
87
+ E4U::Encode::DoCoMo.encode('', @from, @to)
88
+ }.should change { @from[:encoding] }.from(:unicode).to(:utf8)
89
+ end
90
+
91
+ it "to[:encoding]が:sjis、:utf8以外ならば、例外が起こる" do
92
+ @to.update :encoding => :other_encoding
93
+ lambda {
94
+ E4U::Encode::DoCoMo.encode('', @from, @to)
95
+ }.should raise_error
96
+ end
97
+
98
+ it "to[:encoding]が:sjisならば、CP932な文字列が返ってくる" do
99
+ pending "only RUBY_VERSION >= '1.9.1'" unless RUBY_VERSION >= '1.9.1'
100
+ str = "とある文字列の符号化方式<エンコーディング>"
101
+ @to.update :encoding => :sjis
102
+ E4U::Encode::DoCoMo.encode(str, @from, @to).encoding.should == Encoding::Windows_31J
103
+ # うまく動かない…
104
+ # lambda {
105
+ # E4U::Encode::DoCoMo.encode(str, @from, @to)
106
+ # }.should change(str, :encoding).from(Encoding::UTF_8).to(Encoding::Windows_31J)
107
+ end
108
+
109
+ it "to[:encoding]が:utf8ならば、UTF-8な文字列が返ってくる" do
110
+ pending "only RUBY_VERSION >= '1.9.1'" unless RUBY_VERSION >= '1.9.1'
111
+ str = "とある文字列の符号化方式<エンコーディング>"
112
+ @to.update :encoding => :utf8
113
+ E4U::Encode::DoCoMo.encode(str, @from, @to).encoding.should == Encoding::UTF_8
114
+ # lambda {
115
+ # E4U::Encode::DoCoMo.encode(str, @from, @to)
116
+ # }.should change(str, :encoding).from(Encoding::UTF_8).to(Encoding::UTF_8)
117
+ # # => encoding should have been changed to #<Encoding:UTF-8>, but is now #<Encoding:UTF-8>
118
+ end
119
+
120
+ it "to[:encoding]が:unicodeならば、UTF-8な文字列が返ってくる" do
121
+ pending "only RUBY_VERSION >= '1.9.1'" unless RUBY_VERSION >= '1.9.1'
122
+ str = "とある文字列の符号化方式<エンコーディング>"
123
+ @to.update :encoding => :utf8
124
+ E4U::Encode::DoCoMo.encode(str, @from, @to).encoding.should == Encoding::UTF_8
125
+ # lambda {
126
+ # E4U::Encode::DoCoMo.encode(str, @from, @to)
127
+ # }.should change(str, :encoding).from(Encoding::UTF_8).to(Encoding::UTF_8)
128
+ # # => encoding should have been changed to #<Encoding:UTF-8>, but is now #<Encoding:UTF-8>
129
+ end
130
+ end
131
+ end
132
+ end
133
+ end
134
+
135
+
136
+ describe E4U do
137
+ describe E4U::Encode do
138
+
139
+ describe E4U::Encode::DoCoMo do
140
+ before :all do
141
+ @utf8_str_ary = %w(本日は 晴天 なり)
142
+ @sjis_str_ary = @utf8_str_ary.map { |e| NKF.nkf('-Wm0x --oc=CP932', e) }
143
+
144
+ @webcode = "\x1B\x24\x47\x6A\x0F"
145
+
146
+ @sun = E4U.google.find{ |e| e[:id] == '000' }
147
+ end
148
+
149
+ it "SJISなDoCoMo絵文字を、UTF-8なDoCoMo絵文字に変換できること" do
150
+ sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
151
+ utf8 = @utf8_str_ary.join @sun.docomo_emoji.utf8
152
+
153
+ got = E4U.encode(sjis, :docomo, :sjis => :utf8)
154
+ got.should == utf8
155
+ end
156
+
157
+ it "SJISなDoCoMo絵文字を、UTF-8な数値文字参照に変換できること" do
158
+ sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
159
+ utf8 = @utf8_str_ary.join "&#x#{@sun.docomo_emoji.unicode};"
160
+
161
+ got = E4U.encode(sjis, :docomo, :sjis => :unicode)
162
+ got.should == utf8
163
+ end
164
+
165
+ it "UTF-8なDoCoMo絵文字を、SJISなDoCoMo絵文字に変換できること" do
166
+ sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
167
+ utf8 = @utf8_str_ary.join @sun.docomo_emoji.utf8
168
+
169
+ got = E4U.encode(utf8, :docomo, :utf8 => :sjis)
170
+ got.should == sjis
171
+ end
172
+
173
+ it "SJISなDoCoMo絵文字を、UTF-8なKDDI絵文字に変換できること" do
174
+ sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
175
+ utf8 = @utf8_str_ary.join @sun.kddi_emoji.utf8
176
+
177
+ got = E4U.encode(sjis, :docomo => :kddi, :sjis => :utf8)
178
+ got.should == utf8
179
+ end
180
+
181
+ it "SJISなDoCoMo絵文字を、SJISなKDDI絵文字に変換できること" do
182
+ sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
183
+ kddi = @sjis_str_ary.join @sun.kddi_emoji.sjis
184
+
185
+ got = E4U.encode(sjis, :sjis, :docomo => :kddi)
186
+ got.should == kddi
187
+ end
188
+
189
+ it "SJISなDoCoMo絵文字を、SJISなSoftbank絵文字に変換できること" do
190
+ sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
191
+ softbank = @sjis_str_ary.join @sun.softbank_emoji.sjis
192
+
193
+ got = E4U.encode(sjis, :sjis, :docomo => :softbank)
194
+ got.should == softbank
195
+ end
196
+
197
+ it "SJISなDoCoMo絵文字を、WebcodeなSoftbank絵文字に変換できること" do
198
+ sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
199
+ softbank = @sjis_str_ary.join @webcode
200
+
201
+ got = E4U.encode(sjis, :sjis => :webcode, :docomo => :softbank)
202
+ got.should == softbank
203
+ end
204
+
205
+ it "SJISなDoCoMo絵文字を、UTF-8なSoftbank絵文字に変換できること" do
206
+ sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
207
+ softbank = @utf8_str_ary.join @sun.softbank_emoji.utf8
208
+
209
+ got = E4U.encode(sjis, :sjis => :utf8, :docomo => :softbank)
210
+ got.should == softbank
211
+ end
212
+
213
+ it "SJISなDoCoMo絵文字を、UTF-8なGoogle絵文字に変換できること" do
214
+ sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
215
+ google = @utf8_str_ary.join @sun.google_emoji.utf8
216
+
217
+ got = E4U.encode(sjis, :sjis => :utf8, :docomo => :google)
218
+ got.should == google
219
+ end
220
+
221
+ it "UTF-8なDoCoMo絵文字を、UTF-8なGoogle絵文字に変換できること" do
222
+ utf8 = @utf8_str_ary.join @sun.docomo_emoji.utf8
223
+ google = @utf8_str_ary.join @sun.google_emoji.utf8
224
+
225
+ got = E4U.encode(utf8, :utf8, :docomo => :google)
226
+ got.should == google
227
+ end
228
+ end
229
+ end
230
+ end
data/spec/e4u_spec.rb ADDED
@@ -0,0 +1,173 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
+
4
+ describe E4U do
5
+ describe "encode" do
6
+ before :all do
7
+ @utf8_str_ary = %w(本日は 晴天 なり)
8
+ @sjis_str_ary = @utf8_str_ary.map { |e| NKF.nkf('-Wm0x --oc=CP932', e) }
9
+ @sun = E4U.google.find{ |e| e[:id] == '000' }
10
+ end
11
+
12
+ context "DoCoMo" do
13
+ context "SJISな絵文字" do
14
+ before :all do
15
+ @str = @sjis_str_ary.join @sun.docomo_emoji.sjis
16
+ end
17
+
18
+ it "UTF-8な絵文字に変換できること" do
19
+ utf8 = @utf8_str_ary.join @sun.docomo_emoji.utf8
20
+ E4U.encode(@str, :docomo, :sjis => :utf8).should == utf8
21
+ end
22
+
23
+ it "Unicode数値文字参照に変換できること" do
24
+ utf8 = @utf8_str_ary.join "&#x#{@sun.docomo_emoji.unicode};"
25
+ E4U.encode(@str, :docomo, :sjis => :unicode).should == utf8
26
+ end
27
+ end
28
+
29
+ context "UTF-8な絵文字" do
30
+ before :all do
31
+ @str = @utf8_str_ary.join @sun.docomo_emoji.utf8
32
+ end
33
+
34
+ it "SJISな絵文字に変換できること" do
35
+ sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
36
+ E4U.encode(@str, :docomo, :utf8 => :sjis).should == sjis
37
+ end
38
+
39
+ it "Unicode数値文字参照に変換できること" do
40
+ unicode = @utf8_str_ary.join "&#x#{@sun.docomo_emoji.unicode};"
41
+ E4U.encode(@str, :docomo, :utf8 => :unicode).should == unicode
42
+ end
43
+
44
+ it "UTF-8なKDDI絵文字に変換できること" do
45
+ utf8 = @utf8_str_ary.join @sun.kddi_emoji.utf8
46
+ E4U.encode(@str, :utf8, :docomo => :kddi).should == utf8
47
+ end
48
+
49
+ it "SJISなKDDI絵文字に変換できること" do
50
+ sjis = @sjis_str_ary.join @sun.kddi_emoji.sjis
51
+ E4U.encode(@str, :utf8 => :sjis, :docomo => :kddi).should == sjis
52
+ end
53
+
54
+ it "UTF-8なSoftbank絵文字に変換できること" do
55
+ utf8 = @utf8_str_ary.join @sun.softbank_emoji.utf8
56
+ E4U.encode(@str, :utf8, :docomo => :softbank).should == utf8
57
+ end
58
+
59
+ it "SJISなSoftbank絵文字に変換できること" do
60
+ sjis = @sjis_str_ary.join @sun.softbank_emoji.sjis
61
+ E4U.encode(@str, :utf8 => :sjis, :docomo => :softbank).should == sjis
62
+ end
63
+
64
+ it "WebcodeなSoftbank絵文字に変換できること" do
65
+ sjis = @sjis_str_ary.join "\x1B\x24\x47\x6A\x0F"
66
+ E4U.encode(@str, :utf8 => :webcode, :docomo => :softbank).should == sjis
67
+ end
68
+
69
+ it "UTF-8なGoogle絵文字に変換できること" do
70
+ utf8 = @utf8_str_ary.join @sun.google_emoji.utf8
71
+ E4U.encode(@str, :utf8, :docomo => :google).should == utf8
72
+ end
73
+ end
74
+ end
75
+
76
+ context "Google" do
77
+ context "UTF-8な絵文字" do
78
+ before :all do
79
+ @str = @utf8_str_ary.join @sun.google_emoji.utf8
80
+ end
81
+
82
+ it "Unicode数値文字参照に変換できること" do
83
+ unicode = @utf8_str_ary.join "&#x#{@sun.google_emoji.unicode};"
84
+ E4U.encode(@str, :google, :utf8 => :unicode).should == unicode
85
+ end
86
+
87
+ it "UTF-8なDoCoMo絵文字に変換できること" do
88
+ utf8 = @utf8_str_ary.join @sun.docomo_emoji.utf8
89
+ E4U.encode(@str, :utf8, :google => :docomo).should == utf8
90
+ end
91
+
92
+ it "SJISなDoCoMo絵文字に変換できること" do
93
+ sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
94
+ E4U.encode(@str, :utf8 => :sjis, :google => :docomo).should == sjis
95
+ end
96
+
97
+ it "UTF-8なKDDI絵文字に変換できること" do
98
+ utf8 = @utf8_str_ary.join @sun.kddi_emoji.utf8
99
+ E4U.encode(@str, :utf8, :google => :kddi).should == utf8
100
+ end
101
+
102
+ it "SJISなKDDI絵文字に変換できること" do
103
+ sjis = @sjis_str_ary.join @sun.kddi_emoji.sjis
104
+ E4U.encode(@str, :utf8 => :sjis, :google => :kddi).should == sjis
105
+ end
106
+
107
+ it "UTF-8なSoftbank絵文字に変換できること" do
108
+ utf8 = @utf8_str_ary.join @sun.softbank_emoji.utf8
109
+ E4U.encode(@str, :utf8, :google => :softbank).should == utf8
110
+ end
111
+
112
+ it "SJISなSoftbank絵文字に変換できること" do
113
+ sjis = @sjis_str_ary.join @sun.softbank_emoji.sjis
114
+ E4U.encode(@str, :utf8 => :sjis, :google => :softbank).should == sjis
115
+ end
116
+
117
+ it "WebcodeなSoftbank絵文字に変換できること" do
118
+ sjis = @sjis_str_ary.join "\x1B\x24\x47\x6A\x0F"
119
+ E4U.encode(@str, :utf8 => :webcode, :google => :softbank).should == sjis
120
+ end
121
+ end
122
+
123
+ context "Unicode数値文字参照" do
124
+ before :all do
125
+ @str = @utf8_str_ary.join "&#x#{@sun.google_emoji.unicode};"
126
+ end
127
+
128
+ it "UTF-8なGoogle絵文字に変換できること" do
129
+ utf8 = @utf8_str_ary.join @sun.google_emoji.utf8
130
+ E4U.encode(@str, :google, :unicode => :utf8).should == utf8
131
+ end
132
+ end
133
+ end
134
+
135
+ context "DoCoMo <=> KDDI" do
136
+ before :all do
137
+ emoji = E4U.google.find{ |e| e[:docomo].nil? != e[:kddi].nil? }
138
+ @docomo = "#{emoji[:name]} #{emoji.docomo_emoji.utf8}"
139
+ @docomo.encode('UTF-8') if RUBY_VERSION >= '1.9.1'
140
+ @kddi = "#{emoji[:name]} #{emoji.kddi_emoji.utf8}"
141
+ @kddi.encode('UTF-8') if RUBY_VERSION >= '1.9.1'
142
+ end
143
+
144
+ it "該当する絵文字がなければ、fallback_textを出力すること" do
145
+ E4U.encode(@kddi, :utf8, :kddi => :docomo).should == @docomo
146
+ end
147
+
148
+ it "fallback_textは絵文字に変換しないこと" do
149
+ E4U.encode(@docomo, :utf8, :docomo => :kddi).should_not == @kddi
150
+ end
151
+ end
152
+
153
+ context "DoCoMo <=> Softbank" do
154
+ before :all do
155
+ emoji = E4U.google.find{ |e| e[:docomo].nil? != e[:softbank].nil? }
156
+ @docomo = "#{emoji[:name]} #{emoji.docomo_emoji.utf8}"
157
+ @docomo.encode('UTF-8') if RUBY_VERSION >= '1.9.1'
158
+ @softbank = "#{emoji[:name]} #{emoji.softbank_emoji.utf8}"
159
+ @softbank.encode('UTF-8') if RUBY_VERSION >= '1.9.1'
160
+ end
161
+
162
+ it "該当する絵文字がなければ、fallback_textを出力すること" do
163
+ E4U.encode(@docomo, :utf8, :docomo => :softbank).should == @softbank
164
+ end
165
+
166
+ it "fallback_textは絵文字に変換しないこと" do
167
+ E4U.encode(@softbank, :utf8, :softbank => :docomo).should_not == @docomo
168
+ end
169
+ end
170
+ end
171
+
172
+ it "detect"
173
+ end
@@ -0,0 +1,78 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
+
4
+ describe E4U::Encode do
5
+ context "convert" do
6
+ it "引数なしの場合は文字列がそのまま返る" do
7
+ str = ''
8
+ E4U::Encode.convert(str).should eql(str)
9
+ end
10
+
11
+ it "nilを渡したらnilが返る" do
12
+ E4U::Encode.convert(nil).should be_nil
13
+ end
14
+
15
+ it "引数が多い場合はArgumentErrorが発生する" do
16
+ lambda{
17
+ E4U::Encode.convert('', :docomo, :sjis => :sjis)
18
+ }.should_not raise_error
19
+
20
+ lambda{
21
+ E4U::Encode.convert('', :docomo, {:sjis => :sjis}, 'arg3')
22
+ }.should raise_error ArgumentError
23
+ end
24
+
25
+ it "キャリアとエンコーディングが明示されないとArgumentErrorが発生する" do
26
+ lambda{
27
+ E4U::Encode.convert('', :docomo => :google)
28
+ }.should raise_error ArgumentError
29
+
30
+ lambda{
31
+ E4U::Encode.convert('', :sjis => :utf8)
32
+ }.should raise_error ArgumentError
33
+ end
34
+
35
+ it "NoMethodErrorではなくArgumentErrorが発生すること" do
36
+ lambda{
37
+ E4U::Encode.convert('', :docomo)
38
+ }.should_not raise_error NoMethodError
39
+
40
+ lambda{
41
+ E4U::Encode.convert('', :docomo)
42
+ }.should raise_error ArgumentError
43
+
44
+ lambda{
45
+ E4U::Encode.convert('', :sjis)
46
+ }.should_not raise_error NoMethodError
47
+
48
+ lambda{
49
+ E4U::Encode.convert('', :sjis)
50
+ }.should raise_error ArgumentError
51
+ end
52
+
53
+ it "非対応なキャリアを渡すとArgumentErrorが発生する" do
54
+ lambda{
55
+ E4U::Encode.convert('', :emobile, :sjis => :sjis)
56
+ }.should raise_error ArgumentError
57
+ end
58
+
59
+ it "非対応なエンコーディングを渡すとArgumentErrorが発生する" do
60
+ lambda{
61
+ E4U::Encode.convert('', :euc_jp, :docomo => :docomo)
62
+ }.should raise_error ArgumentError
63
+ end
64
+
65
+ it "存在しないキャリアとエンコーディングの組み合わせを渡してもArgumentErrorは発生しない" do
66
+ lambda{
67
+ # google-sjisは存在しない
68
+ E4U::Encode.convert('', :docomo => :google, :utf8 => :sjis)
69
+ }.should_not raise_error ArgumentError
70
+
71
+ # 変換できないのでRuntimeErrorは起こる
72
+ lambda{
73
+ E4U::Encode.convert('', :docomo => :google, :utf8 => :sjis)
74
+ }.should raise_error RuntimeError
75
+ end
76
+
77
+ end
78
+ end
@@ -0,0 +1,47 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
+
4
+ describe E4U::Encode::Encoding do
5
+ context "to_utf8" do
6
+ if RUBY_VERSION < '1.9.1'
7
+ it "SJIS文字列がUTF-8に変換されること" do
8
+ utf8 = "とある文字列の符号化方式<エンコーディング>"
9
+ sjis = NKF.nkf('-Wsm0x', utf8)
10
+ NKF.should_receive(:nkf).once.with('-Swm0x', sjis).and_return(utf8)
11
+ E4U::Encode::Encoding.to_utf8(sjis)
12
+ end
13
+ else
14
+ it "SJIS文字列がUTF-8に変換されること" do
15
+ sjis = "とある文字列の符号化方式<エンコーディング>".encode('SJIS')
16
+ utf8 = sjis.dup.encode('UTF-8')
17
+ sjis.should_receive(:encode).once.with('UTF-8').and_return(utf8)
18
+ E4U::Encode::Encoding.to_utf8(sjis)
19
+ end
20
+
21
+ it "CP932文字列がUTF-8に変換されること" do
22
+ sjis = "とある文字列の符号化方式<エンコーディング>".encode('CP932')
23
+ utf8 = sjis.dup.encode('UTF-8')
24
+ sjis.should_receive(:encode).once.with('UTF-8').and_return(utf8)
25
+ E4U::Encode::Encoding.to_utf8(sjis)
26
+ end
27
+ end
28
+ end
29
+
30
+ context "to_cp932" do
31
+ if RUBY_VERSION < '1.9.1'
32
+ it "UTF-8文字列がSJISに変換されること" do
33
+ utf8 = "とある文字列の符号化方式<エンコーディング>"
34
+ sjis = NKF.nkf('-Wsm0x', utf8)
35
+ NKF.should_receive(:nkf).once.with('-Wsm0x', utf8).and_return(sjis)
36
+ E4U::Encode::Encoding.to_cp932(utf8)
37
+ end
38
+ else
39
+ it "UTF-8文字列がCP932に変換されること" do
40
+ utf8 = "とある文字列の符号化方式<エンコーディング>"
41
+ sjis = utf8.dup.encode('CP932')
42
+ utf8.should_receive(:encode).once.with('CP932').and_return(sjis)
43
+ E4U::Encode::Encoding.to_cp932(utf8)
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,86 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
+
4
+ describe E4U::Encode::Google do
5
+ context "encode" do
6
+ before :all do
7
+ @from, @to = {}, {}
8
+ end
9
+
10
+ it "from[:carrier]が:google以外なら 例外が起こる" do
11
+ @from.update :carrier => :not_google
12
+ lambda {
13
+ E4U::Encode::Google.encode('', @from, @to)
14
+ }.should raise_error
15
+ end
16
+
17
+ it "from[:encoding]が:utf8、:unicode以外なら 例外が起こる" do
18
+ @from.update :carrier => :google, :encoding => :euc_jp
19
+ lambda {
20
+ E4U::Encode::Google.encode('', @from, @to)
21
+ }.should raise_error
22
+ end
23
+
24
+ it "from[:encoding]が:utf8なら :unicodeに変換される" do
25
+ @from.update :carrier => :google, :encoding => :utf8
26
+ lambda {
27
+ E4U::Encode::Google.encode('', @from, @to)
28
+ }.should change{ @from[:encoding] }.from(:utf8).to(:unicode)
29
+ end
30
+
31
+ context "from[:encoding]が:unicodeの時" do
32
+ before :all do
33
+ @from.update :encoding => :unicode
34
+ end
35
+
36
+ before :each do
37
+ @from.update :carrier => :google
38
+ end
39
+
40
+ it "to[:carrier]が:docomoならば、from[:carrier]も:docomoになる" do
41
+ @to.update :carrier => :docomo
42
+ lambda {
43
+ E4U::Encode::Google.encode('', @from, @to)
44
+ }.should change{ @from[:carrier] }.from(:google).to(:docomo)
45
+ end
46
+
47
+ it "to[:carrier]が:kddiならば、from[:carrier]も:kddiになる" do
48
+ @to.update :carrier => :kddi
49
+ lambda {
50
+ E4U::Encode::Google.encode('', @from, @to)
51
+ }.should change{ @from[:carrier] }.from(:google).to(:kddi)
52
+ end
53
+
54
+ it "to[:carrier]が:softbankならば、from[:carrier]も:softbankになる" do
55
+ @to.update :carrier => :softbank
56
+ lambda {
57
+ E4U::Encode::Google.encode('', @from, @to)
58
+ }.should change{ @from[:carrier] }.from(:google).to(:softbank)
59
+ end
60
+
61
+ context "to[:carrier]が:googleの時" do
62
+ before :all do
63
+ @to.update :carrier => :google
64
+ end
65
+
66
+ before :each do
67
+ @from.update :encoding => :unicode
68
+ end
69
+
70
+ it "to[:encoding]が:utf8ならば、from[:encoding]も:utf8になる" do
71
+ @to.update :encoding => :utf8
72
+ lambda {
73
+ E4U::Encode::Google.encode('', @from, @to)
74
+ }.should change{ @from[:encoding] }.from(:unicode).to(:utf8)
75
+ end
76
+
77
+ it "to[:encoding]が:utf8以外ならば例外が起こる" do
78
+ @to.update :carrier => :unicode
79
+ lambda {
80
+ E4U::Encode::Google.encode('', @from, @to)
81
+ }.should raise_error
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end