e4u-encode 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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