writeexcel 0.3.5 → 0.4.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 (122) hide show
  1. data/.gitattributes +1 -0
  2. data/README.rdoc +12 -6
  3. data/VERSION +1 -1
  4. data/charts/chartex.rb +316 -315
  5. data/charts/demo1.rb +1 -0
  6. data/charts/demo2.rb +1 -0
  7. data/charts/demo3.rb +117 -116
  8. data/charts/demo4.rb +119 -118
  9. data/charts/demo5.rb +48 -47
  10. data/examples/a_simple.rb +1 -0
  11. data/examples/autofilter.rb +1 -0
  12. data/examples/bigfile.rb +30 -29
  13. data/examples/chart_area.rb +121 -120
  14. data/examples/chart_bar.rb +120 -119
  15. data/examples/chart_column.rb +120 -119
  16. data/examples/chart_line.rb +120 -119
  17. data/examples/chart_pie.rb +108 -107
  18. data/examples/chart_scatter.rb +121 -120
  19. data/examples/chart_stock.rb +148 -147
  20. data/examples/chess.rb +1 -0
  21. data/examples/colors.rb +1 -0
  22. data/examples/comments1.rb +1 -0
  23. data/examples/comments2.rb +3 -2
  24. data/examples/copyformat.rb +1 -0
  25. data/examples/data_validate.rb +1 -0
  26. data/examples/date_time.rb +1 -0
  27. data/examples/defined_name.rb +1 -0
  28. data/examples/demo.rb +1 -0
  29. data/examples/diag_border.rb +1 -0
  30. data/examples/formats.rb +1 -0
  31. data/examples/formula_result.rb +1 -0
  32. data/examples/header.rb +1 -0
  33. data/examples/hide_sheet.rb +1 -0
  34. data/examples/hyperlink.rb +1 -0
  35. data/examples/images.rb +1 -0
  36. data/examples/indent.rb +1 -0
  37. data/examples/merge1.rb +1 -0
  38. data/examples/merge2.rb +1 -0
  39. data/examples/merge3.rb +1 -0
  40. data/examples/merge4.rb +1 -0
  41. data/examples/merge5.rb +1 -0
  42. data/examples/merge6.rb +67 -66
  43. data/examples/outline.rb +1 -0
  44. data/examples/outline_collapsed.rb +1 -0
  45. data/examples/panes.rb +1 -0
  46. data/examples/properties.rb +1 -0
  47. data/examples/properties_jp.rb +1 -0
  48. data/examples/protection.rb +1 -0
  49. data/examples/regions.rb +1 -0
  50. data/examples/repeat.rb +1 -0
  51. data/examples/right_to_left.rb +1 -0
  52. data/examples/row_wrap.rb +1 -0
  53. data/examples/stats.rb +1 -0
  54. data/examples/stocks.rb +1 -0
  55. data/examples/tab_colors.rb +1 -0
  56. data/examples/write_arrays.rb +1 -0
  57. data/lib/writeexcel.rb +6 -1
  58. data/lib/writeexcel/biffwriter.rb +21 -20
  59. data/lib/writeexcel/chart.rb +25 -12
  60. data/lib/writeexcel/charts/area.rb +153 -152
  61. data/lib/writeexcel/charts/bar.rb +178 -177
  62. data/lib/writeexcel/charts/column.rb +157 -156
  63. data/lib/writeexcel/charts/external.rb +62 -61
  64. data/lib/writeexcel/charts/line.rb +153 -152
  65. data/lib/writeexcel/charts/pie.rb +170 -169
  66. data/lib/writeexcel/charts/scatter.rb +4 -3
  67. data/lib/writeexcel/charts/stock.rb +212 -211
  68. data/lib/writeexcel/compatibility.rb +320 -0
  69. data/lib/writeexcel/excelformulaparser.rb +587 -586
  70. data/lib/writeexcel/format.rb +12 -13
  71. data/lib/writeexcel/formula.rb +30 -28
  72. data/lib/writeexcel/helper.rb +23 -0
  73. data/lib/writeexcel/olewriter.rb +5 -16
  74. data/lib/writeexcel/properties.rb +43 -54
  75. data/lib/writeexcel/storage_lite.rb +981 -968
  76. data/lib/writeexcel/workbook.rb +94 -73
  77. data/lib/writeexcel/worksheet.rb +230 -210
  78. data/test/helper.rb +19 -0
  79. data/test/test_00_IEEE_double.rb +1 -0
  80. data/test/test_01_add_worksheet.rb +1 -0
  81. data/test/test_02_merge_formats.rb +3 -5
  82. data/test/test_04_dimensions.rb +3 -5
  83. data/test/test_05_rows.rb +6 -6
  84. data/test/test_06_extsst.rb +8 -8
  85. data/test/test_11_date_time.rb +3 -5
  86. data/test/test_12_date_only.rb +3 -5
  87. data/test/test_13_date_seconds.rb +4 -6
  88. data/test/test_21_escher.rb +3 -5
  89. data/test/test_22_mso_drawing_group.rb +20 -22
  90. data/test/test_23_note.rb +5 -7
  91. data/test/test_24_txo.rb +3 -5
  92. data/test/test_25_position_object.rb +84 -79
  93. data/test/test_26_autofilter.rb +3 -13
  94. data/test/test_27_autofilter.rb +3 -13
  95. data/test/test_28_autofilter.rb +3 -13
  96. data/test/test_29_process_jpg.rb +5 -0
  97. data/test/test_30_validation_dval.rb +3 -5
  98. data/test/test_31_validation_dv_strings.rb +3 -5
  99. data/test/test_32_validation_dv_formula.rb +3 -5
  100. data/test/test_40_property_types.rb +10 -9
  101. data/test/test_41_properties.rb +1 -0
  102. data/test/test_42_set_properties.rb +14 -15
  103. data/test/test_50_name_stored.rb +299 -302
  104. data/test/test_51_name_print_area.rb +357 -360
  105. data/test/test_52_name_print_titles.rb +454 -457
  106. data/test/test_53_autofilter.rb +203 -206
  107. data/test/test_60_chart_generic.rb +5 -0
  108. data/test/test_61_chart_subclasses.rb +95 -94
  109. data/test/test_62_chart_formats.rb +272 -267
  110. data/test/test_63_chart_area_formats.rb +649 -644
  111. data/test/test_biff.rb +12 -38
  112. data/test/test_compatibility.rb +627 -0
  113. data/test/test_example_match.rb +3 -18
  114. data/test/test_format.rb +46 -105
  115. data/test/test_formula.rb +1 -0
  116. data/test/test_ole.rb +3 -4
  117. data/test/test_storage_lite.rb +125 -146
  118. data/test/test_workbook.rb +2 -23
  119. data/test/test_worksheet.rb +4 -5
  120. data/utils/add_magic_comment.rb +80 -0
  121. data/writeexcel.gemspec +8 -2
  122. metadata +10 -4
@@ -1,4 +1,6 @@
1
+ # -*- coding: utf-8 -*-
1
2
  require 'helper'
3
+ require 'stringio'
2
4
 
3
5
  class TC_BIFFWriter < Test::Unit::TestCase
4
6
 
@@ -6,11 +8,12 @@ class TC_BIFFWriter < Test::Unit::TestCase
6
8
  PERL_OUTDIR = File.join(TEST_DIR, 'perl_output')
7
9
 
8
10
  def setup
9
- t = Time.now.strftime("%Y%m%d")
10
- path = "temp#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
11
- @test_file = File.join(Dir.tmpdir, path)
12
11
  @biff = BIFFWriter.new
13
- @ruby_file = @test_file
12
+ @ruby_file = StringIO.new
13
+ end
14
+
15
+ def teardown
16
+ @biff = nil
14
17
  end
15
18
 
16
19
  def test_append_no_error
@@ -25,7 +28,7 @@ def test_data_added
25
28
  assert_nothing_raised{ @biff.append("Hello", "World") }
26
29
  data = ''
27
30
  while d = @biff.get_data
28
- data = data + d
31
+ data += d
29
32
  end
30
33
  assert_equal("HelloWorld", data, "Bad data contents")
31
34
  assert_equal(10, @biff.datasize, "Bad data size")
@@ -37,7 +40,7 @@ def test_data_prepended
37
40
  assert_nothing_raised{ @biff.prepend("World") }
38
41
  data = ''
39
42
  while d = @biff.get_data
40
- data = data + d
43
+ data += d
41
44
  end
42
45
  assert_equal("WorldHello", data, "Bad data contents")
43
46
  assert_equal(10, @biff.datasize, "Bad data size")
@@ -64,38 +67,9 @@ def test_datasize_mixed
64
67
  def test_add_continue
65
68
  perl_file = "#{PERL_OUTDIR}/biff_add_continue_testdata"
66
69
  size = File.size(perl_file)
67
- @fh = File.new(@ruby_file,"w+")
68
- @fh.print(@biff.add_continue('testdata'))
69
- @fh.close
70
- rsize = File.size(@ruby_file)
71
- assert_equal(size,rsize,"File sizes not the same")
70
+ @ruby_file.print(@biff.add_continue('testdata'))
71
+ rsize = @ruby_file.size
72
+ assert_equal(size, rsize, "File sizes not the same")
72
73
  compare_file(perl_file, @ruby_file)
73
74
  end
74
-
75
- def teardown
76
- @biff = nil
77
- File.delete(@ruby_file) if File.exist?(@ruby_file)
78
- end
79
-
80
- def compare_file(expected, target)
81
- fh_e = File.open(expected, "r")
82
- fh_t = File.open(target, "r")
83
- while true do
84
- e1 = fh_e.read(1)
85
- t1 = fh_t.read(1)
86
- if e1.nil?
87
- assert( t1.nil?, "#{expexted} is EOF but #{target} is NOT EOF.")
88
- break
89
- elsif t1.nil?
90
- assert( e1.nil?, '#{target} is EOF but #{expected} is NOT EOF.')
91
- break
92
- end
93
- assert_equal(e1, t1, sprintf(" #{expected} = '%s' but #{target} = '%s'", e1, t1))
94
- break
95
- end
96
- fh_e.close
97
- fh_t.close
98
- end
99
-
100
-
101
75
  end
@@ -0,0 +1,627 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'nkf'
4
+
5
+ class TC_Compatibility < Test::Unit::TestCase
6
+ def setup
7
+ ruby_18 do
8
+ @kcode = $KCODE
9
+ $KCODE = 'u'
10
+ end
11
+ end
12
+
13
+ def teardown
14
+ ruby_18 { $KCODE = @kcode }
15
+ end
16
+
17
+ def test_encoding
18
+ # String#encoding -> Encoding::***
19
+ str = 'あいう'
20
+ utf8 = str
21
+ # utf16le = NKF.nkf('-w16L0 -m0 -W', str)
22
+ # utf16be = NKF.nkf('-w16B0 -m0 -W', str)
23
+ assert_equal(Encoding::UTF_8, utf8.encoding)
24
+
25
+ if RUBY_VERSION < "1.9"
26
+ # String#encoding returns depending $KCODE
27
+ # if string has not changed its encoding.
28
+ str = 'abc'
29
+ utf8 = str
30
+ assert_equal(Encoding::UTF_8, utf8.encoding)
31
+ end
32
+ end
33
+
34
+ def ascii_str_enc_ascii
35
+ str = ["abc"].pack('a*').encode('ASCII')
36
+ str.encode('ASCII') if RUBY_VERSION < "1.9"
37
+ str
38
+ end
39
+
40
+ def test_ascii_str_enc_ascii_is_ascii_encoding
41
+ assert_equal(Encoding::ASCII, ascii_str_enc_ascii.encoding)
42
+ end
43
+
44
+ def ascii_str_enc_binary
45
+ str = ["abc"].pack('a*').encode('BINARY')
46
+ str.encode('BINARY') if RUBY_VERSION < "1.9"
47
+ str
48
+ end
49
+
50
+ def test_ascii_str_enc_binary_is_binary_encoding
51
+ assert_equal(Encoding::BINARY, ascii_str_enc_binary.encoding)
52
+ end
53
+
54
+ def non_ascii_str_enc_binary
55
+ str = [0x80].pack('v*')
56
+ str.force_encoding('BINARY')
57
+ str
58
+ end
59
+
60
+ def test_non_ascii_str_enc_binary
61
+ assert_equal(Encoding::BINARY, non_ascii_str_enc_binary.encoding)
62
+ end
63
+
64
+ def ascii_str_enc_utf8
65
+ "abc"
66
+ end
67
+
68
+ def test_ascii_str_enc_utf8_is_utf8_encoding
69
+ assert_equal(Encoding::UTF_8, ascii_str_enc_utf8.encoding)
70
+ end
71
+
72
+ def non_ascii_str_enc_utf8
73
+ 'あいう'
74
+ end
75
+
76
+ def test_non_ascii_str_enc_utf8
77
+ assert_equal(Encoding::UTF_8, non_ascii_str_enc_utf8.encoding)
78
+ end
79
+
80
+ def ascii_str_enc_eucjp
81
+ str = "abc".encode('EUCJP')
82
+ str
83
+ end
84
+
85
+ def test_ascii_str_enc_eucjp_is_eucjp_encoding
86
+ assert_equal(Encoding::EUCJP, ascii_str_enc_eucjp.encoding)
87
+ end
88
+
89
+ def non_ascii_str_enc_eucjp
90
+ str = 'あいう'.encode('EUCJP')
91
+ str
92
+ end
93
+
94
+ def test_non_ascii_str_enc_eucjp
95
+ assert_equal(Encoding::EUCJP, non_ascii_str_enc_eucjp.encoding)
96
+ end
97
+
98
+ def ascii_str_enc_sjis
99
+ str = "abc".encode('SJIS')
100
+ str
101
+ end
102
+
103
+ def test_ascii_str_enc_sjis_is_sjis_encoding
104
+ assert_equal(Encoding::SJIS, ascii_str_enc_sjis.encoding)
105
+ end
106
+
107
+ def non_ascii_str_enc_sjis
108
+ str = 'あいう'.encode('SJIS')
109
+ str
110
+ end
111
+
112
+ def test_non_ascii_str_enc_sjis
113
+ assert_equal(Encoding::SJIS, non_ascii_str_enc_sjis.encoding)
114
+ end
115
+
116
+ def ascii_str_enc_utf16le
117
+ str = NKF.nkf('-w16L0 -m0 -W', "abc")
118
+ str.force_encoding('UTF_16LE') if RUBY_VERSION < "1.9"
119
+ str
120
+ end
121
+
122
+ def test_ascii_str_enc_utf16le_is_utf16le_encoding
123
+ assert_equal(Encoding::UTF_16LE, ascii_str_enc_utf16le.encoding)
124
+ end
125
+
126
+ def non_ascii_str_enc_utf16le
127
+ str = NKF.nkf('-w16L0 -m0 -W', 'あいう')
128
+ str.force_encoding('UTF_16LE') if RUBY_VERSION < "1.9"
129
+ str
130
+ end
131
+
132
+ def test_non_ascii_str_enc_utf16le
133
+ assert_equal(Encoding::UTF_16LE, non_ascii_str_enc_utf16le.encoding)
134
+ end
135
+
136
+ def ascii_str_enc_utf16be
137
+ str = NKF.nkf('-w16B0 -m0 -W', "abc")
138
+ str.force_encoding('UTF_16BE') if RUBY_VERSION < "1.9"
139
+ str
140
+ end
141
+
142
+ def test_ascii_str_enc_utf16be_is_utf16be_encoding
143
+ assert_equal(Encoding::UTF_16BE, ascii_str_enc_utf16be.encoding)
144
+ end
145
+
146
+ def non_ascii_str_enc_utf16be
147
+ str = NKF.nkf('-w16B0 -m0 -W', 'あいう')
148
+ str.force_encoding('UTF_16BE') if RUBY_VERSION < "1.9"
149
+ str
150
+ end
151
+
152
+ def test_non_ascii_str_enc_utf16be
153
+ assert_equal(Encoding::UTF_16BE, non_ascii_str_enc_utf16be.encoding)
154
+ end
155
+
156
+ def test_ascii_str_ascii_to_ascii
157
+ str = ascii_str_enc_ascii
158
+ assert_equal(Encoding::ASCII, str.encode('ASCII').encoding)
159
+ end
160
+
161
+ def test_ascii_str_ascii_to_binary
162
+ str = ascii_str_enc_ascii
163
+ assert_equal(Encoding::BINARY, str.encode('BINARY').encoding)
164
+ end
165
+
166
+ def test_ascii_str_ascii_to_utf8
167
+ str = ascii_str_enc_ascii
168
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_8') }
169
+ end
170
+
171
+ def test_ascii_str_ascii_to_eucjp
172
+ str = ascii_str_enc_ascii
173
+ assert_equal(Encoding::EUCJP, str.encode('EUCJP').encoding)
174
+ end
175
+
176
+ def test_ascii_str_ascii_to_sjis
177
+ str = ascii_str_enc_ascii
178
+ assert_equal(Encoding::SJIS, str.encode('SJIS').encoding)
179
+ end
180
+
181
+ def test_ascii_str_ascii_to_utf16le
182
+ str = ascii_str_enc_ascii
183
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_16LE') }
184
+ end
185
+
186
+ def test_ascii_str_ascii_to_utf16be
187
+ str = ascii_str_enc_ascii
188
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_16BE') }
189
+ end
190
+
191
+ def test_ascii_str_binary_to_ascii
192
+ str = ascii_str_enc_binary
193
+ assert_equal(Encoding::ASCII, str.encode('ASCII').encoding)
194
+ end
195
+
196
+ def test_non_ascii_str_binary_to_ascii
197
+ str = non_ascii_str_enc_binary
198
+ assert_raise(Encoding::UndefinedConversionError){ str.encode('ASCII') }
199
+ end
200
+
201
+ def test_ascii_str_binary_to_binary
202
+ str = ascii_str_enc_binary
203
+ assert_equal(Encoding::BINARY, str.encode('BINARY').encoding)
204
+ end
205
+
206
+ def test_non_ascii_str_binary_to_binary
207
+ str = non_ascii_str_enc_binary
208
+ assert_equal(Encoding::BINARY, str.encode('BINARY').encoding)
209
+ end
210
+
211
+ def test_ascii_str_binary_to_utf8
212
+ str = ascii_str_enc_binary
213
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_8') }
214
+ end
215
+
216
+ def test_non_ascii_str_binary_to_utf8
217
+ str = non_ascii_str_enc_binary
218
+ assert_raise(Encoding::ConverterNotFoundError,
219
+ Encoding::UndefinedConversionError) { str.encode('UTF_8') }
220
+ end
221
+
222
+ def test_ascii_str_binary_to_eucjp
223
+ str = ascii_str_enc_binary
224
+ assert_equal(Encoding::EUCJP, str.encode('EUCJP').encoding)
225
+ end
226
+
227
+ def test_non_ascii_str_binary_to_eucjp
228
+ str = non_ascii_str_enc_binary
229
+ assert_raise(Encoding::ConverterNotFoundError,
230
+ Encoding::UndefinedConversionError) { str.encode('EUCJP') }
231
+ end
232
+
233
+ def test_ascii_str_binary_to_sjis
234
+ str = ascii_str_enc_binary
235
+ assert_equal(Encoding::SJIS, str.encode('SJIS').encoding)
236
+ end
237
+
238
+ def test_non_ascii_str_binary_to_sjis
239
+ str = non_ascii_str_enc_binary
240
+ assert_raise(Encoding::ConverterNotFoundError,
241
+ Encoding::UndefinedConversionError) { str.encode('SJIS') }
242
+ end
243
+
244
+ def test_ascii_str_binary_to_utf16le
245
+ str = ascii_str_enc_binary
246
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_16LE') }
247
+ end
248
+
249
+ def test_non_ascii_str_binary_to_utf16le
250
+ str = non_ascii_str_enc_binary
251
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_16LE') }
252
+ end
253
+
254
+ def test_ascii_str_binary_to_utf16be
255
+ str = ascii_str_enc_binary
256
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_16BE') }
257
+ end
258
+
259
+ def test_non_ascii_str_binary_to_utf16be
260
+ str = non_ascii_str_enc_binary
261
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_16BE') }
262
+ end
263
+
264
+ def test_ascii_str_utf8_to_ascii
265
+ str = ascii_str_enc_utf8
266
+ assert_equal(Encoding::ASCII, str.encode('ASCII').encoding)
267
+ end
268
+
269
+ def test_non_ascii_str_utf8_to_ascii
270
+ str = non_ascii_str_enc_utf8
271
+ assert_raise(Encoding::UndefinedConversionError) { str.encode('ASCII') }
272
+ end
273
+
274
+ def test_ascii_str_utf8_to_binary
275
+ str = ascii_str_enc_utf8
276
+ assert_equal(Encoding::BINARY, str.encode('BINARY').encoding)
277
+ end
278
+
279
+ def test_non_ascii_str_utf8_to_binary
280
+ str = non_ascii_str_enc_utf8
281
+ assert_raise(Encoding::UndefinedConversionError) { str.encode('BINARY') }
282
+ end
283
+
284
+ def test_ascii_str_utf8_to_utf8
285
+ str = ascii_str_enc_utf8
286
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_8') }
287
+ end
288
+
289
+ def test_non_ascii_str_utf8_to_utf8
290
+ str = non_ascii_str_enc_utf8
291
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_8') }
292
+ end
293
+
294
+ def test_ascii_str_utf8_to_eucjp
295
+ str = ascii_str_enc_utf8
296
+ assert_equal(Encoding::EUCJP, str.encode('EUCJP').encoding)
297
+ end
298
+
299
+ def test_non_ascii_str_utf8_to_eucjp
300
+ str = non_ascii_str_enc_utf8
301
+ assert_equal(Encoding::EUCJP, str.encode('EUCJP').encoding)
302
+ end
303
+
304
+ def test_ascii_str_utf8_to_sjis
305
+ str = ascii_str_enc_utf8
306
+ assert_equal(Encoding::SJIS, str.encode('SJIS').encoding)
307
+ end
308
+
309
+ def test_non_ascii_str_utf8_to_sjis
310
+ str = non_ascii_str_enc_utf8
311
+ assert_equal(Encoding::SJIS, str.encode('SJIS').encoding)
312
+ end
313
+
314
+ def test_ascii_str_utf8_to_utf16le
315
+ str = ascii_str_enc_utf8
316
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_16LE') }
317
+ end
318
+
319
+ def test_non_ascii_str_utf8_to_utf16le
320
+ str = non_ascii_str_enc_utf8
321
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_16LE') }
322
+ end
323
+
324
+ def test_ascii_str_utf8_to_utf16be
325
+ str = ascii_str_enc_utf8
326
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_16BE') }
327
+ end
328
+
329
+ def test_non_ascii_str_utf8_to_utf16be
330
+ str = non_ascii_str_enc_utf8
331
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_16BE') }
332
+ end
333
+
334
+ def test_ascii_str_eucjp_to_ascii
335
+ str = ascii_str_enc_eucjp
336
+ assert_equal(Encoding::ASCII, str.encode('ASCII').encoding)
337
+ end
338
+
339
+ def test_non_ascii_str_eucjp_to_ascii
340
+ str = non_ascii_str_enc_eucjp
341
+ assert_raise(Encoding::UndefinedConversionError) { str.encode('ASCII') }
342
+ end
343
+
344
+ def test_ascii_str_eucjp_to_binary
345
+ str = ascii_str_enc_eucjp
346
+ assert_equal(Encoding::BINARY, str.encode('BINARY').encoding)
347
+ end
348
+
349
+ def test_non_ascii_str_eucjp_to_binary
350
+ str = non_ascii_str_enc_eucjp
351
+ assert_raise(Encoding::UndefinedConversionError) { str.encode('BINARY') }
352
+ end
353
+
354
+ def test_ascii_str_eucjp_to_utf8
355
+ str = ascii_str_enc_eucjp
356
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_8') }
357
+ end
358
+
359
+ def test_non_ascii_str_eucjp_to_utf8
360
+ str = non_ascii_str_enc_eucjp
361
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_8') }
362
+ end
363
+
364
+ def test_ascii_str_eucjp_to_eucjp
365
+ str = ascii_str_enc_eucjp
366
+ assert_equal(Encoding::EUCJP, str.encode('EUCJP').encoding)
367
+ end
368
+
369
+ def test_non_ascii_str_eucjp_to_eucjp
370
+ str = non_ascii_str_enc_eucjp
371
+ assert_equal(Encoding::EUCJP, str.encode('EUCJP').encoding)
372
+ end
373
+
374
+ def test_ascii_str_eucjp_to_sjis
375
+ str = ascii_str_enc_eucjp
376
+ assert_equal(Encoding::SJIS, str.encode('SJIS').encoding)
377
+ end
378
+
379
+ def test_non_ascii_str_eucjp_to_sjis
380
+ str = non_ascii_str_enc_eucjp
381
+ assert_equal(Encoding::SJIS, str.encode('SJIS').encoding)
382
+ end
383
+
384
+ def test_ascii_str_eucjp_to_utf16le
385
+ str = ascii_str_enc_eucjp
386
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_16LE') }
387
+ end
388
+
389
+ def test_non_ascii_str_eucjp_to_utf16le
390
+ str = non_ascii_str_enc_eucjp
391
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_16LE') }
392
+ end
393
+
394
+ def test_ascii_str_eucjp_to_utf16be
395
+ str = ascii_str_enc_eucjp
396
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_16BE') }
397
+ end
398
+
399
+ def test_non_ascii_str_eucjp_to_utf16be
400
+ str = non_ascii_str_enc_eucjp
401
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_16BE') }
402
+ end
403
+
404
+ def test_ascii_str_sjis_to_ascii
405
+ str = ascii_str_enc_sjis
406
+ assert_equal(Encoding::ASCII, str.encode('ASCII').encoding)
407
+ end
408
+
409
+ def test_non_ascii_str_sjis_to_ascii
410
+ str = non_ascii_str_enc_sjis
411
+ assert_raise(Encoding::UndefinedConversionError) { str.encode('ASCII') }
412
+ end
413
+
414
+ def test_ascii_str_sjis_to_binary
415
+ str = ascii_str_enc_sjis
416
+ assert_equal(Encoding::BINARY, str.encode('BINARY').encoding)
417
+ end
418
+
419
+ def test_non_ascii_str_sjis_to_binary
420
+ str = non_ascii_str_enc_sjis
421
+ assert_raise(Encoding::UndefinedConversionError) { str.encode('BINARY') }
422
+ end
423
+
424
+ def test_ascii_str_sjis_to_utf8
425
+ str = ascii_str_enc_sjis
426
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_8') }
427
+ end
428
+
429
+ def test_non_ascii_str_sjis_to_utf8
430
+ str = non_ascii_str_enc_sjis
431
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_8') }
432
+ end
433
+
434
+ def test_ascii_str_sjis_to_eucjp
435
+ str = ascii_str_enc_sjis
436
+ assert_equal(Encoding::EUCJP, str.encode('EUCJP').encoding)
437
+ end
438
+
439
+ def test_non_ascii_str_sjis_to_eucjp
440
+ str = non_ascii_str_enc_sjis
441
+ assert_equal(Encoding::EUCJP, str.encode('EUCJP').encoding)
442
+ end
443
+
444
+ def test_ascii_str_sjis_to_sjis
445
+ str = ascii_str_enc_sjis
446
+ assert_equal(Encoding::SJIS, str.encode('SJIS').encoding)
447
+ end
448
+
449
+ def test_non_ascii_str_sjis_to_sjis
450
+ str = non_ascii_str_enc_sjis
451
+ assert_equal(Encoding::SJIS, str.encode('SJIS').encoding)
452
+ end
453
+
454
+ def test_ascii_str_sjis_to_utf16le
455
+ str = ascii_str_enc_sjis
456
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_16LE') }
457
+ end
458
+
459
+ def test_non_ascii_str_sjis_to_utf16le
460
+ str = non_ascii_str_enc_sjis
461
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_16LE') }
462
+ end
463
+
464
+ def test_ascii_str_sjis_to_utf16be
465
+ str = ascii_str_enc_sjis
466
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_16BE') }
467
+ end
468
+
469
+ def test_non_ascii_str_sjis_to_utf16be
470
+ str = non_ascii_str_enc_sjis
471
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_16BE') }
472
+ end
473
+
474
+ def test_ascii_str_utf16le_to_ascii
475
+ str = ascii_str_enc_utf16le
476
+ assert_equal(Encoding::ASCII, str.encode('ASCII').encoding)
477
+ end
478
+
479
+ def test_non_ascii_str_utf16le_to_ascii
480
+ str = non_ascii_str_enc_utf16le
481
+ assert_raise(Encoding::UndefinedConversionError) { str.encode('ASCII') }
482
+ end
483
+
484
+ def test_ascii_str_utf16le_to_binary
485
+ str = ascii_str_enc_utf16le
486
+ assert_equal(Encoding::BINARY, str.encode('BINARY').encoding)
487
+ end
488
+
489
+ def test_non_ascii_str_utf16le_to_binary
490
+ str = non_ascii_str_enc_utf16le
491
+ assert_raise(Encoding::UndefinedConversionError) { str.encode('BINARY') }
492
+ end
493
+
494
+ def test_ascii_str_utf16le_to_utf8
495
+ str = ascii_str_enc_utf16le
496
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_8') }
497
+ end
498
+
499
+ def test_non_ascii_str_utf16le_to_utf8
500
+ str = non_ascii_str_enc_utf16le
501
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_8') }
502
+ end
503
+
504
+ def test_ascii_str_utf16le_to_eucjp
505
+ str = ascii_str_enc_utf16le
506
+ assert_equal(Encoding::EUCJP, str.encode('EUCJP').encoding)
507
+ end
508
+
509
+ def test_non_ascii_str_utf16le_to_eucjp
510
+ str = non_ascii_str_enc_utf16le
511
+ assert_equal(Encoding::EUCJP, str.encode('EUCJP').encoding)
512
+ end
513
+
514
+ def test_ascii_str_utf16le_to_sjis
515
+ str = ascii_str_enc_utf16le
516
+ assert_equal(Encoding::SJIS, str.encode('SJIS').encoding)
517
+ end
518
+
519
+ def test_non_ascii_str_utf16le_to_sjis
520
+ str = non_ascii_str_enc_utf16le
521
+ assert_equal(Encoding::SJIS, str.encode('SJIS').encoding)
522
+ end
523
+
524
+ def test_ascii_str_utf16le_to_utf16le
525
+ str = ascii_str_enc_utf16le
526
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_16LE') }
527
+ end
528
+
529
+ def test_non_ascii_str_utf16le_to_utf16le
530
+ str = non_ascii_str_enc_utf16le
531
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_16LE') }
532
+ end
533
+
534
+ def test_ascii_str_utf16le_to_utf16be
535
+ str = ascii_str_enc_utf16le
536
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_16BE') }
537
+ end
538
+
539
+ def test_non_ascii_str_utf16le_to_utf16be
540
+ str = non_ascii_str_enc_utf16le
541
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_16BE') }
542
+ end
543
+
544
+ def test_ascii_str_utf16be_to_ascii
545
+ str = ascii_str_enc_utf16be
546
+ assert_equal(Encoding::ASCII, str.encode('ASCII').encoding)
547
+ end
548
+
549
+ def test_non_ascii_str_utf16be_to_ascii
550
+ str = non_ascii_str_enc_utf16be
551
+ assert_raise(Encoding::UndefinedConversionError) { str.encode('ASCII') }
552
+ end
553
+
554
+ def test_ascii_str_utf16be_to_binary
555
+ str = ascii_str_enc_utf16be
556
+ assert_equal(Encoding::BINARY, str.encode('BINARY').encoding)
557
+ end
558
+
559
+ def test_non_ascii_str_utf16be_to_binary
560
+ str = non_ascii_str_enc_utf16be
561
+ assert_raise(Encoding::UndefinedConversionError) { str.encode('BINARY') }
562
+ end
563
+
564
+ def test_ascii_str_utf16be_to_utf8
565
+ str = ascii_str_enc_utf16be
566
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_8') }
567
+ end
568
+
569
+ def test_non_ascii_str_utf16be_to_utf8
570
+ str = non_ascii_str_enc_utf16be
571
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_8') }
572
+ end
573
+
574
+ def test_ascii_str_utf16be_to_eucjp
575
+ str = ascii_str_enc_utf16be
576
+ assert_equal(Encoding::EUCJP, str.encode('EUCJP').encoding)
577
+ end
578
+
579
+ def test_non_ascii_str_utf16be_to_eucjp
580
+ str = non_ascii_str_enc_utf16be
581
+ assert_equal(Encoding::EUCJP, str.encode('EUCJP').encoding)
582
+ end
583
+
584
+ def test_ascii_str_utf16be_to_sjis
585
+ str = ascii_str_enc_utf16be
586
+ assert_equal(Encoding::SJIS, str.encode('SJIS').encoding)
587
+ end
588
+
589
+ def test_non_ascii_str_utf16be_to_sjis
590
+ str = non_ascii_str_enc_utf16be
591
+ assert_equal(Encoding::SJIS, str.encode('SJIS').encoding)
592
+ end
593
+
594
+ def test_ascii_str_utf16be_to_utf16le
595
+ str = ascii_str_enc_utf16be
596
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_16LE') }
597
+ end
598
+
599
+ def test_non_ascii_str_utf16be_to_utf16le
600
+ str = non_ascii_str_enc_utf16be
601
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_16LE') }
602
+ end
603
+
604
+ def test_ascii_str_utf16be_to_utf16be
605
+ str = ascii_str_enc_utf16be
606
+ assert_raise(Encoding::ConverterNotFoundError){ str.encode('UTF_16BE') }
607
+ end
608
+
609
+ def test_non_ascii_str_utf16be_to_utf16be
610
+ str = non_ascii_str_enc_utf16be
611
+ assert_raise(Encoding::ConverterNotFoundError) { str.encode('UTF_16BE') }
612
+ end
613
+
614
+ def test_ord
615
+ a = 'a'
616
+ abc = 'abc'
617
+ assert_equal(97, a.ord, "#{a}.ord faild\n")
618
+ assert_equal(97, abc.ord, "#{abc}.ord faild\n")
619
+ end
620
+
621
+ def test_force_encodig
622
+ str = 'あいう'
623
+ org_dump = unpack_record(str)
624
+ asc8_dump = unpack_record(str.force_encoding('ASCII-8BIT'))
625
+ assert_equal(org_dump, asc8_dump)
626
+ end
627
+ end