writeexcel 0.1.0 → 0.3.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 (143) hide show
  1. data/README +26 -31
  2. data/examples/a_simple.rb +42 -42
  3. data/examples/{autofilters.rb → autofilter.rb} +264 -266
  4. data/examples/bigfile.rb +29 -0
  5. data/examples/chart_area.rb +120 -0
  6. data/examples/chart_bar.rb +119 -0
  7. data/examples/chart_column.rb +119 -0
  8. data/examples/chart_line.rb +119 -0
  9. data/examples/chart_pie.rb +107 -0
  10. data/examples/chart_scatter.rb +120 -0
  11. data/examples/chart_stock.rb +147 -0
  12. data/examples/copyformat.rb +51 -51
  13. data/examples/data_validate.rb +278 -278
  14. data/examples/date_time.rb +86 -86
  15. data/examples/defined_name.rb +31 -0
  16. data/examples/demo.rb +120 -118
  17. data/examples/diag_border.rb +35 -35
  18. data/examples/formats.rb +489 -489
  19. data/examples/header.rb +136 -136
  20. data/examples/hidden.rb +28 -28
  21. data/examples/hyperlink.rb +42 -42
  22. data/examples/images.rb +52 -52
  23. data/examples/merge1.rb +39 -39
  24. data/examples/merge2.rb +44 -44
  25. data/examples/merge3.rb +65 -65
  26. data/examples/merge4.rb +82 -82
  27. data/examples/merge5.rb +79 -79
  28. data/examples/properties.rb +33 -0
  29. data/examples/properties_jp.rb +32 -0
  30. data/examples/protection.rb +46 -46
  31. data/examples/regions.rb +52 -52
  32. data/examples/repeat.rb +42 -42
  33. data/examples/stats.rb +75 -75
  34. data/examples/stocks.rb +80 -80
  35. data/examples/tab_colors.rb +30 -30
  36. data/examples/write_arrays.rb +82 -0
  37. data/lib/writeexcel.rb +1134 -18
  38. data/lib/writeexcel/biffwriter.rb +273 -260
  39. data/lib/writeexcel/chart.rb +2306 -217
  40. data/lib/writeexcel/charts/area.rb +152 -0
  41. data/lib/writeexcel/charts/bar.rb +177 -0
  42. data/lib/writeexcel/charts/column.rb +156 -0
  43. data/lib/writeexcel/charts/external.rb +61 -0
  44. data/lib/writeexcel/charts/line.rb +152 -0
  45. data/lib/writeexcel/charts/pie.rb +169 -0
  46. data/lib/writeexcel/charts/scatter.rb +192 -0
  47. data/lib/writeexcel/charts/stock.rb +211 -0
  48. data/lib/writeexcel/excelformulaparser.rb +208 -195
  49. data/lib/writeexcel/format.rb +1697 -1108
  50. data/lib/writeexcel/formula.rb +1050 -986
  51. data/lib/writeexcel/olewriter.rb +322 -322
  52. data/lib/writeexcel/properties.rb +251 -250
  53. data/lib/writeexcel/storage_lite.rb +968 -0
  54. data/lib/writeexcel/workbook.rb +3294 -2630
  55. data/lib/writeexcel/worksheet.rb +9012 -6377
  56. data/test/excelfile/Chart1.xls +0 -0
  57. data/test/excelfile/Chart2.xls +0 -0
  58. data/test/excelfile/Chart3.xls +0 -0
  59. data/test/excelfile/Chart4.xls +0 -0
  60. data/test/excelfile/Chart5.xls +0 -0
  61. data/test/perl_output/Chart1.xls.data +0 -0
  62. data/test/perl_output/Chart2.xls.data +0 -0
  63. data/test/perl_output/Chart3.xls.data +0 -0
  64. data/test/perl_output/Chart4.xls.data +0 -0
  65. data/test/perl_output/Chart5.xls.data +0 -0
  66. data/test/perl_output/a_simple.xls +0 -0
  67. data/test/perl_output/autofilter.xls +0 -0
  68. data/test/perl_output/chart_area.xls +0 -0
  69. data/test/perl_output/chart_bar.xls +0 -0
  70. data/test/perl_output/chart_column.xls +0 -0
  71. data/test/perl_output/chart_line.xls +0 -0
  72. data/test/perl_output/data_validate.xls +0 -0
  73. data/test/perl_output/date_time.xls +0 -0
  74. data/test/perl_output/demo.xls +0 -0
  75. data/test/perl_output/demo101.bin +0 -0
  76. data/test/perl_output/demo201.bin +0 -0
  77. data/test/perl_output/demo301.bin +0 -0
  78. data/test/perl_output/demo401.bin +0 -0
  79. data/test/perl_output/demo501.bin +0 -0
  80. data/test/perl_output/diag_border.xls +0 -0
  81. data/test/perl_output/headers.xls +0 -0
  82. data/test/perl_output/hyperlink.xls +0 -0
  83. data/test/perl_output/images.xls +0 -0
  84. data/test/perl_output/merge1.xls +0 -0
  85. data/test/perl_output/merge2.xls +0 -0
  86. data/test/perl_output/merge3.xls +0 -0
  87. data/test/perl_output/merge4.xls +0 -0
  88. data/test/perl_output/merge5.xls +0 -0
  89. data/test/perl_output/protection.xls +0 -0
  90. data/test/perl_output/regions.xls +0 -0
  91. data/test/perl_output/stats.xls +0 -0
  92. data/test/perl_output/stocks.xls +0 -0
  93. data/test/perl_output/tab_colors.xls +0 -0
  94. data/test/perl_output/unicode_cyrillic.xls +0 -0
  95. data/test/perl_output/workbook1.xls +0 -0
  96. data/test/perl_output/workbook2.xls +0 -0
  97. data/test/tc_all.rb +32 -31
  98. data/test/tc_biff.rb +104 -104
  99. data/test/tc_chart.rb +22 -22
  100. data/test/tc_example_match.rb +1944 -1280
  101. data/test/tc_format.rb +1254 -1267
  102. data/test/tc_formula.rb +63 -63
  103. data/test/tc_ole.rb +110 -110
  104. data/test/tc_storage_lite.rb +149 -0
  105. data/test/tc_workbook.rb +140 -115
  106. data/test/tc_worksheet.rb +115 -115
  107. data/test/test_00_IEEE_double.rb +14 -14
  108. data/test/test_01_add_worksheet.rb +12 -12
  109. data/test/test_02_merge_formats.rb +58 -58
  110. data/test/test_04_dimensions.rb +397 -397
  111. data/test/test_05_rows.rb +182 -182
  112. data/test/test_06_extsst.rb +80 -80
  113. data/test/test_11_date_time.rb +484 -484
  114. data/test/test_12_date_only.rb +506 -506
  115. data/test/test_13_date_seconds.rb +486 -486
  116. data/test/test_21_escher.rb +642 -629
  117. data/test/test_22_mso_drawing_group.rb +750 -739
  118. data/test/test_23_note.rb +78 -78
  119. data/test/test_24_txo.rb +80 -80
  120. data/test/test_25_position_object.rb +82 -0
  121. data/test/test_26_autofilter.rb +327 -327
  122. data/test/test_27_autofilter.rb +144 -144
  123. data/test/test_28_autofilter.rb +174 -174
  124. data/test/test_29_process_jpg.rb +681 -131
  125. data/test/test_30_validation_dval.rb +82 -82
  126. data/test/test_31_validation_dv_strings.rb +131 -131
  127. data/test/test_32_validation_dv_formula.rb +211 -211
  128. data/test/test_40_property_types.rb +191 -191
  129. data/test/test_41_properties.rb +238 -238
  130. data/test/test_42_set_properties.rb +442 -419
  131. data/test/test_50_name_stored.rb +305 -0
  132. data/test/test_51_name_print_area.rb +363 -0
  133. data/test/test_52_name_print_titles.rb +460 -0
  134. data/test/test_53_autofilter.rb +209 -0
  135. data/test/test_60_chart_generic.rb +576 -0
  136. data/test/test_61_chart_subclasses.rb +97 -0
  137. data/test/test_62_chart_formats.rb +270 -0
  138. data/test/test_63_chart_area_formats.rb +647 -0
  139. data/test/test_chartex.rb +35 -0
  140. data/test/ts_all.rb +46 -34
  141. data/writeexcel.gemspec +18 -0
  142. data/writeexcel.rdoc +583 -0
  143. metadata +162 -108
@@ -1,506 +1,506 @@
1
- ###############################################################################
2
- #
3
- # A test for Spreadsheet::WriteExcel.
4
- #
5
- # Tests date and time handling. Tests dates in 1900 and 1904 format.
6
- #
7
- # reverse('©'), May 2004, 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
- $LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
14
-
15
- require "test/unit"
16
- require 'writeexcel'
17
-
18
- class TC_data_only < Test::Unit::TestCase
19
-
20
- def setup
21
- t = Time.now.strftime("%Y%m%d")
22
- path = "temp#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
23
- @test_file = File.join(Dir.tmpdir, path)
24
- @workbook = Spreadsheet::WriteExcel.new(@test_file)
25
- @worksheet = @workbook.add_worksheet
26
- end
27
-
28
- def teardown
29
- @workbook.close
30
- File.unlink(@test_file) if FileTest.exist?(@test_file)
31
- end
32
-
33
- def test_the_dates_generated_by_excel
34
- lines = data_generated_excel.split(/\n/)
35
- while !lines.empty?
36
- line = lines.shift.sub(/^\s*/,'')
37
- braak if line =~ /^\s*# stop/ # For debugging
38
-
39
- @worksheet.date_1904 = false if line =~ /Excel 1900/
40
- @worksheet.date_1904 = true if line =~ /Excel 1904/
41
-
42
- next unless line =~ /\S/ # Ignore blank lines
43
- next if line =~ /^\s*#/ # Ignore comments
44
-
45
- count, date, result = line.split(/\s+/)
46
- number = @worksheet.convert_date_time(date)
47
- number = -1 if number.nil?
48
- assert_equal(result.to_i, number,
49
- "Testing convert_date_time: #{date} #{result}")
50
- end
51
- end
52
-
53
- def data_generated_excel
54
-
55
- return <<-__DATA_END__
56
-
57
- #
58
- # The following data was generated by Excel.
59
- #
60
-
61
- #
62
- # Excel 1900 date system
63
- #
64
- 1 1899-12-31T 0
65
- 2 1900-01-00T 0
66
- 3 1900-01-01T 1
67
- 4 1900-02-27T 58
68
- 5 1900-02-28T 59
69
- 6 1900-02-29T 60
70
- 7 1900-03-01T 61
71
- 8 1900-03-02T 62
72
- 9 1900-03-11T 71
73
- 10 1900-04-08T 99
74
- 11 1900-09-12T 256
75
- 12 1901-05-03T 489
76
- 13 1901-10-13T 652
77
- 14 1902-02-15T 777
78
- 15 1902-06-06T 888
79
- 16 1902-09-25T 999
80
- 17 1902-09-27T 1001
81
- 18 1903-04-26T 1212
82
- 19 1903-08-05T 1313
83
- 20 1903-12-31T 1461
84
- 21 1904-01-01T 1462
85
- 22 1904-02-28T 1520
86
- 23 1904-02-29T 1521
87
- 24 1904-03-01T 1522
88
- 25 1907-02-27T 2615
89
- 26 1907-02-28T 2616
90
- 27 1907-03-01T 2617
91
- 28 1907-03-02T 2618
92
- 29 1907-03-03T 2619
93
- 30 1907-03-04T 2620
94
- 31 1907-03-05T 2621
95
- 32 1907-03-06T 2622
96
- 33 1999-01-01T 36161
97
- 34 1999-01-31T 36191
98
- 35 1999-02-01T 36192
99
- 36 1999-02-28T 36219
100
- 37 1999-03-01T 36220
101
- 38 1999-03-31T 36250
102
- 39 1999-04-01T 36251
103
- 40 1999-04-30T 36280
104
- 41 1999-05-01T 36281
105
- 42 1999-05-31T 36311
106
- 43 1999-06-01T 36312
107
- 44 1999-06-30T 36341
108
- 45 1999-07-01T 36342
109
- 46 1999-07-31T 36372
110
- 47 1999-08-01T 36373
111
- 48 1999-08-31T 36403
112
- 49 1999-09-01T 36404
113
- 50 1999-09-30T 36433
114
- 51 1999-10-01T 36434
115
- 52 1999-10-31T 36464
116
- 53 1999-11-01T 36465
117
- 54 1999-11-30T 36494
118
- 55 1999-12-01T 36495
119
- 56 1999-12-31T 36525
120
- 57 2000-01-01T 36526
121
- 58 2000-01-31T 36556
122
- 59 2000-02-01T 36557
123
- 60 2000-02-29T 36585
124
- 61 2000-03-01T 36586
125
- 62 2000-03-31T 36616
126
- 63 2000-04-01T 36617
127
- 64 2000-04-30T 36646
128
- 65 2000-05-01T 36647
129
- 66 2000-05-31T 36677
130
- 67 2000-06-01T 36678
131
- 68 2000-06-30T 36707
132
- 69 2000-07-01T 36708
133
- 70 2000-07-31T 36738
134
- 71 2000-08-01T 36739
135
- 72 2000-08-31T 36769
136
- 73 2000-09-01T 36770
137
- 74 2000-09-30T 36799
138
- 75 2000-10-01T 36800
139
- 76 2000-10-31T 36830
140
- 77 2000-11-01T 36831
141
- 78 2000-11-30T 36860
142
- 79 2000-12-01T 36861
143
- 80 2000-12-31T 36891
144
- 81 2001-01-01T 36892
145
- 82 2001-01-31T 36922
146
- 83 2001-02-01T 36923
147
- 84 2001-02-28T 36950
148
- 85 2001-03-01T 36951
149
- 86 2001-03-31T 36981
150
- 87 2001-04-01T 36982
151
- 88 2001-04-30T 37011
152
- 89 2001-05-01T 37012
153
- 90 2001-05-31T 37042
154
- 91 2001-06-01T 37043
155
- 92 2001-06-30T 37072
156
- 93 2001-07-01T 37073
157
- 94 2001-07-31T 37103
158
- 95 2001-08-01T 37104
159
- 96 2001-08-31T 37134
160
- 97 2001-09-01T 37135
161
- 98 2001-09-30T 37164
162
- 99 2001-10-01T 37165
163
- 100 2001-10-31T 37195
164
- 101 2001-11-01T 37196
165
- 102 2001-11-30T 37225
166
- 103 2001-12-01T 37226
167
- 104 2001-12-31T 37256
168
- 105 2400-01-01T 182623
169
- 106 2400-01-31T 182653
170
- 107 2400-02-01T 182654
171
- 108 2400-02-29T 182682
172
- 109 2400-03-01T 182683
173
- 110 2400-03-31T 182713
174
- 111 2400-04-01T 182714
175
- 112 2400-04-30T 182743
176
- 113 2400-05-01T 182744
177
- 114 2400-05-31T 182774
178
- 115 2400-06-01T 182775
179
- 116 2400-06-30T 182804
180
- 117 2400-07-01T 182805
181
- 118 2400-07-31T 182835
182
- 119 2400-08-01T 182836
183
- 120 2400-08-31T 182866
184
- 121 2400-09-01T 182867
185
- 122 2400-09-30T 182896
186
- 123 2400-10-01T 182897
187
- 124 2400-10-31T 182927
188
- 125 2400-11-01T 182928
189
- 126 2400-11-30T 182957
190
- 127 2400-12-01T 182958
191
- 128 2400-12-31T 182988
192
- 129 4000-01-01T 767011
193
- 130 4000-01-31T 767041
194
- 131 4000-02-01T 767042
195
- 132 4000-02-29T 767070
196
- 133 4000-03-01T 767071
197
- 134 4000-03-31T 767101
198
- 135 4000-04-01T 767102
199
- 136 4000-04-30T 767131
200
- 137 4000-05-01T 767132
201
- 138 4000-05-31T 767162
202
- 139 4000-06-01T 767163
203
- 140 4000-06-30T 767192
204
- 141 4000-07-01T 767193
205
- 142 4000-07-31T 767223
206
- 143 4000-08-01T 767224
207
- 144 4000-08-31T 767254
208
- 145 4000-09-01T 767255
209
- 146 4000-09-30T 767284
210
- 147 4000-10-01T 767285
211
- 148 4000-10-31T 767315
212
- 149 4000-11-01T 767316
213
- 150 4000-11-30T 767345
214
- 151 4000-12-01T 767346
215
- 152 4000-12-31T 767376
216
- 153 4321-01-01T 884254
217
- 154 4321-01-31T 884284
218
- 155 4321-02-01T 884285
219
- 156 4321-02-28T 884312
220
- 157 4321-03-01T 884313
221
- 158 4321-03-31T 884343
222
- 159 4321-04-01T 884344
223
- 160 4321-04-30T 884373
224
- 161 4321-05-01T 884374
225
- 162 4321-05-31T 884404
226
- 163 4321-06-01T 884405
227
- 164 4321-06-30T 884434
228
- 165 4321-07-01T 884435
229
- 166 4321-07-31T 884465
230
- 167 4321-08-01T 884466
231
- 168 4321-08-31T 884496
232
- 169 4321-09-01T 884497
233
- 170 4321-09-30T 884526
234
- 171 4321-10-01T 884527
235
- 172 4321-10-31T 884557
236
- 173 4321-11-01T 884558
237
- 174 4321-11-30T 884587
238
- 175 4321-12-01T 884588
239
- 176 4321-12-31T 884618
240
- 177 9999-01-01T 2958101
241
- 178 9999-01-31T 2958131
242
- 179 9999-02-01T 2958132
243
- 180 9999-02-28T 2958159
244
- 181 9999-03-01T 2958160
245
- 182 9999-03-31T 2958190
246
- 183 9999-04-01T 2958191
247
- 184 9999-04-30T 2958220
248
- 185 9999-05-01T 2958221
249
- 186 9999-05-31T 2958251
250
- 187 9999-06-01T 2958252
251
- 188 9999-06-30T 2958281
252
- 189 9999-07-01T 2958282
253
- 190 9999-07-31T 2958312
254
- 191 9999-08-01T 2958313
255
- 192 9999-08-31T 2958343
256
- 193 9999-09-01T 2958344
257
- 194 9999-09-30T 2958373
258
- 195 9999-10-01T 2958374
259
- 196 9999-10-31T 2958404
260
- 197 9999-11-01T 2958405
261
- 198 9999-11-30T 2958434
262
- 199 9999-12-01T 2958435
263
- 200 9999-12-31T 2958465
264
-
265
- #
266
- # Excel 1904 date system
267
- #
268
- 201 1904-01-01T 0
269
- 202 1904-01-31T 30
270
- 203 1904-02-01T 31
271
- 204 1904-02-29T 59
272
- 205 1904-03-01T 60
273
- 206 1904-03-31T 90
274
- 207 1904-04-01T 91
275
- 208 1904-04-30T 120
276
- 209 1904-05-01T 121
277
- 210 1904-05-31T 151
278
- 211 1904-06-01T 152
279
- 212 1904-06-30T 181
280
- 213 1904-07-01T 182
281
- 214 1904-07-31T 212
282
- 215 1904-08-01T 213
283
- 216 1904-08-31T 243
284
- 217 1904-09-01T 244
285
- 218 1904-09-30T 273
286
- 219 1904-10-01T 274
287
- 220 1904-10-31T 304
288
- 221 1904-11-01T 305
289
- 222 1904-11-30T 334
290
- 223 1904-12-01T 335
291
- 224 1904-12-31T 365
292
- 225 1907-02-27T 1153
293
- 226 1907-02-28T 1154
294
- 227 1907-03-01T 1155
295
- 228 1907-03-02T 1156
296
- 229 1907-03-03T 1157
297
- 230 1907-03-04T 1158
298
- 231 1907-03-05T 1159
299
- 232 1907-03-06T 1160
300
- 233 1999-01-01T 34699
301
- 234 1999-01-31T 34729
302
- 235 1999-02-01T 34730
303
- 236 1999-02-28T 34757
304
- 237 1999-03-01T 34758
305
- 238 1999-03-31T 34788
306
- 239 1999-04-01T 34789
307
- 240 1999-04-30T 34818
308
- 241 1999-05-01T 34819
309
- 242 1999-05-31T 34849
310
- 243 1999-06-01T 34850
311
- 244 1999-06-30T 34879
312
- 245 1999-07-01T 34880
313
- 246 1999-07-31T 34910
314
- 247 1999-08-01T 34911
315
- 248 1999-08-31T 34941
316
- 249 1999-09-01T 34942
317
- 250 1999-09-30T 34971
318
- 251 1999-10-01T 34972
319
- 252 1999-10-31T 35002
320
- 253 1999-11-01T 35003
321
- 254 1999-11-30T 35032
322
- 255 1999-12-01T 35033
323
- 256 1999-12-31T 35063
324
- 257 2000-01-01T 35064
325
- 258 2000-01-31T 35094
326
- 259 2000-02-01T 35095
327
- 260 2000-02-29T 35123
328
- 261 2000-03-01T 35124
329
- 262 2000-03-31T 35154
330
- 263 2000-04-01T 35155
331
- 264 2000-04-30T 35184
332
- 265 2000-05-01T 35185
333
- 266 2000-05-31T 35215
334
- 267 2000-06-01T 35216
335
- 268 2000-06-30T 35245
336
- 269 2000-07-01T 35246
337
- 270 2000-07-31T 35276
338
- 271 2000-08-01T 35277
339
- 272 2000-08-31T 35307
340
- 273 2000-09-01T 35308
341
- 274 2000-09-30T 35337
342
- 275 2000-10-01T 35338
343
- 276 2000-10-31T 35368
344
- 277 2000-11-01T 35369
345
- 278 2000-11-30T 35398
346
- 279 2000-12-01T 35399
347
- 280 2000-12-31T 35429
348
- 281 2001-01-01T 35430
349
- 282 2001-01-31T 35460
350
- 283 2001-02-01T 35461
351
- 284 2001-02-28T 35488
352
- 285 2001-03-01T 35489
353
- 286 2001-03-31T 35519
354
- 287 2001-04-01T 35520
355
- 288 2001-04-30T 35549
356
- 289 2001-05-01T 35550
357
- 290 2001-05-31T 35580
358
- 291 2001-06-01T 35581
359
- 292 2001-06-30T 35610
360
- 293 2001-07-01T 35611
361
- 294 2001-07-31T 35641
362
- 295 2001-08-01T 35642
363
- 296 2001-08-31T 35672
364
- 297 2001-09-01T 35673
365
- 298 2001-09-30T 35702
366
- 299 2001-10-01T 35703
367
- 300 2001-10-31T 35733
368
- 301 2001-11-01T 35734
369
- 302 2001-11-30T 35763
370
- 303 2001-12-01T 35764
371
- 304 2001-12-31T 35794
372
- 305 2400-01-01T 181161
373
- 306 2400-01-31T 181191
374
- 307 2400-02-01T 181192
375
- 308 2400-02-29T 181220
376
- 309 2400-03-01T 181221
377
- 310 2400-03-31T 181251
378
- 311 2400-04-01T 181252
379
- 312 2400-04-30T 181281
380
- 313 2400-05-01T 181282
381
- 314 2400-05-31T 181312
382
- 315 2400-06-01T 181313
383
- 316 2400-06-30T 181342
384
- 317 2400-07-01T 181343
385
- 318 2400-07-31T 181373
386
- 319 2400-08-01T 181374
387
- 320 2400-08-31T 181404
388
- 321 2400-09-01T 181405
389
- 322 2400-09-30T 181434
390
- 323 2400-10-01T 181435
391
- 324 2400-10-31T 181465
392
- 325 2400-11-01T 181466
393
- 326 2400-11-30T 181495
394
- 327 2400-12-01T 181496
395
- 328 2400-12-31T 181526
396
- 329 4000-01-01T 765549
397
- 330 4000-01-31T 765579
398
- 331 4000-02-01T 765580
399
- 332 4000-02-29T 765608
400
- 333 4000-03-01T 765609
401
- 334 4000-03-31T 765639
402
- 335 4000-04-01T 765640
403
- 336 4000-04-30T 765669
404
- 337 4000-05-01T 765670
405
- 338 4000-05-31T 765700
406
- 339 4000-06-01T 765701
407
- 340 4000-06-30T 765730
408
- 341 4000-07-01T 765731
409
- 342 4000-07-31T 765761
410
- 343 4000-08-01T 765762
411
- 344 4000-08-31T 765792
412
- 345 4000-09-01T 765793
413
- 346 4000-09-30T 765822
414
- 347 4000-10-01T 765823
415
- 348 4000-10-31T 765853
416
- 349 4000-11-01T 765854
417
- 350 4000-11-30T 765883
418
- 351 4000-12-01T 765884
419
- 352 4000-12-31T 765914
420
- 353 4321-01-01T 882792
421
- 354 4321-01-31T 882822
422
- 355 4321-02-01T 882823
423
- 356 4321-02-28T 882850
424
- 357 4321-03-01T 882851
425
- 358 4321-03-31T 882881
426
- 359 4321-04-01T 882882
427
- 360 4321-04-30T 882911
428
- 361 4321-05-01T 882912
429
- 362 4321-05-31T 882942
430
- 363 4321-06-01T 882943
431
- 364 4321-06-30T 882972
432
- 365 4321-07-01T 882973
433
- 366 4321-07-31T 883003
434
- 367 4321-08-01T 883004
435
- 368 4321-08-31T 883034
436
- 369 4321-09-01T 883035
437
- 370 4321-09-30T 883064
438
- 371 4321-10-01T 883065
439
- 372 4321-10-31T 883095
440
- 373 4321-11-01T 883096
441
- 374 4321-11-30T 883125
442
- 375 4321-12-01T 883126
443
- 376 4321-12-31T 883156
444
- 377 9999-01-01T 2956639
445
- 378 9999-01-31T 2956669
446
- 379 9999-02-01T 2956670
447
- 380 9999-02-28T 2956697
448
- 381 9999-03-01T 2956698
449
- 382 9999-03-31T 2956728
450
- 383 9999-04-01T 2956729
451
- 384 9999-04-30T 2956758
452
- 385 9999-05-01T 2956759
453
- 386 9999-05-31T 2956789
454
- 387 9999-06-01T 2956790
455
- 388 9999-06-30T 2956819
456
- 389 9999-07-01T 2956820
457
- 390 9999-07-31T 2956850
458
- 391 9999-08-01T 2956851
459
- 392 9999-08-31T 2956881
460
- 393 9999-09-01T 2956882
461
- 394 9999-09-30T 2956911
462
- 395 9999-10-01T 2956912
463
- 396 9999-10-31T 2956942
464
- 397 9999-11-01T 2956943
465
- 398 9999-11-30T 2956972
466
- 399 9999-12-01T 2956973
467
- 400 9999-12-31T 2957003
468
-
469
-
470
- #
471
- # The following dates are invalid.
472
- #
473
-
474
- #
475
- # Excel 1900 date system
476
- #
477
- 401 0000-12-30T -1 # Below year range.
478
- 402 1000-12-30T -1 # Below year range.
479
- 403 1899-12-30T -1 # Below year range.
480
- 404 2002-02-29T -1 # False leap-day.
481
- 405 2000-00-00T -1 # No month or day.
482
- 406 2000-01-00T -1 # No day.
483
- 407 2000-00-01T -1 # No month.
484
- 408 2000-13-01T -1 # Month out of range.
485
- 409 2000-12-32T -1 # Day out of range.
486
- 410 10000-01-01T -1 # Year out of range.
487
-
488
- #
489
- # Excel 1904 date system
490
- #
491
- 411 1899-12-31T -1 # Below year range.
492
- 412 1900-01-01T -1 # Below year range.
493
- 413 1903-12-31T -1 # Below year range.
494
- 414 2001-02-29T -1 # False leap-day.
495
- 415 2000-00-00T -1 # No month or day.
496
- 416 2000-01-00T -1 # No day.
497
- 417 2000-00-01T -1 # No month.
498
- 418 2000-13-01T -1 # Month out of range.
499
- 419 2000-12-32T -1 # Day out of range.
500
- 420 10000-01-01T -1 # Year out of range.
501
-
502
- __DATA_END__
503
-
504
- end
505
-
506
- end
1
+ ###############################################################################
2
+ #
3
+ # A test for WriteExcel.
4
+ #
5
+ # Tests date and time handling. Tests dates in 1900 and 1904 format.
6
+ #
7
+ # reverse('©'), May 2004, 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
+ $LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
14
+
15
+ require "test/unit"
16
+ require 'writeexcel'
17
+
18
+ class TC_data_only < Test::Unit::TestCase
19
+
20
+ def setup
21
+ t = Time.now.strftime("%Y%m%d")
22
+ path = "temp#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
23
+ @test_file = File.join(Dir.tmpdir, path)
24
+ @workbook = WriteExcel.new(@test_file)
25
+ @worksheet = @workbook.add_worksheet
26
+ end
27
+
28
+ def teardown
29
+ @workbook.close
30
+ File.unlink(@test_file) if FileTest.exist?(@test_file)
31
+ end
32
+
33
+ def test_the_dates_generated_by_excel
34
+ lines = data_generated_excel.split(/\n/)
35
+ while !lines.empty?
36
+ line = lines.shift.sub(/^\s*/,'')
37
+ braak if line =~ /^\s*# stop/ # For debugging
38
+
39
+ @worksheet.date_1904 = false if line =~ /Excel 1900/
40
+ @worksheet.date_1904 = true if line =~ /Excel 1904/
41
+
42
+ next unless line =~ /\S/ # Ignore blank lines
43
+ next if line =~ /^\s*#/ # Ignore comments
44
+
45
+ count, date, result = line.split(/\s+/)
46
+ number = @worksheet.convert_date_time(date)
47
+ number = -1 if number.nil?
48
+ assert_equal(result.to_i, number,
49
+ "Testing convert_date_time: #{date} #{result}")
50
+ end
51
+ end
52
+
53
+ def data_generated_excel
54
+
55
+ return <<-__DATA_END__
56
+
57
+ #
58
+ # The following data was generated by Excel.
59
+ #
60
+
61
+ #
62
+ # Excel 1900 date system
63
+ #
64
+ 1 1899-12-31T 0
65
+ 2 1900-01-00T 0
66
+ 3 1900-01-01T 1
67
+ 4 1900-02-27T 58
68
+ 5 1900-02-28T 59
69
+ 6 1900-02-29T 60
70
+ 7 1900-03-01T 61
71
+ 8 1900-03-02T 62
72
+ 9 1900-03-11T 71
73
+ 10 1900-04-08T 99
74
+ 11 1900-09-12T 256
75
+ 12 1901-05-03T 489
76
+ 13 1901-10-13T 652
77
+ 14 1902-02-15T 777
78
+ 15 1902-06-06T 888
79
+ 16 1902-09-25T 999
80
+ 17 1902-09-27T 1001
81
+ 18 1903-04-26T 1212
82
+ 19 1903-08-05T 1313
83
+ 20 1903-12-31T 1461
84
+ 21 1904-01-01T 1462
85
+ 22 1904-02-28T 1520
86
+ 23 1904-02-29T 1521
87
+ 24 1904-03-01T 1522
88
+ 25 1907-02-27T 2615
89
+ 26 1907-02-28T 2616
90
+ 27 1907-03-01T 2617
91
+ 28 1907-03-02T 2618
92
+ 29 1907-03-03T 2619
93
+ 30 1907-03-04T 2620
94
+ 31 1907-03-05T 2621
95
+ 32 1907-03-06T 2622
96
+ 33 1999-01-01T 36161
97
+ 34 1999-01-31T 36191
98
+ 35 1999-02-01T 36192
99
+ 36 1999-02-28T 36219
100
+ 37 1999-03-01T 36220
101
+ 38 1999-03-31T 36250
102
+ 39 1999-04-01T 36251
103
+ 40 1999-04-30T 36280
104
+ 41 1999-05-01T 36281
105
+ 42 1999-05-31T 36311
106
+ 43 1999-06-01T 36312
107
+ 44 1999-06-30T 36341
108
+ 45 1999-07-01T 36342
109
+ 46 1999-07-31T 36372
110
+ 47 1999-08-01T 36373
111
+ 48 1999-08-31T 36403
112
+ 49 1999-09-01T 36404
113
+ 50 1999-09-30T 36433
114
+ 51 1999-10-01T 36434
115
+ 52 1999-10-31T 36464
116
+ 53 1999-11-01T 36465
117
+ 54 1999-11-30T 36494
118
+ 55 1999-12-01T 36495
119
+ 56 1999-12-31T 36525
120
+ 57 2000-01-01T 36526
121
+ 58 2000-01-31T 36556
122
+ 59 2000-02-01T 36557
123
+ 60 2000-02-29T 36585
124
+ 61 2000-03-01T 36586
125
+ 62 2000-03-31T 36616
126
+ 63 2000-04-01T 36617
127
+ 64 2000-04-30T 36646
128
+ 65 2000-05-01T 36647
129
+ 66 2000-05-31T 36677
130
+ 67 2000-06-01T 36678
131
+ 68 2000-06-30T 36707
132
+ 69 2000-07-01T 36708
133
+ 70 2000-07-31T 36738
134
+ 71 2000-08-01T 36739
135
+ 72 2000-08-31T 36769
136
+ 73 2000-09-01T 36770
137
+ 74 2000-09-30T 36799
138
+ 75 2000-10-01T 36800
139
+ 76 2000-10-31T 36830
140
+ 77 2000-11-01T 36831
141
+ 78 2000-11-30T 36860
142
+ 79 2000-12-01T 36861
143
+ 80 2000-12-31T 36891
144
+ 81 2001-01-01T 36892
145
+ 82 2001-01-31T 36922
146
+ 83 2001-02-01T 36923
147
+ 84 2001-02-28T 36950
148
+ 85 2001-03-01T 36951
149
+ 86 2001-03-31T 36981
150
+ 87 2001-04-01T 36982
151
+ 88 2001-04-30T 37011
152
+ 89 2001-05-01T 37012
153
+ 90 2001-05-31T 37042
154
+ 91 2001-06-01T 37043
155
+ 92 2001-06-30T 37072
156
+ 93 2001-07-01T 37073
157
+ 94 2001-07-31T 37103
158
+ 95 2001-08-01T 37104
159
+ 96 2001-08-31T 37134
160
+ 97 2001-09-01T 37135
161
+ 98 2001-09-30T 37164
162
+ 99 2001-10-01T 37165
163
+ 100 2001-10-31T 37195
164
+ 101 2001-11-01T 37196
165
+ 102 2001-11-30T 37225
166
+ 103 2001-12-01T 37226
167
+ 104 2001-12-31T 37256
168
+ 105 2400-01-01T 182623
169
+ 106 2400-01-31T 182653
170
+ 107 2400-02-01T 182654
171
+ 108 2400-02-29T 182682
172
+ 109 2400-03-01T 182683
173
+ 110 2400-03-31T 182713
174
+ 111 2400-04-01T 182714
175
+ 112 2400-04-30T 182743
176
+ 113 2400-05-01T 182744
177
+ 114 2400-05-31T 182774
178
+ 115 2400-06-01T 182775
179
+ 116 2400-06-30T 182804
180
+ 117 2400-07-01T 182805
181
+ 118 2400-07-31T 182835
182
+ 119 2400-08-01T 182836
183
+ 120 2400-08-31T 182866
184
+ 121 2400-09-01T 182867
185
+ 122 2400-09-30T 182896
186
+ 123 2400-10-01T 182897
187
+ 124 2400-10-31T 182927
188
+ 125 2400-11-01T 182928
189
+ 126 2400-11-30T 182957
190
+ 127 2400-12-01T 182958
191
+ 128 2400-12-31T 182988
192
+ 129 4000-01-01T 767011
193
+ 130 4000-01-31T 767041
194
+ 131 4000-02-01T 767042
195
+ 132 4000-02-29T 767070
196
+ 133 4000-03-01T 767071
197
+ 134 4000-03-31T 767101
198
+ 135 4000-04-01T 767102
199
+ 136 4000-04-30T 767131
200
+ 137 4000-05-01T 767132
201
+ 138 4000-05-31T 767162
202
+ 139 4000-06-01T 767163
203
+ 140 4000-06-30T 767192
204
+ 141 4000-07-01T 767193
205
+ 142 4000-07-31T 767223
206
+ 143 4000-08-01T 767224
207
+ 144 4000-08-31T 767254
208
+ 145 4000-09-01T 767255
209
+ 146 4000-09-30T 767284
210
+ 147 4000-10-01T 767285
211
+ 148 4000-10-31T 767315
212
+ 149 4000-11-01T 767316
213
+ 150 4000-11-30T 767345
214
+ 151 4000-12-01T 767346
215
+ 152 4000-12-31T 767376
216
+ 153 4321-01-01T 884254
217
+ 154 4321-01-31T 884284
218
+ 155 4321-02-01T 884285
219
+ 156 4321-02-28T 884312
220
+ 157 4321-03-01T 884313
221
+ 158 4321-03-31T 884343
222
+ 159 4321-04-01T 884344
223
+ 160 4321-04-30T 884373
224
+ 161 4321-05-01T 884374
225
+ 162 4321-05-31T 884404
226
+ 163 4321-06-01T 884405
227
+ 164 4321-06-30T 884434
228
+ 165 4321-07-01T 884435
229
+ 166 4321-07-31T 884465
230
+ 167 4321-08-01T 884466
231
+ 168 4321-08-31T 884496
232
+ 169 4321-09-01T 884497
233
+ 170 4321-09-30T 884526
234
+ 171 4321-10-01T 884527
235
+ 172 4321-10-31T 884557
236
+ 173 4321-11-01T 884558
237
+ 174 4321-11-30T 884587
238
+ 175 4321-12-01T 884588
239
+ 176 4321-12-31T 884618
240
+ 177 9999-01-01T 2958101
241
+ 178 9999-01-31T 2958131
242
+ 179 9999-02-01T 2958132
243
+ 180 9999-02-28T 2958159
244
+ 181 9999-03-01T 2958160
245
+ 182 9999-03-31T 2958190
246
+ 183 9999-04-01T 2958191
247
+ 184 9999-04-30T 2958220
248
+ 185 9999-05-01T 2958221
249
+ 186 9999-05-31T 2958251
250
+ 187 9999-06-01T 2958252
251
+ 188 9999-06-30T 2958281
252
+ 189 9999-07-01T 2958282
253
+ 190 9999-07-31T 2958312
254
+ 191 9999-08-01T 2958313
255
+ 192 9999-08-31T 2958343
256
+ 193 9999-09-01T 2958344
257
+ 194 9999-09-30T 2958373
258
+ 195 9999-10-01T 2958374
259
+ 196 9999-10-31T 2958404
260
+ 197 9999-11-01T 2958405
261
+ 198 9999-11-30T 2958434
262
+ 199 9999-12-01T 2958435
263
+ 200 9999-12-31T 2958465
264
+
265
+ #
266
+ # Excel 1904 date system
267
+ #
268
+ 201 1904-01-01T 0
269
+ 202 1904-01-31T 30
270
+ 203 1904-02-01T 31
271
+ 204 1904-02-29T 59
272
+ 205 1904-03-01T 60
273
+ 206 1904-03-31T 90
274
+ 207 1904-04-01T 91
275
+ 208 1904-04-30T 120
276
+ 209 1904-05-01T 121
277
+ 210 1904-05-31T 151
278
+ 211 1904-06-01T 152
279
+ 212 1904-06-30T 181
280
+ 213 1904-07-01T 182
281
+ 214 1904-07-31T 212
282
+ 215 1904-08-01T 213
283
+ 216 1904-08-31T 243
284
+ 217 1904-09-01T 244
285
+ 218 1904-09-30T 273
286
+ 219 1904-10-01T 274
287
+ 220 1904-10-31T 304
288
+ 221 1904-11-01T 305
289
+ 222 1904-11-30T 334
290
+ 223 1904-12-01T 335
291
+ 224 1904-12-31T 365
292
+ 225 1907-02-27T 1153
293
+ 226 1907-02-28T 1154
294
+ 227 1907-03-01T 1155
295
+ 228 1907-03-02T 1156
296
+ 229 1907-03-03T 1157
297
+ 230 1907-03-04T 1158
298
+ 231 1907-03-05T 1159
299
+ 232 1907-03-06T 1160
300
+ 233 1999-01-01T 34699
301
+ 234 1999-01-31T 34729
302
+ 235 1999-02-01T 34730
303
+ 236 1999-02-28T 34757
304
+ 237 1999-03-01T 34758
305
+ 238 1999-03-31T 34788
306
+ 239 1999-04-01T 34789
307
+ 240 1999-04-30T 34818
308
+ 241 1999-05-01T 34819
309
+ 242 1999-05-31T 34849
310
+ 243 1999-06-01T 34850
311
+ 244 1999-06-30T 34879
312
+ 245 1999-07-01T 34880
313
+ 246 1999-07-31T 34910
314
+ 247 1999-08-01T 34911
315
+ 248 1999-08-31T 34941
316
+ 249 1999-09-01T 34942
317
+ 250 1999-09-30T 34971
318
+ 251 1999-10-01T 34972
319
+ 252 1999-10-31T 35002
320
+ 253 1999-11-01T 35003
321
+ 254 1999-11-30T 35032
322
+ 255 1999-12-01T 35033
323
+ 256 1999-12-31T 35063
324
+ 257 2000-01-01T 35064
325
+ 258 2000-01-31T 35094
326
+ 259 2000-02-01T 35095
327
+ 260 2000-02-29T 35123
328
+ 261 2000-03-01T 35124
329
+ 262 2000-03-31T 35154
330
+ 263 2000-04-01T 35155
331
+ 264 2000-04-30T 35184
332
+ 265 2000-05-01T 35185
333
+ 266 2000-05-31T 35215
334
+ 267 2000-06-01T 35216
335
+ 268 2000-06-30T 35245
336
+ 269 2000-07-01T 35246
337
+ 270 2000-07-31T 35276
338
+ 271 2000-08-01T 35277
339
+ 272 2000-08-31T 35307
340
+ 273 2000-09-01T 35308
341
+ 274 2000-09-30T 35337
342
+ 275 2000-10-01T 35338
343
+ 276 2000-10-31T 35368
344
+ 277 2000-11-01T 35369
345
+ 278 2000-11-30T 35398
346
+ 279 2000-12-01T 35399
347
+ 280 2000-12-31T 35429
348
+ 281 2001-01-01T 35430
349
+ 282 2001-01-31T 35460
350
+ 283 2001-02-01T 35461
351
+ 284 2001-02-28T 35488
352
+ 285 2001-03-01T 35489
353
+ 286 2001-03-31T 35519
354
+ 287 2001-04-01T 35520
355
+ 288 2001-04-30T 35549
356
+ 289 2001-05-01T 35550
357
+ 290 2001-05-31T 35580
358
+ 291 2001-06-01T 35581
359
+ 292 2001-06-30T 35610
360
+ 293 2001-07-01T 35611
361
+ 294 2001-07-31T 35641
362
+ 295 2001-08-01T 35642
363
+ 296 2001-08-31T 35672
364
+ 297 2001-09-01T 35673
365
+ 298 2001-09-30T 35702
366
+ 299 2001-10-01T 35703
367
+ 300 2001-10-31T 35733
368
+ 301 2001-11-01T 35734
369
+ 302 2001-11-30T 35763
370
+ 303 2001-12-01T 35764
371
+ 304 2001-12-31T 35794
372
+ 305 2400-01-01T 181161
373
+ 306 2400-01-31T 181191
374
+ 307 2400-02-01T 181192
375
+ 308 2400-02-29T 181220
376
+ 309 2400-03-01T 181221
377
+ 310 2400-03-31T 181251
378
+ 311 2400-04-01T 181252
379
+ 312 2400-04-30T 181281
380
+ 313 2400-05-01T 181282
381
+ 314 2400-05-31T 181312
382
+ 315 2400-06-01T 181313
383
+ 316 2400-06-30T 181342
384
+ 317 2400-07-01T 181343
385
+ 318 2400-07-31T 181373
386
+ 319 2400-08-01T 181374
387
+ 320 2400-08-31T 181404
388
+ 321 2400-09-01T 181405
389
+ 322 2400-09-30T 181434
390
+ 323 2400-10-01T 181435
391
+ 324 2400-10-31T 181465
392
+ 325 2400-11-01T 181466
393
+ 326 2400-11-30T 181495
394
+ 327 2400-12-01T 181496
395
+ 328 2400-12-31T 181526
396
+ 329 4000-01-01T 765549
397
+ 330 4000-01-31T 765579
398
+ 331 4000-02-01T 765580
399
+ 332 4000-02-29T 765608
400
+ 333 4000-03-01T 765609
401
+ 334 4000-03-31T 765639
402
+ 335 4000-04-01T 765640
403
+ 336 4000-04-30T 765669
404
+ 337 4000-05-01T 765670
405
+ 338 4000-05-31T 765700
406
+ 339 4000-06-01T 765701
407
+ 340 4000-06-30T 765730
408
+ 341 4000-07-01T 765731
409
+ 342 4000-07-31T 765761
410
+ 343 4000-08-01T 765762
411
+ 344 4000-08-31T 765792
412
+ 345 4000-09-01T 765793
413
+ 346 4000-09-30T 765822
414
+ 347 4000-10-01T 765823
415
+ 348 4000-10-31T 765853
416
+ 349 4000-11-01T 765854
417
+ 350 4000-11-30T 765883
418
+ 351 4000-12-01T 765884
419
+ 352 4000-12-31T 765914
420
+ 353 4321-01-01T 882792
421
+ 354 4321-01-31T 882822
422
+ 355 4321-02-01T 882823
423
+ 356 4321-02-28T 882850
424
+ 357 4321-03-01T 882851
425
+ 358 4321-03-31T 882881
426
+ 359 4321-04-01T 882882
427
+ 360 4321-04-30T 882911
428
+ 361 4321-05-01T 882912
429
+ 362 4321-05-31T 882942
430
+ 363 4321-06-01T 882943
431
+ 364 4321-06-30T 882972
432
+ 365 4321-07-01T 882973
433
+ 366 4321-07-31T 883003
434
+ 367 4321-08-01T 883004
435
+ 368 4321-08-31T 883034
436
+ 369 4321-09-01T 883035
437
+ 370 4321-09-30T 883064
438
+ 371 4321-10-01T 883065
439
+ 372 4321-10-31T 883095
440
+ 373 4321-11-01T 883096
441
+ 374 4321-11-30T 883125
442
+ 375 4321-12-01T 883126
443
+ 376 4321-12-31T 883156
444
+ 377 9999-01-01T 2956639
445
+ 378 9999-01-31T 2956669
446
+ 379 9999-02-01T 2956670
447
+ 380 9999-02-28T 2956697
448
+ 381 9999-03-01T 2956698
449
+ 382 9999-03-31T 2956728
450
+ 383 9999-04-01T 2956729
451
+ 384 9999-04-30T 2956758
452
+ 385 9999-05-01T 2956759
453
+ 386 9999-05-31T 2956789
454
+ 387 9999-06-01T 2956790
455
+ 388 9999-06-30T 2956819
456
+ 389 9999-07-01T 2956820
457
+ 390 9999-07-31T 2956850
458
+ 391 9999-08-01T 2956851
459
+ 392 9999-08-31T 2956881
460
+ 393 9999-09-01T 2956882
461
+ 394 9999-09-30T 2956911
462
+ 395 9999-10-01T 2956912
463
+ 396 9999-10-31T 2956942
464
+ 397 9999-11-01T 2956943
465
+ 398 9999-11-30T 2956972
466
+ 399 9999-12-01T 2956973
467
+ 400 9999-12-31T 2957003
468
+
469
+
470
+ #
471
+ # The following dates are invalid.
472
+ #
473
+
474
+ #
475
+ # Excel 1900 date system
476
+ #
477
+ 401 0000-12-30T -1 # Below year range.
478
+ 402 1000-12-30T -1 # Below year range.
479
+ 403 1899-12-30T -1 # Below year range.
480
+ 404 2002-02-29T -1 # False leap-day.
481
+ 405 2000-00-00T -1 # No month or day.
482
+ 406 2000-01-00T -1 # No day.
483
+ 407 2000-00-01T -1 # No month.
484
+ 408 2000-13-01T -1 # Month out of range.
485
+ 409 2000-12-32T -1 # Day out of range.
486
+ 410 10000-01-01T -1 # Year out of range.
487
+
488
+ #
489
+ # Excel 1904 date system
490
+ #
491
+ 411 1899-12-31T -1 # Below year range.
492
+ 412 1900-01-01T -1 # Below year range.
493
+ 413 1903-12-31T -1 # Below year range.
494
+ 414 2001-02-29T -1 # False leap-day.
495
+ 415 2000-00-00T -1 # No month or day.
496
+ 416 2000-01-00T -1 # No day.
497
+ 417 2000-00-01T -1 # No month.
498
+ 418 2000-13-01T -1 # Month out of range.
499
+ 419 2000-12-32T -1 # Day out of range.
500
+ 420 10000-01-01T -1 # Year out of range.
501
+
502
+ __DATA_END__
503
+
504
+ end
505
+
506
+ end