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,206 +1,203 @@
1
- ##########################################################################
2
- # test_53_autofilter.rb
3
- #
4
- # Tests for the Excel EXTERNSHEET and NAME records created by print_are()..
5
- #
6
- # reverse('ゥ'), September 2008, John McNamara, jmcnamara@cpan.org
7
- #
8
- # original written in Perl by John McNamara
9
- # converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
10
- #
11
- #########################################################################
12
- require 'helper'
13
- require 'stringio'
14
-
15
- class TC_autofilter < Test::Unit::TestCase
16
- def setup
17
- @test_file = StringIO.new
18
- @workbook = WriteExcel.new(@test_file)
19
- @workbook.not_using_tmpfile
20
- end
21
-
22
- def test_autofilter_on_one_sheet
23
- worksheet1 = @workbook.add_worksheet
24
-
25
- worksheet1.autofilter('A1:C5')
26
-
27
- # Test the EXTERNSHEET record.
28
- @workbook.calculate_extern_sizes
29
- @workbook.store_externsheet
30
-
31
- target = [%w(
32
- 17 00 08 00 01 00 00 00 00 00 00 00
33
- ).join('')].pack('H*')
34
-
35
- caption = " \tExternsheet"
36
- result = _unpack_externsheet(@workbook.data)
37
- target = _unpack_externsheet(target)
38
- assert_equal(target, result)
39
-
40
- # Test the NAME record.
41
- @workbook.clear_data_for_test
42
- @workbook.store_names
43
-
44
- target = [%w(
45
- 18 00 1B 00 21 00 00 01 0B 00 00 00 01 00 00 00
46
- 00 00 00 0D 3B 00 00 00 00 04 00 00 00 02 00
47
- ).join('')].pack('H*')
48
-
49
- caption = " \t+ Name = autofilter ( Sheet1!A1:C5 )";
50
- result = _unpack_name(@workbook.data)
51
- target = _unpack_name(target)
52
- assert_equal(target, result)
53
- end
54
-
55
- def test_autofilter_on_two_sheets
56
- worksheet1 = @workbook.add_worksheet
57
- worksheet2 = @workbook.add_worksheet
58
-
59
- worksheet1.autofilter('A1:C5')
60
- worksheet2.autofilter('A1:C5')
61
-
62
- # Test the EXTERNSHEET record.
63
- @workbook.calculate_extern_sizes
64
- @workbook.store_externsheet
65
-
66
- target = [%w(
67
- 17 00 0E 00 02 00 00 00 00 00 00 00 00 00 01 00
68
- 01 00
69
- ).join('')].pack('H*')
70
-
71
- caption = " \tExternsheet"
72
- result = _unpack_externsheet(@workbook.data)
73
- target = _unpack_externsheet(target)
74
- assert_equal(target, result)
75
-
76
- # Test the NAME record.
77
- @workbook.clear_data_for_test
78
- @workbook.store_names
79
-
80
- target = [%w(
81
- 18 00 1B 00 21 00 00 01 0B 00 00 00 01 00 00 00
82
- 00 00 00 0D 3B 00 00 00 00 04 00 00 00 02 00
83
-
84
- 18 00 1B 00 21 00 00 01 0B 00 00 00 02 00 00 00
85
- 00 00 00 0D 3B 01 00 00 00 04 00 00 00 02 00
86
- ).join('')].pack('H*')
87
-
88
- caption = " \t+ Name = autofilter ( Sheet1!A1:C5, Sheet2!A1:C5 )";
89
- result = _unpack_name(@workbook.data)
90
- target = _unpack_name(target)
91
- assert_equal(target, result)
92
- end
93
-
94
- ###############################################################################
95
- #
96
- # Unpack the binary data into a format suitable for printing in tests.
97
- #
98
- def unpack_record(data)
99
- data.unpack('C*').map! {|c| sprintf("%02X", c) }.join(' ')
100
- end
101
-
102
- ###############################################################################
103
- #
104
- # _unpack_externsheet()
105
- #
106
- # Unpack the EXTERNSHEET recordfor easier comparison.
107
- #
108
- def _unpack_externsheet(data)
109
- externsheet = Hash.new
110
-
111
- externsheet['record'] = data[0, 2].unpack('v')[0]
112
- data[0, 2] = ''
113
- externsheet['length'] = data[0, 2].unpack('v')[0]
114
- data[0, 2] = ''
115
- externsheet['count'] = data[0, 2].unpack('v')[0]
116
- data[0, 2] = ''
117
- externsheet['array'] = [];
118
-
119
- externsheet['count'].times do
120
- externsheet['array'] << data[0, 6].unpack('vvv')
121
- data[0, 6] = ''
122
- end
123
- externsheet
124
- end
125
-
126
- ###############################################################################
127
- #
128
- # _unpack_name()
129
- #
130
- # Unpack 1 or more NAME structures into a AoH for easier comparison.
131
- #
132
- def _unpack_name(data)
133
- names = Array.new
134
- while data.length > 0
135
- name = Hash.new
136
-
137
- name['record'] = data[0, 2].unpack('v')[0]
138
- data[0, 2] = ''
139
- name['length'] = data[0, 2].unpack('v')[0]
140
- data[0, 2] = ''
141
- name['flags'] = data[0, 2].unpack('v')[0]
142
- data[0, 2] = ''
143
- name['shortcut'] = data[0, 1].unpack('C')[0]
144
- data[0, 1] = ''
145
- name['str_len'] = data[0, 1].unpack('C')[0]
146
- data[0, 1] = ''
147
- name['formula_len'] = data[0, 2].unpack('v')[0]
148
- data[0, 2] = ''
149
- name['itals'] = data[0, 2].unpack('v')[0]
150
- data[0, 2] = ''
151
- name['sheet_index'] = data[0, 2].unpack('v')[0]
152
- data[0, 2] = ''
153
- name['menu_len'] = data[0, 1].unpack('C')[0]
154
- data[0, 1] = ''
155
- name['desc_len'] = data[0, 1].unpack('C')[0]
156
- data[0, 1] = ''
157
- name['help_len'] = data[0, 1].unpack('C')[0]
158
- data[0, 1] = ''
159
- name['status_len'] = data[0, 1].unpack('C')[0]
160
- data[0, 1] = ''
161
- name['encoding'] = data[0, 1].unpack('C')[0]
162
- data[0, 1] = ''
163
-
164
- # Decode the individual flag fields.
165
- flag = Hash.new
166
- flag['hidden'] = name['flags'] & 0x0001
167
- flag['function'] = name['flags'] & 0x0002
168
- flag['vb'] = name['flags'] & 0x0004
169
- flag['macro'] = name['flags'] & 0x0008
170
- flag['complex'] = name['flags'] & 0x0010
171
- flag['builtin'] = name['flags'] & 0x0020
172
- flag['group'] = name['flags'] & 0x0FC0
173
- flag['binary'] = name['flags'] & 0x1000
174
- name['flags'] = flag
175
-
176
- # Decode the string part of the NAME structure.
177
- if name['encoding'] == 1
178
- # UTF-16 name. Leave in hex.
179
- name['string'] = data[0, 2 * name['str_len']].unpack('H*')[0].upcase
180
- data[0, 2 * name['str_len']] = ''
181
- elsif flag['builtin'] != 0
182
- # 1 digit builtin name. Leave in hex.
183
- name['string'] = data[0, name['str_len']].unpack('H*')[0].upcase
184
- data[0, name['str_len']] = ''
185
- else
186
- # ASCII name.
187
- name['string'] = data[0, name['str_len']].unpack('C*').pack('C*')
188
- data[0, name['str_len']] = ''
189
- end
190
-
191
- # Keep the formula as a hex string.
192
- name['formula'] = data[0, name['formula_len']].unpack('H*')[0].upcase
193
- data[0, name['formula_len']] = ''
194
-
195
- names << name
196
- end
197
- names
198
- end
199
-
200
- def assert_hash_equal?(result, target)
201
- assert_equal(result.keys.sort, target.keys.sort)
202
- result.each_key do |key|
203
- assert_equal(result[key], target[key])
204
- end
205
- end
206
- end
1
+ # -*- coding: utf-8 -*-
2
+ ##########################################################################
3
+ # test_53_autofilter.rb
4
+ #
5
+ # Tests for the Excel EXTERNSHEET and NAME records created by print_are()..
6
+ #
7
+ # reverse('ゥ'), September 2008, John McNamara, jmcnamara@cpan.org
8
+ #
9
+ # original written in Perl by John McNamara
10
+ # converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
11
+ #
12
+ #########################################################################
13
+ require 'helper'
14
+ require 'stringio'
15
+
16
+ class TC_autofilter < Test::Unit::TestCase
17
+ def setup
18
+ @test_file = StringIO.new
19
+ @workbook = WriteExcel.new(@test_file)
20
+ @workbook.not_using_tmpfile
21
+ end
22
+
23
+ def teardown
24
+ @workbook.close
25
+ end
26
+
27
+ def test_autofilter_on_one_sheet
28
+ worksheet1 = @workbook.add_worksheet
29
+
30
+ worksheet1.autofilter('A1:C5')
31
+
32
+ # Test the EXTERNSHEET record.
33
+ @workbook.calculate_extern_sizes
34
+ @workbook.store_externsheet
35
+
36
+ target = [%w(
37
+ 17 00 08 00 01 00 00 00 00 00 00 00
38
+ ).join('')].pack('H*')
39
+
40
+ caption = " \tExternsheet"
41
+ result = _unpack_externsheet(@workbook.data)
42
+ target = _unpack_externsheet(target)
43
+ assert_equal(target, result)
44
+
45
+ # Test the NAME record.
46
+ @workbook.clear_data_for_test
47
+ @workbook.store_names
48
+
49
+ target = [%w(
50
+ 18 00 1B 00 21 00 00 01 0B 00 00 00 01 00 00 00
51
+ 00 00 00 0D 3B 00 00 00 00 04 00 00 00 02 00
52
+ ).join('')].pack('H*')
53
+
54
+ caption = " \t+ Name = autofilter ( Sheet1!A1:C5 )";
55
+ result = _unpack_name(@workbook.data)
56
+ target = _unpack_name(target)
57
+ assert_equal(target, result)
58
+ end
59
+
60
+ def test_autofilter_on_two_sheets
61
+ worksheet1 = @workbook.add_worksheet
62
+ worksheet2 = @workbook.add_worksheet
63
+
64
+ worksheet1.autofilter('A1:C5')
65
+ worksheet2.autofilter('A1:C5')
66
+
67
+ # Test the EXTERNSHEET record.
68
+ @workbook.calculate_extern_sizes
69
+ @workbook.store_externsheet
70
+
71
+ target = [%w(
72
+ 17 00 0E 00 02 00 00 00 00 00 00 00 00 00 01 00
73
+ 01 00
74
+ ).join('')].pack('H*')
75
+
76
+ caption = " \tExternsheet"
77
+ result = _unpack_externsheet(@workbook.data)
78
+ target = _unpack_externsheet(target)
79
+ assert_equal(target, result)
80
+
81
+ # Test the NAME record.
82
+ @workbook.clear_data_for_test
83
+ @workbook.store_names
84
+
85
+ target = [%w(
86
+ 18 00 1B 00 21 00 00 01 0B 00 00 00 01 00 00 00
87
+ 00 00 00 0D 3B 00 00 00 00 04 00 00 00 02 00
88
+
89
+ 18 00 1B 00 21 00 00 01 0B 00 00 00 02 00 00 00
90
+ 00 00 00 0D 3B 01 00 00 00 04 00 00 00 02 00
91
+ ).join('')].pack('H*')
92
+
93
+ caption = " \t+ Name = autofilter ( Sheet1!A1:C5, Sheet2!A1:C5 )";
94
+ result = _unpack_name(@workbook.data)
95
+ target = _unpack_name(target)
96
+ assert_equal(target, result)
97
+ end
98
+
99
+ ###############################################################################
100
+ #
101
+ # _unpack_externsheet()
102
+ #
103
+ # Unpack the EXTERNSHEET recordfor easier comparison.
104
+ #
105
+ def _unpack_externsheet(data)
106
+ externsheet = Hash.new
107
+
108
+ externsheet['record'] = data[0, 2].unpack('v')[0]
109
+ data[0, 2] = ''
110
+ externsheet['length'] = data[0, 2].unpack('v')[0]
111
+ data[0, 2] = ''
112
+ externsheet['count'] = data[0, 2].unpack('v')[0]
113
+ data[0, 2] = ''
114
+ externsheet['array'] = [];
115
+
116
+ externsheet['count'].times do
117
+ externsheet['array'] << data[0, 6].unpack('vvv')
118
+ data[0, 6] = ''
119
+ end
120
+ externsheet
121
+ end
122
+
123
+ ###############################################################################
124
+ #
125
+ # _unpack_name()
126
+ #
127
+ # Unpack 1 or more NAME structures into a AoH for easier comparison.
128
+ #
129
+ def _unpack_name(data)
130
+ names = Array.new
131
+ while data.length > 0
132
+ name = Hash.new
133
+
134
+ name['record'] = data[0, 2].unpack('v')[0]
135
+ data[0, 2] = ''
136
+ name['length'] = data[0, 2].unpack('v')[0]
137
+ data[0, 2] = ''
138
+ name['flags'] = data[0, 2].unpack('v')[0]
139
+ data[0, 2] = ''
140
+ name['shortcut'] = data[0, 1].unpack('C')[0]
141
+ data[0, 1] = ''
142
+ name['str_len'] = data[0, 1].unpack('C')[0]
143
+ data[0, 1] = ''
144
+ name['formula_len'] = data[0, 2].unpack('v')[0]
145
+ data[0, 2] = ''
146
+ name['itals'] = data[0, 2].unpack('v')[0]
147
+ data[0, 2] = ''
148
+ name['sheet_index'] = data[0, 2].unpack('v')[0]
149
+ data[0, 2] = ''
150
+ name['menu_len'] = data[0, 1].unpack('C')[0]
151
+ data[0, 1] = ''
152
+ name['desc_len'] = data[0, 1].unpack('C')[0]
153
+ data[0, 1] = ''
154
+ name['help_len'] = data[0, 1].unpack('C')[0]
155
+ data[0, 1] = ''
156
+ name['status_len'] = data[0, 1].unpack('C')[0]
157
+ data[0, 1] = ''
158
+ name['encoding'] = data[0, 1].unpack('C')[0]
159
+ data[0, 1] = ''
160
+
161
+ # Decode the individual flag fields.
162
+ flag = Hash.new
163
+ flag['hidden'] = name['flags'] & 0x0001
164
+ flag['function'] = name['flags'] & 0x0002
165
+ flag['vb'] = name['flags'] & 0x0004
166
+ flag['macro'] = name['flags'] & 0x0008
167
+ flag['complex'] = name['flags'] & 0x0010
168
+ flag['builtin'] = name['flags'] & 0x0020
169
+ flag['group'] = name['flags'] & 0x0FC0
170
+ flag['binary'] = name['flags'] & 0x1000
171
+ name['flags'] = flag
172
+
173
+ # Decode the string part of the NAME structure.
174
+ if name['encoding'] == 1
175
+ # UTF-16 name. Leave in hex.
176
+ name['string'] = data[0, 2 * name['str_len']].unpack('H*')[0].upcase
177
+ data[0, 2 * name['str_len']] = ''
178
+ elsif flag['builtin'] != 0
179
+ # 1 digit builtin name. Leave in hex.
180
+ name['string'] = data[0, name['str_len']].unpack('H*')[0].upcase
181
+ data[0, name['str_len']] = ''
182
+ else
183
+ # ASCII name.
184
+ name['string'] = data[0, name['str_len']].unpack('C*').pack('C*')
185
+ data[0, name['str_len']] = ''
186
+ end
187
+
188
+ # Keep the formula as a hex string.
189
+ name['formula'] = data[0, name['formula_len']].unpack('H*')[0].upcase
190
+ data[0, name['formula_len']] = ''
191
+
192
+ names << name
193
+ end
194
+ names
195
+ end
196
+
197
+ def assert_hash_equal?(result, target)
198
+ assert_equal(result.keys.sort, target.keys.sort)
199
+ result.each_key do |key|
200
+ assert_equal(result[key], target[key])
201
+ end
202
+ end
203
+ end
@@ -1,3 +1,4 @@
1
+ # -*- coding: utf-8 -*-
1
2
  require 'helper'
2
3
  require 'stringio'
3
4
 
@@ -19,6 +20,10 @@ def setup
19
20
  @chart = Chart.new('', 'chart', 0, 0, 0, 0, 0, 0, 0, 0)
20
21
  end
21
22
 
23
+ def teardown
24
+ @chart.cleanup
25
+ end
26
+
22
27
  ###############################################################################
23
28
  #
24
29
  # Test the _store_fbi method.
@@ -1,94 +1,95 @@
1
- require 'helper'
2
- require 'stringio'
3
-
4
- ###############################################################################
5
- #
6
- # A test for Chart.
7
- #
8
- # Tests for the Excel chart.rb methods.
9
- #
10
- # reverse(''), December 2009, John McNamara, jmcnamara@cpan.org
11
- #
12
- # original written in Perl by John McNamara
13
- # converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
14
- #
15
- class TC_chart_subclasses < Test::Unit::TestCase
16
- def setup
17
- io = StringIO.new
18
- @workbook = WriteExcel.new(io)
19
- end
20
-
21
- def test_store_chart_type_of_column
22
- chart = Chart.factory(Chart::Column, nil, nil, nil, nil, nil, nil,
23
- nil, nil, nil, nil)
24
- expected = %w(
25
- 17 10 06 00 00 00 96 00 00 00
26
- ).join(' ')
27
- got = unpack_record(chart.store_chart_type)
28
- assert_equal(expected, got)
29
- end
30
-
31
- def test_store_chart_type_of_bar
32
- chart = Chart.factory(Chart::Bar, nil, nil, nil, nil, nil, nil,
33
- nil, nil, nil, nil)
34
- expected = %w(
35
- 17 10 06 00 00 00 96 00 01 00
36
- ).join(' ')
37
- got = unpack_record(chart.store_chart_type)
38
- assert_equal(expected, got)
39
- end
40
-
41
- def test_store_chart_type_of_line
42
- chart = Chart.factory(Chart::Line, nil, nil, nil, nil, nil, nil,
43
- nil, nil, nil, nil)
44
- expected = %w(
45
- 18 10 02 00 00 00
46
- ).join(' ')
47
- got = unpack_record(chart.store_chart_type)
48
- assert_equal(expected, got)
49
- end
50
-
51
- def test_store_chart_type_of_area
52
- chart = Chart.factory(Chart::Area, nil, nil, nil, nil, nil, nil,
53
- nil, nil, nil, nil)
54
- expected = %w(
55
- 1A 10 02 00 01 00
56
- ).join(' ')
57
- got = unpack_record(chart.store_chart_type)
58
- assert_equal(expected, got)
59
- end
60
-
61
- def test_store_chart_type_of_pie
62
- chart = Chart.factory(Chart::Pie, nil, nil, nil, nil, nil, nil,
63
- nil, nil, nil, nil)
64
- expected = %w(
65
- 19 10 06 00 00 00 00 00 02 00
66
- ).join(' ')
67
- got = unpack_record(chart.store_chart_type)
68
- assert_equal(expected, got)
69
- end
70
-
71
- def test_store_chart_type_of_scatter
72
- chart = Chart.factory(Chart::Scatter, nil, nil, nil, nil, nil, nil,
73
- nil, nil, nil, nil)
74
- expected = %w(
75
- 1B 10 06 00 64 00 01 00 00 00
76
- ).join(' ')
77
- got = unpack_record(chart.store_chart_type)
78
- assert_equal(expected, got)
79
- end
80
-
81
- def test_store_chart_type_of_stock
82
- chart = Chart.factory(Chart::Stock, nil, nil, nil, nil, nil, nil,
83
- nil, nil, nil, nil)
84
- expected = %w(
85
- 18 10 02 00 00 00
86
- ).join(' ')
87
- got = unpack_record(chart.store_chart_type)
88
- assert_equal(expected, got)
89
- end
90
-
91
- def unpack_record(data)
92
- data.unpack('C*').map! {|c| sprintf("%02X", c) }.join(' ')
93
- end
94
- end
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'stringio'
4
+
5
+ ###############################################################################
6
+ #
7
+ # A test for Chart.
8
+ #
9
+ # Tests for the Excel chart.rb methods.
10
+ #
11
+ # reverse(''), December 2009, John McNamara, jmcnamara@cpan.org
12
+ #
13
+ # original written in Perl by John McNamara
14
+ # converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
15
+ #
16
+ class TC_chart_subclasses < Test::Unit::TestCase
17
+ def setup
18
+ io = StringIO.new
19
+ @workbook = WriteExcel.new(io)
20
+ end
21
+
22
+ def teardown
23
+ @workbook.close
24
+ end
25
+
26
+ def test_store_chart_type_of_column
27
+ chart = Chart.factory(Chart::Column, nil, nil, nil, nil, nil, nil,
28
+ nil, nil, nil, nil)
29
+ expected = %w(
30
+ 17 10 06 00 00 00 96 00 00 00
31
+ ).join(' ')
32
+ got = unpack_record(chart.store_chart_type)
33
+ assert_equal(expected, got)
34
+ end
35
+
36
+ def test_store_chart_type_of_bar
37
+ chart = Chart.factory(Chart::Bar, nil, nil, nil, nil, nil, nil,
38
+ nil, nil, nil, nil)
39
+ expected = %w(
40
+ 17 10 06 00 00 00 96 00 01 00
41
+ ).join(' ')
42
+ got = unpack_record(chart.store_chart_type)
43
+ assert_equal(expected, got)
44
+ end
45
+
46
+ def test_store_chart_type_of_line
47
+ chart = Chart.factory(Chart::Line, nil, nil, nil, nil, nil, nil,
48
+ nil, nil, nil, nil)
49
+ expected = %w(
50
+ 18 10 02 00 00 00
51
+ ).join(' ')
52
+ got = unpack_record(chart.store_chart_type)
53
+ assert_equal(expected, got)
54
+ end
55
+
56
+ def test_store_chart_type_of_area
57
+ chart = Chart.factory(Chart::Area, nil, nil, nil, nil, nil, nil,
58
+ nil, nil, nil, nil)
59
+ expected = %w(
60
+ 1A 10 02 00 01 00
61
+ ).join(' ')
62
+ got = unpack_record(chart.store_chart_type)
63
+ assert_equal(expected, got)
64
+ end
65
+
66
+ def test_store_chart_type_of_pie
67
+ chart = Chart.factory(Chart::Pie, nil, nil, nil, nil, nil, nil,
68
+ nil, nil, nil, nil)
69
+ expected = %w(
70
+ 19 10 06 00 00 00 00 00 02 00
71
+ ).join(' ')
72
+ got = unpack_record(chart.store_chart_type)
73
+ assert_equal(expected, got)
74
+ end
75
+
76
+ def test_store_chart_type_of_scatter
77
+ chart = Chart.factory(Chart::Scatter, nil, nil, nil, nil, nil, nil,
78
+ nil, nil, nil, nil)
79
+ expected = %w(
80
+ 1B 10 06 00 64 00 01 00 00 00
81
+ ).join(' ')
82
+ got = unpack_record(chart.store_chart_type)
83
+ assert_equal(expected, got)
84
+ end
85
+
86
+ def test_store_chart_type_of_stock
87
+ chart = Chart.factory(Chart::Stock, nil, nil, nil, nil, nil, nil,
88
+ nil, nil, nil, nil)
89
+ expected = %w(
90
+ 18 10 02 00 00 00
91
+ ).join(' ')
92
+ got = unpack_record(chart.store_chart_type)
93
+ assert_equal(expected, got)
94
+ end
95
+ end