writeexcel 0.3.5 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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