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,267 +1,272 @@
1
- require 'helper'
2
- require 'stringio'
3
-
4
- ###############################################################################
5
- #
6
- # A test for Spreadsheet::WriteExcel::Chart.
7
- #
8
- # Tests for the Excel Chart.pm format conversion methods.
9
- #
10
- # reverse('ゥ'), January 2010, 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_ChartFormats < Test::Unit::TestCase
16
- def setup
17
- @io = StringIO.new
18
- @workbook = WriteExcel.new(@io)
19
- @chart = @workbook.add_chart(:type => Chart::Column)
20
- end
21
-
22
- ###############################################################################
23
- #
24
- # Test. User defined colour as string.
25
- #
26
- def test_user_defined_color_as_string
27
- color = 'red'
28
- caption1 = " \tChart: index = get_color_indices(#{color})"
29
- caption2 = " \tChart: rgb = get_color_indices(#{color})"
30
-
31
- expected_index = 0x0A
32
- expected_rgb = 0x000000FF
33
-
34
- got_index, got_rgb = @chart.get_color_indices(color)
35
-
36
- assert_equal(expected_index, got_index, caption1)
37
- assert_equal(expected_rgb, got_rgb, caption2)
38
-
39
- color = 'black'
40
- caption1 = " \tChart: index = get_color_indices(#{color})"
41
- caption2 = " \tChart: rgb = get_color_indices(#{color})"
42
-
43
- expected_index = 0x08
44
- expected_rgb = 0x00000000
45
-
46
- got_index, got_rgb = @chart.get_color_indices(color)
47
-
48
- assert_equal(expected_index, got_index, caption1)
49
- assert_equal(expected_rgb, got_rgb, caption2)
50
-
51
- color = 'white'
52
- caption1 = " \tChart: index = get_color_indices(#{color})"
53
- caption2 = " \tChart: rgb = get_color_indices(#{color})"
54
-
55
- expected_index = 0x09
56
- expected_rgb = 0x00FFFFFF
57
-
58
- got_index, got_rgb = @chart.get_color_indices(color)
59
-
60
- assert_equal(expected_index, got_index, caption1)
61
- assert_equal(expected_rgb, got_rgb, caption2)
62
- end
63
-
64
- ###############################################################################
65
- #
66
- # Test. User defined colour as an index.
67
- #
68
- def test_user_defined_color_as_an_index
69
- color = 0x0A
70
- caption1 = " \tChart: index = get_color_indices(#{color})"
71
- caption2 = " \tChart: rgb = get_color_indices(#{color})"
72
-
73
- expected_index = 0x0A
74
- expected_rgb = 0x000000FF
75
-
76
-
77
- got_index, got_rgb = @chart.get_color_indices(color)
78
-
79
- assert_equal(expected_index, got_index, caption1)
80
- assert_equal(expected_rgb, got_rgb, caption2)
81
- end
82
-
83
- ###############################################################################
84
- #
85
- # Test. User defined colour as an out of range index.
86
- #
87
- def test_user_defined_color_as_an_out_of_range_index
88
- color = 7
89
- caption1 = " \tChart: index = get_color_indices(#{color})"
90
- caption2 = " \tChart: rgb = get_color_indices(#{color})"
91
-
92
- expected_index = nil
93
- expected_rgb = nil
94
-
95
- got_index, got_rgb = @chart.get_color_indices(color)
96
-
97
- assert_equal(expected_index, got_index, caption1)
98
- assert_equal(expected_rgb, got_rgb, caption2)
99
-
100
- color = 64
101
- caption1 = " \tChart: index = get_color_indices(#{color})"
102
- caption2 = " \tChart: rgb = get_color_indices(#{color})"
103
-
104
- expected_index = nil
105
- expected_rgb = nil
106
-
107
- got_index, got_rgb = @chart.get_color_indices(color)
108
-
109
- assert_equal(expected_index, got_index, caption1)
110
- assert_equal(expected_rgb, got_rgb, caption2)
111
- end
112
-
113
- ###############################################################################
114
- #
115
- # Test. User defined colour as an invalid string.
116
- #
117
- def test_user_defined_color_as_an_invalid_string
118
- color = 'plaid'
119
- caption1 = " \tChart: index = get_color_indices(#{color})"
120
- caption2 = " \tChart: rgb = get_color_indices(#{color})"
121
-
122
- expected_index = nil
123
- expected_rgb = nil
124
-
125
- got_index, got_rgb = @chart.get_color_indices(color)
126
-
127
- assert_equal(expected_index, got_index, caption1)
128
- assert_equal(expected_rgb, got_rgb, caption2)
129
- end
130
-
131
- ###############################################################################
132
- #
133
- # Test. User defined colour as an undef property.
134
- #
135
- def test_user_defined_color_as_an_nil_property
136
- color = nil
137
- caption1 = " \tChart: index = get_color_indices(#{color})"
138
- caption2 = " \tChart: rgb = get_color_indices(#{color})"
139
-
140
- expected_index = nil
141
- expected_rgb = nil
142
-
143
- got_index, got_rgb = @chart.get_color_indices(color)
144
-
145
- assert_equal(expected_index, got_index, caption1)
146
- assert_equal(expected_rgb, got_rgb, caption2)
147
- end
148
-
149
- ###############################################################################
150
- #
151
- # Test. Line patterns with indices.
152
- #
153
- def test_line_patterns_with_indices
154
- caption = " \tChart: pattern = _get_line_pattern()"
155
-
156
- values = {
157
- 0 => 5,
158
- 1 => 0,
159
- 2 => 1,
160
- 3 => 2,
161
- 4 => 3,
162
- 5 => 4,
163
- 6 => 7,
164
- 7 => 6,
165
- 8 => 8,
166
- 9 => 0,
167
- nil => 0
168
- }
169
-
170
- expected = []
171
- got = []
172
-
173
- values.each do |user, excel|
174
- got.push(@chart.get_line_pattern(user))
175
- expected.push(excel)
176
- end
177
-
178
- assert_equal(expected, got, caption)
179
- end
180
-
181
- ###############################################################################
182
- #
183
- # Test. Line patterns with names.
184
- #
185
- def test_line_patterns_with_names
186
- caption = " \tChart: pattern = _get_line_pattern()"
187
-
188
- values = {
189
- 'solid' => 0,
190
- 'dash' => 1,
191
- 'dot' => 2,
192
- 'dash-dot' => 3,
193
- 'dash-dot-dot' => 4,
194
- 'none' => 5,
195
- 'dark-gray' => 6,
196
- 'medium-gray' => 7,
197
- 'light-gray' => 8,
198
- 'DASH' => 1,
199
- 'fictional' => 0
200
- }
201
-
202
- expected = []
203
- got = []
204
-
205
- values.each do |user, excel|
206
- got.push(@chart.get_line_pattern(user))
207
- expected.push(excel)
208
- end
209
-
210
- assert_equal(expected, got, caption)
211
- end
212
-
213
- ###############################################################################
214
- #
215
- # Test. Line weights with indices.
216
- #
217
- def test_line_weights_with_indices
218
- caption = " \tChart: weight = _get_line_weight()"
219
-
220
- values = {
221
- 1 => -1,
222
- 2 => 0,
223
- 3 => 1,
224
- 4 => 2,
225
- 5 => 0,
226
- 0 => 0,
227
- nil => 0
228
- }
229
-
230
- expected = []
231
- got = []
232
-
233
- values.each do |user, excel|
234
- got.push(@chart.get_line_weight(user))
235
- expected.push(excel)
236
- end
237
-
238
- assert_equal(expected, got, caption)
239
- end
240
-
241
- ###############################################################################
242
- #
243
- # Test. Line weights with names.
244
- #
245
- def test_line_weights_with_names
246
- caption = " \tChart: weight = _get_line_weight()"
247
-
248
- values = {
249
- 'hairline' => -1,
250
- 'narrow' => 0,
251
- 'medium' => 1,
252
- 'wide' => 2,
253
- 'WIDE' => 2,
254
- 'Fictional' => 0,
255
- }
256
-
257
- expected = []
258
- got = []
259
-
260
- values.each do |user, excel|
261
- got.push(@chart.get_line_weight(user))
262
- expected.push(excel)
263
- end
264
-
265
- assert_equal(expected, got, caption)
266
- end
267
- end
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'stringio'
4
+
5
+ ###############################################################################
6
+ #
7
+ # A test for Spreadsheet::WriteExcel::Chart.
8
+ #
9
+ # Tests for the Excel Chart.pm format conversion methods.
10
+ #
11
+ # reverse('ゥ'), January 2010, 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_ChartFormats < Test::Unit::TestCase
17
+ def setup
18
+ @io = StringIO.new
19
+ @workbook = WriteExcel.new(@io)
20
+ @chart = @workbook.add_chart(:type => Chart::Column)
21
+ end
22
+
23
+ def teardown
24
+ @workbook.close
25
+ end
26
+
27
+ ###############################################################################
28
+ #
29
+ # Test. User defined colour as string.
30
+ #
31
+ def test_user_defined_color_as_string
32
+ color = 'red'
33
+ caption1 = " \tChart: index = get_color_indices(#{color})"
34
+ caption2 = " \tChart: rgb = get_color_indices(#{color})"
35
+
36
+ expected_index = 0x0A
37
+ expected_rgb = 0x000000FF
38
+
39
+ got_index, got_rgb = @chart.get_color_indices(color)
40
+
41
+ assert_equal(expected_index, got_index, caption1)
42
+ assert_equal(expected_rgb, got_rgb, caption2)
43
+
44
+ color = 'black'
45
+ caption1 = " \tChart: index = get_color_indices(#{color})"
46
+ caption2 = " \tChart: rgb = get_color_indices(#{color})"
47
+
48
+ expected_index = 0x08
49
+ expected_rgb = 0x00000000
50
+
51
+ got_index, got_rgb = @chart.get_color_indices(color)
52
+
53
+ assert_equal(expected_index, got_index, caption1)
54
+ assert_equal(expected_rgb, got_rgb, caption2)
55
+
56
+ color = 'white'
57
+ caption1 = " \tChart: index = get_color_indices(#{color})"
58
+ caption2 = " \tChart: rgb = get_color_indices(#{color})"
59
+
60
+ expected_index = 0x09
61
+ expected_rgb = 0x00FFFFFF
62
+
63
+ got_index, got_rgb = @chart.get_color_indices(color)
64
+
65
+ assert_equal(expected_index, got_index, caption1)
66
+ assert_equal(expected_rgb, got_rgb, caption2)
67
+ end
68
+
69
+ ###############################################################################
70
+ #
71
+ # Test. User defined colour as an index.
72
+ #
73
+ def test_user_defined_color_as_an_index
74
+ color = 0x0A
75
+ caption1 = " \tChart: index = get_color_indices(#{color})"
76
+ caption2 = " \tChart: rgb = get_color_indices(#{color})"
77
+
78
+ expected_index = 0x0A
79
+ expected_rgb = 0x000000FF
80
+
81
+
82
+ got_index, got_rgb = @chart.get_color_indices(color)
83
+
84
+ assert_equal(expected_index, got_index, caption1)
85
+ assert_equal(expected_rgb, got_rgb, caption2)
86
+ end
87
+
88
+ ###############################################################################
89
+ #
90
+ # Test. User defined colour as an out of range index.
91
+ #
92
+ def test_user_defined_color_as_an_out_of_range_index
93
+ color = 7
94
+ caption1 = " \tChart: index = get_color_indices(#{color})"
95
+ caption2 = " \tChart: rgb = get_color_indices(#{color})"
96
+
97
+ expected_index = nil
98
+ expected_rgb = nil
99
+
100
+ got_index, got_rgb = @chart.get_color_indices(color)
101
+
102
+ assert_equal(expected_index, got_index, caption1)
103
+ assert_equal(expected_rgb, got_rgb, caption2)
104
+
105
+ color = 64
106
+ caption1 = " \tChart: index = get_color_indices(#{color})"
107
+ caption2 = " \tChart: rgb = get_color_indices(#{color})"
108
+
109
+ expected_index = nil
110
+ expected_rgb = nil
111
+
112
+ got_index, got_rgb = @chart.get_color_indices(color)
113
+
114
+ assert_equal(expected_index, got_index, caption1)
115
+ assert_equal(expected_rgb, got_rgb, caption2)
116
+ end
117
+
118
+ ###############################################################################
119
+ #
120
+ # Test. User defined colour as an invalid string.
121
+ #
122
+ def test_user_defined_color_as_an_invalid_string
123
+ color = 'plaid'
124
+ caption1 = " \tChart: index = get_color_indices(#{color})"
125
+ caption2 = " \tChart: rgb = get_color_indices(#{color})"
126
+
127
+ expected_index = nil
128
+ expected_rgb = nil
129
+
130
+ got_index, got_rgb = @chart.get_color_indices(color)
131
+
132
+ assert_equal(expected_index, got_index, caption1)
133
+ assert_equal(expected_rgb, got_rgb, caption2)
134
+ end
135
+
136
+ ###############################################################################
137
+ #
138
+ # Test. User defined colour as an undef property.
139
+ #
140
+ def test_user_defined_color_as_an_nil_property
141
+ color = nil
142
+ caption1 = " \tChart: index = get_color_indices(#{color})"
143
+ caption2 = " \tChart: rgb = get_color_indices(#{color})"
144
+
145
+ expected_index = nil
146
+ expected_rgb = nil
147
+
148
+ got_index, got_rgb = @chart.get_color_indices(color)
149
+
150
+ assert_equal(expected_index, got_index, caption1)
151
+ assert_equal(expected_rgb, got_rgb, caption2)
152
+ end
153
+
154
+ ###############################################################################
155
+ #
156
+ # Test. Line patterns with indices.
157
+ #
158
+ def test_line_patterns_with_indices
159
+ caption = " \tChart: pattern = _get_line_pattern()"
160
+
161
+ values = {
162
+ 0 => 5,
163
+ 1 => 0,
164
+ 2 => 1,
165
+ 3 => 2,
166
+ 4 => 3,
167
+ 5 => 4,
168
+ 6 => 7,
169
+ 7 => 6,
170
+ 8 => 8,
171
+ 9 => 0,
172
+ nil => 0
173
+ }
174
+
175
+ expected = []
176
+ got = []
177
+
178
+ values.each do |user, excel|
179
+ got.push(@chart.get_line_pattern(user))
180
+ expected.push(excel)
181
+ end
182
+
183
+ assert_equal(expected, got, caption)
184
+ end
185
+
186
+ ###############################################################################
187
+ #
188
+ # Test. Line patterns with names.
189
+ #
190
+ def test_line_patterns_with_names
191
+ caption = " \tChart: pattern = _get_line_pattern()"
192
+
193
+ values = {
194
+ 'solid' => 0,
195
+ 'dash' => 1,
196
+ 'dot' => 2,
197
+ 'dash-dot' => 3,
198
+ 'dash-dot-dot' => 4,
199
+ 'none' => 5,
200
+ 'dark-gray' => 6,
201
+ 'medium-gray' => 7,
202
+ 'light-gray' => 8,
203
+ 'DASH' => 1,
204
+ 'fictional' => 0
205
+ }
206
+
207
+ expected = []
208
+ got = []
209
+
210
+ values.each do |user, excel|
211
+ got.push(@chart.get_line_pattern(user))
212
+ expected.push(excel)
213
+ end
214
+
215
+ assert_equal(expected, got, caption)
216
+ end
217
+
218
+ ###############################################################################
219
+ #
220
+ # Test. Line weights with indices.
221
+ #
222
+ def test_line_weights_with_indices
223
+ caption = " \tChart: weight = _get_line_weight()"
224
+
225
+ values = {
226
+ 1 => -1,
227
+ 2 => 0,
228
+ 3 => 1,
229
+ 4 => 2,
230
+ 5 => 0,
231
+ 0 => 0,
232
+ nil => 0
233
+ }
234
+
235
+ expected = []
236
+ got = []
237
+
238
+ values.each do |user, excel|
239
+ got.push(@chart.get_line_weight(user))
240
+ expected.push(excel)
241
+ end
242
+
243
+ assert_equal(expected, got, caption)
244
+ end
245
+
246
+ ###############################################################################
247
+ #
248
+ # Test. Line weights with names.
249
+ #
250
+ def test_line_weights_with_names
251
+ caption = " \tChart: weight = _get_line_weight()"
252
+
253
+ values = {
254
+ 'hairline' => -1,
255
+ 'narrow' => 0,
256
+ 'medium' => 1,
257
+ 'wide' => 2,
258
+ 'WIDE' => 2,
259
+ 'Fictional' => 0,
260
+ }
261
+
262
+ expected = []
263
+ got = []
264
+
265
+ values.each do |user, excel|
266
+ got.push(@chart.get_line_weight(user))
267
+ expected.push(excel)
268
+ end
269
+
270
+ assert_equal(expected, got, caption)
271
+ end
272
+ end