name:
tests/Utilities/TypeConverterTest.ts
-rw-r--r--
63683
1/// <reference path="../../node_modules/moment/moment.d.ts"/>
2import * as moment from "moment";
3import {
4 assertEquals,
5 test,
6 catchAndAssertEquals, lockDate
7} from "../Utils/Asserts";
8import {
9 TypeConverter
10} from "../../src/Utilities/TypeConverter";
11import {
12 VALUE_ERROR,
13 REF_ERROR, ValueError
14} from "../../src/Errors";
15import {
16 Cell
17} from "../../src/Cell";
18
19let ERROR_CELL = new Cell("A1");
20ERROR_CELL.setError(new ValueError("Whooops!"));
21
22
23test("TypeConverter.unitsToTimeNumber", function () {
24 assertEquals(TypeConverter.unitsToTimeNumber(10, 10, 10), 0.4237268518518518);
25 assertEquals(TypeConverter.unitsToTimeNumber(34, 10, 10), 0.4237268518518518);
26 assertEquals(TypeConverter.unitsToTimeNumber(0, 0, 0), 0);
27 assertEquals(TypeConverter.unitsToTimeNumber(24, 0, 0), 0);
28 assertEquals(TypeConverter.unitsToTimeNumber(23, 60, 0), 0);
29 assertEquals(TypeConverter.unitsToTimeNumber(23, 59, 60), 0);
30});
31
32
33test("TypeConverter.numberToMoment", function () {
34 assertEquals(TypeConverter.numberToMoment(10).format("M/D/YYYY"), "1/9/1900");
35 assertEquals(TypeConverter.numberToMoment(2).format("M/D/YYYY"), "1/1/1900");
36 assertEquals(TypeConverter.numberToMoment(1).format("M/D/YYYY"), "12/31/1899");
37 assertEquals(TypeConverter.numberToMoment(0).format("M/D/YYYY"), "12/30/1899");
38 assertEquals(TypeConverter.numberToMoment(10000).format("M/D/YYYY"), "5/18/1927");
39 assertEquals(TypeConverter.numberToMoment(10001).format("M/D/YYYY"), "5/19/1927");
40 assertEquals(TypeConverter.numberToMoment(-1000).format("M/D/YYYY"), "4/4/1897");
41 assertEquals(TypeConverter.numberToMoment(10.1).format("M/D/YYYY"), "1/9/1900");
42 assertEquals(TypeConverter.numberToMoment(2.44).format("M/D/YYYY"), "1/1/1900");
43 assertEquals(TypeConverter.numberToMoment(1.44).format("M/D/YYYY"), "12/31/1899");
44 assertEquals(TypeConverter.numberToMoment(1.99).format("M/D/YYYY"), "1/1/1900");
45 assertEquals(TypeConverter.numberToMoment(0.78).format("M/D/YYYY"), "12/31/1899");
46});
47
48
49test("TypeConverter.momentToDayNumber", function () {
50 assertEquals(TypeConverter.momentToDayNumber(moment.utc("1900-01-09")), 10);
51 assertEquals(TypeConverter.momentToDayNumber(moment.utc("1900-01-01")), 2);
52 assertEquals(TypeConverter.momentToDayNumber(moment.utc("1899-12-31")), 1);
53 assertEquals(TypeConverter.momentToDayNumber(moment.utc("1899-12-30")), 0);
54 assertEquals(TypeConverter.momentToDayNumber(moment.utc("1927-05-18")), 10000);
55 assertEquals(TypeConverter.momentToDayNumber(moment.utc("1927-05-19")), 10001);
56 assertEquals(TypeConverter.momentToDayNumber(moment.utc("1897-04-04")), -1000);
57});
58
59
60test("TypeConverter.momentToNumber", function () {
61 assertEquals(TypeConverter.momentToNumber(moment.utc("1900-01-09")), 10);
62 assertEquals(TypeConverter.momentToNumber(moment.utc("1900-01-01")), 2);
63 assertEquals(TypeConverter.momentToNumber(moment.utc("1899-12-31")), 1);
64 assertEquals(TypeConverter.momentToNumber(moment.utc("1899-12-30")), 0);
65 assertEquals(TypeConverter.momentToNumber(moment.utc("1927-05-18")), 10000);
66 assertEquals(TypeConverter.momentToNumber(moment.utc("1927-05-19")), 10001);
67 assertEquals(TypeConverter.momentToNumber(moment.utc("1897-04-04")), -1000);
68 assertEquals(TypeConverter.momentToNumber(moment.utc("1900-01-09T16:11:57+00:00")), 10.674965277777778);
69 assertEquals(TypeConverter.momentToNumber(moment.utc("1900-01-01T16:11:57+00:00")), 2.674965277777778);
70 assertEquals(TypeConverter.momentToNumber(moment.utc("1899-12-31T12:00:00+00:00")), 1.5);
71 assertEquals(TypeConverter.momentToNumber(moment.utc("1899-12-31T18:00:00+00:00")), 1.75);
72});
73
74
75test("TypeConverter.valueToDateNumber", function () {
76 assertEquals(TypeConverter.valueToDateNumber(Cell.BuildFrom("A1", 10)), 10);
77 assertEquals(TypeConverter.valueToDateNumber(10), 10);
78 assertEquals(TypeConverter.valueToDateNumber("10"), 10);
79 assertEquals(TypeConverter.valueToDateNumber("10.0"), 10);
80 assertEquals(TypeConverter.valueToDateNumber("1992-1-1"), 33604);
81 assertEquals(TypeConverter.valueToDateNumber("1992-1-2"), 33605);
82 assertEquals(TypeConverter.valueToDateNumber(false, true), 0);
83 assertEquals(TypeConverter.valueToDateNumber(true, true), 1);
84 catchAndAssertEquals(function () {
85 TypeConverter.valueToDateNumber(false); // Do not convert boolean
86 }, VALUE_ERROR);
87 catchAndAssertEquals(function () {
88 TypeConverter.valueToDateNumber(ERROR_CELL);
89 }, VALUE_ERROR);
90 catchAndAssertEquals(function () {
91 console.log(TypeConverter.valueToDateNumber("str"));
92 }, VALUE_ERROR);
93});
94
95
96test("TypeConverter.firstValueAsDateNumber", function () {
97 assertEquals(TypeConverter.firstValueAsDateNumber([Cell.BuildFrom("A1", 10)]), 10);
98 assertEquals(TypeConverter.firstValueAsDateNumber([10]), 10);
99 assertEquals(TypeConverter.firstValueAsDateNumber([[10]]), 10);
100 assertEquals(TypeConverter.firstValueAsDateNumber([[[[[10]]]]]), 10);
101 assertEquals(TypeConverter.firstValueAsDateNumber(["10"]), 10);
102 assertEquals(TypeConverter.firstValueAsDateNumber(["10.0"]), 10);
103 assertEquals(TypeConverter.firstValueAsDateNumber(["1992-1-1"]), 33604);
104 assertEquals(TypeConverter.firstValueAsDateNumber(["1992-1-2"]), 33605);
105 assertEquals(TypeConverter.firstValueAsDateNumber([false], true), 0);
106 assertEquals(TypeConverter.firstValueAsDateNumber([true], true), 1);
107 catchAndAssertEquals(function () {
108 TypeConverter.firstValueAsDateNumber([ERROR_CELL]);
109 }, VALUE_ERROR);
110 catchAndAssertEquals(function () {
111 TypeConverter.firstValueAsDateNumber([false]); // Do not convert boolean
112 }, VALUE_ERROR);
113 catchAndAssertEquals(function () {
114 TypeConverter.firstValueAsDateNumber(["str"]);
115 }, VALUE_ERROR);
116 catchAndAssertEquals(function () {
117 TypeConverter.firstValueAsDateNumber([[], 10]);
118 }, REF_ERROR);
119});
120
121
122test("TypeConverter.firstValue", function () {
123 assertEquals(TypeConverter.firstValue([10, 0]), 10);
124 assertEquals(TypeConverter.firstValue([[[[10]]], 0]), 10);
125 assertEquals(TypeConverter.firstValue(["10"]), "10");
126 assertEquals(TypeConverter.firstValue(["string", 22]), "string");
127 catchAndAssertEquals(function () {
128 TypeConverter.firstValue([[], 10]);
129 }, REF_ERROR);
130});
131
132
133test("TypeConverter.valueToTimestampNumber", function () {
134 assertEquals(TypeConverter.valueToTimestampNumber(Cell.BuildFrom("A1", 10)), 10);
135 assertEquals(TypeConverter.valueToTimestampNumber(10), 10);
136 assertEquals(TypeConverter.valueToTimestampNumber(""), 0);
137 assertEquals(TypeConverter.valueToTimestampNumber("12:00pm"), 0.5);
138 assertEquals(TypeConverter.valueToTimestampNumber("12:00"), 0.5);
139 assertEquals(TypeConverter.valueToTimestampNumber("12pm"), 0.5);
140 assertEquals(TypeConverter.valueToTimestampNumber("10:10am"), 0.4236111111111111);
141 assertEquals(TypeConverter.valueToTimestampNumber("10:10:10am"), 0.4237268518518518);
142 assertEquals(TypeConverter.valueToTimestampNumber("22:10:10"), 0.9237268518518519);
143 assertEquals(TypeConverter.valueToTimestampNumber("1:10:10"), 0.048726851851851855);
144 assertEquals(TypeConverter.valueToTimestampNumber("25:10:10"), 0.048726851851851855);
145 assertEquals(TypeConverter.valueToTimestampNumber(false), 0);
146 assertEquals(TypeConverter.valueToTimestampNumber(true), 0);
147 catchAndAssertEquals(function () {
148 TypeConverter.valueToTimestampNumber("str");
149 }, VALUE_ERROR);
150 catchAndAssertEquals(function () {
151 TypeConverter.valueToTimestampNumber(ERROR_CELL);
152 }, VALUE_ERROR);
153});
154
155
156test("TypeConverter.valueToString", function () {
157 assertEquals(TypeConverter.valueToString(Cell.BuildFrom("A1", 10)), "10");
158 assertEquals(TypeConverter.valueToString(new Cell("A1")), "");
159 assertEquals(TypeConverter.valueToString(10), "10");
160 assertEquals(TypeConverter.valueToString("10"), "10");
161 assertEquals(TypeConverter.valueToString("This is a string"), "This is a string");
162 assertEquals(TypeConverter.valueToString(10.3712638712), "10.3712638712");
163 assertEquals(TypeConverter.valueToString(-0.33824284782334), "-0.33824284782334");
164 assertEquals(TypeConverter.valueToString(false), "FALSE");
165 assertEquals(TypeConverter.valueToString(true), "TRUE");
166 catchAndAssertEquals(function () {
167 TypeConverter.valueToString(ERROR_CELL);
168 }, VALUE_ERROR);
169});
170
171
172test("TypeConverter.valueToBoolean", function () {
173 assertEquals(TypeConverter.valueToBoolean(Cell.BuildFrom("A1", 10)), true);
174 assertEquals(TypeConverter.valueToBoolean(Cell.BuildFrom("A1", 0)), false);
175 assertEquals(TypeConverter.valueToBoolean(new Cell("A1")), false);
176 assertEquals(TypeConverter.valueToBoolean(10), true);
177 assertEquals(TypeConverter.valueToBoolean(-10), true);
178 assertEquals(TypeConverter.valueToBoolean(1.11111), true);
179 assertEquals(TypeConverter.valueToBoolean(0), false);
180 assertEquals(TypeConverter.valueToBoolean(false), false);
181 assertEquals(TypeConverter.valueToBoolean(true), true);
182 catchAndAssertEquals(function () {
183 TypeConverter.valueToBoolean("str");
184 }, VALUE_ERROR);
185 catchAndAssertEquals(function () {
186 TypeConverter.valueToBoolean(ERROR_CELL);
187 }, VALUE_ERROR);
188});
189
190
191test("TypeConverter.valueToNumber", function () {
192 assertEquals(TypeConverter.valueToNumber(Cell.BuildFrom("A1", 10)), 10);
193 assertEquals(TypeConverter.valueToNumber(Cell.BuildFrom("A1", "10")), 10);
194 assertEquals(TypeConverter.valueToNumber(10), 10);
195 assertEquals(TypeConverter.valueToNumber(-10), -10);
196 assertEquals(TypeConverter.valueToNumber(1.11111), 1.11111);
197 assertEquals(TypeConverter.valueToNumber(0), 0);
198 assertEquals(TypeConverter.valueToNumber(false), 0);
199 assertEquals(TypeConverter.valueToNumber(true), 1);
200 assertEquals(TypeConverter.valueToNumber("10"), 10);
201 assertEquals(TypeConverter.valueToNumber("-10"), -10);
202 assertEquals(TypeConverter.valueToNumber("1.4832749823"), 1.4832749823);
203 assertEquals(TypeConverter.valueToNumber(" 1.4832749823 "), 1.4832749823);
204 assertEquals(TypeConverter.valueToNumber("$10"), 10);
205 assertEquals(TypeConverter.valueToNumber("$10.217983172"), 10.217983172);
206 assertEquals(TypeConverter.valueToNumber("-$10.217983172"), -10.217983172);
207 catchAndAssertEquals(function () {
208 TypeConverter.valueToNumber("str");
209 }, VALUE_ERROR);
210 catchAndAssertEquals(function () {
211 TypeConverter.valueToNumber(ERROR_CELL);
212 }, VALUE_ERROR);
213});
214
215
216test("TypeConverter.stringToNumber", function () {
217 assertEquals(TypeConverter.stringToNumber("10"), 10);
218 assertEquals(TypeConverter.stringToNumber("-10"), -10);
219 assertEquals(TypeConverter.stringToNumber("1.4832749823"), 1.4832749823);
220 assertEquals(TypeConverter.stringToNumber(" 1.4832749823 "), 1.4832749823);
221 assertEquals(TypeConverter.stringToNumber("$10"), 10);
222 assertEquals(TypeConverter.stringToNumber("$10.217983172"), 10.217983172);
223 assertEquals(TypeConverter.stringToNumber("-$10.217983172"), -10.217983172);
224 assertEquals(TypeConverter.stringToNumber("100"), 100);
225 assertEquals(TypeConverter.stringToNumber("10%"), 0.1);
226 assertEquals(TypeConverter.stringToNumber("33.213131"), 33.213131);
227 assertEquals(TypeConverter.stringToNumber("41.1231"), 41.1231);
228 assertEquals(TypeConverter.stringToNumber("10e1"), 100);
229 assertEquals(TypeConverter.stringToNumber("10e2"), 1000);
230 assertEquals(TypeConverter.stringToNumber("10E1"), 100);
231 assertEquals(TypeConverter.stringToNumber("10.44E1"), 104.4);
232 assertEquals(TypeConverter.stringToNumber("10.44E10"), 104400000000);
233 assertEquals(TypeConverter.stringToNumber("10e-1"), 1);
234 assertEquals(TypeConverter.stringToNumber("10e+1"), 100);
235 assertEquals(TypeConverter.stringToNumber("10E-1"), 1);
236 assertEquals(TypeConverter.stringToNumber("10E+1"), 100);
237 assertEquals(TypeConverter.stringToNumber("$10"), 10);
238 assertEquals(TypeConverter.stringToNumber("$0.1"), 0.1);
239 assertEquals(TypeConverter.stringToNumber("$10.1"), 10.1);
240 assertEquals(TypeConverter.stringToNumber("$9.2222"), 9.2222);
241 assertEquals(TypeConverter.stringToNumber("+$9.2345"), 9.2345);
242 assertEquals(TypeConverter.stringToNumber("+$ 9.29"), 9.29);
243 assertEquals(TypeConverter.stringToNumber("+$ 9.29"), 9.29);
244 assertEquals(TypeConverter.stringToNumber("+$9.2345"), 9.2345);
245 assertEquals(TypeConverter.stringToNumber("+$ 9.29"), 9.29);
246 assertEquals(TypeConverter.stringToNumber("+$ 9.29"), 9.29);
247 assertEquals(TypeConverter.stringToNumber("$.1"), 0.1);
248 assertEquals(TypeConverter.stringToNumber("+$.111"), 0.111);
249 assertEquals(TypeConverter.stringToNumber("$+.111"), 0.111);
250 assertEquals(TypeConverter.stringToNumber("-$.1"), -0.1);
251 assertEquals(TypeConverter.stringToNumber("$-9.2345"), -9.2345);
252 assertEquals(TypeConverter.stringToNumber("$ - 9.29"), -9.29);
253 assertEquals(TypeConverter.stringToNumber("$- 9.29"), -9.29);
254 assertEquals(TypeConverter.stringToNumber("-$9.2345"), -9.2345);
255 assertEquals(TypeConverter.stringToNumber("-$ 9.29"), -9.29);
256 assertEquals(TypeConverter.stringToNumber("-$ 9.29"), -9.29);
257 assertEquals(TypeConverter.stringToNumber("-$9"), -9);
258 assertEquals(TypeConverter.stringToNumber("+$9"), 9);
259 assertEquals(TypeConverter.stringToNumber("$-9"), -9);
260 assertEquals(TypeConverter.stringToNumber("$+9"), 9);
261 assertEquals(TypeConverter.stringToNumber("-$9."), -9);
262 assertEquals(TypeConverter.stringToNumber("+$9."), 9);
263 assertEquals(TypeConverter.stringToNumber("$-9."), -9);
264 assertEquals(TypeConverter.stringToNumber("$+9."), 9);
265 assertEquals(TypeConverter.stringToNumber("1,000"), 1000);
266 assertEquals(TypeConverter.stringToNumber("1,000,000"), 1000000);
267 assertEquals(TypeConverter.stringToNumber("1000,000"), 1000000);
268 assertEquals(TypeConverter.stringToNumber("2222,000,000"), 2222000000);
269 assertEquals(TypeConverter.stringToNumber("1,000.1"), 1000.1);
270 assertEquals(TypeConverter.stringToNumber("1,000,000.11"), 1000000.11);
271 assertEquals(TypeConverter.stringToNumber("2222,000,000.1"), 2222000000.1);
272 assertEquals(TypeConverter.stringToNumber(" $ 1,000"), 1000);
273 assertEquals(TypeConverter.stringToNumber("$ 1,000"), 1000);
274 assertEquals(TypeConverter.stringToNumber("100.1e2"), 10010);
275 assertEquals(TypeConverter.stringToNumber("10e2%"), 10);
276 assertEquals(TypeConverter.stringToNumber("$ 1,000."), 1000);
277 assertEquals(TypeConverter.stringToNumber("$10e1"), undefined);
278 assertEquals(TypeConverter.stringToNumber("$+-10.00"), undefined);
279 assertEquals(TypeConverter.stringToNumber("+$+10.00"), undefined);
280 assertEquals(TypeConverter.stringToNumber("+$-10.00"), undefined);
281 assertEquals(TypeConverter.stringToNumber("10e"), undefined);
282 assertEquals(TypeConverter.stringToNumber("10,00"), undefined);
283 assertEquals(TypeConverter.stringToNumber("10,000,"), undefined);
284});
285
286
287test("TypeConverter.valueToNumberGracefully", function () {
288 assertEquals(TypeConverter.valueToNumberGracefully(Cell.BuildFrom("A1", "10")), 10);
289 assertEquals(TypeConverter.valueToNumberGracefully(Cell.BuildFrom("A1", "not-graceful")), 0);
290 assertEquals(TypeConverter.valueToNumberGracefully(new Cell("A1")), 0);
291 assertEquals(TypeConverter.valueToNumberGracefully(10), 10);
292 assertEquals(TypeConverter.valueToNumberGracefully(-10), -10);
293 assertEquals(TypeConverter.valueToNumberGracefully(1.11111), 1.11111);
294 assertEquals(TypeConverter.valueToNumberGracefully(0), 0);
295 assertEquals(TypeConverter.valueToNumberGracefully(false), 0);
296 assertEquals(TypeConverter.valueToNumberGracefully(true), 1);
297 assertEquals(TypeConverter.valueToNumberGracefully("10"), 10);
298 assertEquals(TypeConverter.valueToNumberGracefully("-10"), -10);
299 assertEquals(TypeConverter.valueToNumberGracefully("1.4832749823"), 1.4832749823);
300 assertEquals(TypeConverter.valueToNumberGracefully(" 1.4832749823 "), 1.4832749823);
301 assertEquals(TypeConverter.valueToNumberGracefully("$10"), 10);
302 assertEquals(TypeConverter.valueToNumberGracefully("$10.217983172"), 10.217983172);
303 assertEquals(TypeConverter.valueToNumberGracefully("-$10.217983172"), -10.217983172);
304 assertEquals(TypeConverter.valueToNumberGracefully("dkasjdkljasjdas"), 0);
305});
306
307
308test("TypeConverter.stringToDateNumber", function () {
309 // MONTHDIG_DAY_YEAR, MM(fd)DD(fd)YYYY ===============================================================================
310 assertEquals(TypeConverter.stringToDateNumber("6/24/92"), 33779);
311 assertEquals(TypeConverter.stringToDateNumber("6/24/1992"), 33779);
312 assertEquals(TypeConverter.stringToDateNumber("06/24/1992"), 33779);
313 assertEquals(TypeConverter.stringToDateNumber("1/01/1999"), 36161);
314 assertEquals(TypeConverter.stringToDateNumber("1/01/99"), 36161);
315 assertEquals(TypeConverter.stringToDateNumber("1/01/2222"), 117610);
316 assertEquals(TypeConverter.stringToDateNumber("9/02/1902"), 976);
317 assertEquals(TypeConverter.stringToDateNumber("9/2/1902"), 976);
318 assertEquals(TypeConverter.stringToDateNumber("11/3/4243"), 856071);
319 assertEquals(TypeConverter.stringToDateNumber(" 04/19/1992 "), 33713);
320 assertEquals(TypeConverter.stringToDateNumber("5/20/1992"), 33744);
321 assertEquals(TypeConverter.stringToDateNumber("6/21/1992"), 33776);
322 assertEquals(TypeConverter.stringToDateNumber("9/29/1992"), 33876);
323 assertEquals(TypeConverter.stringToDateNumber("1/24/1992"), 33627);
324 assertEquals(TypeConverter.stringToDateNumber("12/21/1992"), 33959);
325 assertEquals(TypeConverter.stringToDateNumber("01/31/1992"), 33634);
326 assertEquals(TypeConverter.stringToDateNumber("1/13/1992"), 33616);
327 assertEquals(TypeConverter.stringToDateNumber("2/29/2004"), 38046);
328 assertEquals(TypeConverter.stringToDateNumber("2/28/2004"), 38045);
329 assertEquals(TypeConverter.stringToDateNumber("2/28/004"), 38045);
330 assertEquals(TypeConverter.stringToDateNumber("2/28/04"), 38045);
331 assertEquals(TypeConverter.stringToDateNumber("2/28/4"), 38045);
332 assertEquals(TypeConverter.stringToDateNumber("1/13/1999"), 36173);
333 assertEquals(TypeConverter.stringToDateNumber("01/13/1999"), 36173);
334 assertEquals(TypeConverter.stringToDateNumber("01/13/0999"), -329069);
335 assertEquals(TypeConverter.stringToDateNumber("01/13/1200"), -255656);
336 assertEquals(TypeConverter.stringToDateNumber("01/13/0029"), 47131);
337 assertEquals(TypeConverter.stringToDateNumber("01/13/0030"), 10971);
338 assertEquals(TypeConverter.stringToDateNumber("01/13/0044"), 16084);
339 assertEquals(TypeConverter.stringToDateNumber("01/13/0050"), 18276);
340 assertEquals(TypeConverter.stringToDateNumber("01/13/0097"), 35443);
341 assertEquals(TypeConverter.stringToDateNumber("01/13/0099"), 36173);
342 assertEquals(TypeConverter.stringToDateNumber("01/13/0000"), 36538);
343 assertEquals(TypeConverter.stringToDateNumber("01/13/0101"), -657057);
344 assertEquals(TypeConverter.stringToDateNumber("01/13/0100"), -657422);
345 assertEquals(TypeConverter.stringToDateNumber("12/31/100"), -657070);
346 assertEquals(TypeConverter.stringToDateNumber("11/10/122"), -649086);
347 assertEquals(TypeConverter.stringToDateNumber("1/22/2222"), 117631);
348 assertEquals(TypeConverter.stringToDateNumber("1/22/222"), -612854);
349 // delimiter tests
350 assertEquals(TypeConverter.stringToDateNumber("6-24-92"), 33779);
351 assertEquals(TypeConverter.stringToDateNumber("6/24/92"), 33779);
352 assertEquals(TypeConverter.stringToDateNumber("6 24 92"), 33779);
353 assertEquals(TypeConverter.stringToDateNumber("6.24.92"), 33779);
354 assertEquals(TypeConverter.stringToDateNumber("6 . 24 . 92"), 33779);
355 assertEquals(TypeConverter.stringToDateNumber("6 / 24 / 92"), 33779);
356 assertEquals(TypeConverter.stringToDateNumber("6, 24, 92"), 33779);
357 // flex delimiter should not allow a comma without a space after it.
358 catchAndAssertEquals(function() {
359 TypeConverter.stringToDateNumber("Sunday,6/24/92");
360 }, VALUE_ERROR);
361 // Leap day on non-leap years
362 catchAndAssertEquals(function() {
363 TypeConverter.stringToDateNumber("2/29/2005");
364 }, VALUE_ERROR);
365 catchAndAssertEquals(function() {
366 TypeConverter.stringToDateNumber("2/29/2001");
367 }, VALUE_ERROR);
368 // Out of range day for any month
369 catchAndAssertEquals(function() {
370 TypeConverter.stringToDateNumber("1/44/2005");
371 }, VALUE_ERROR);
372 // timestamp test
373 assertEquals(TypeConverter.stringToDateNumber("6-24-92 10am"), 33779);
374 assertEquals(TypeConverter.stringToDateNumber("6-24-92 10:10"), 33779);
375 assertEquals(TypeConverter.stringToDateNumber("6-24-92 10:10am"), 33779);
376 assertEquals(TypeConverter.stringToDateNumber("6-24-92 10:10:10"), 33779);
377 assertEquals(TypeConverter.stringToDateNumber("6-24-92 10:10:10am"), 33779);
378 assertEquals(TypeConverter.stringToDateNumber("6-24-92 10 am"), 33779);
379 assertEquals(TypeConverter.stringToDateNumber("6-24-92 10: 10 "), 33779);
380 assertEquals(TypeConverter.stringToDateNumber("6-24-92 10: 10 pm"), 33779);
381 assertEquals(TypeConverter.stringToDateNumber("6-24-92 10: 10: 10"), 33779);
382 assertEquals(TypeConverter.stringToDateNumber("6-24-92 10: 10: 10 am "), 33779);
383 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 00:00"), 33779);
384 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 0:00"), 33779);
385 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 10:10"), 33779);
386 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 16:22"), 33779);
387 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 25:10"), 33780);
388 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 23:60"), 33780);
389 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 24:00"), 33780);
390 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 23:59"), 33779);
391 assertEquals(TypeConverter.stringToDateNumber("1999/1/13 10:11111111"), 43889);
392 assertEquals(TypeConverter.stringToDateNumber("1999/1/13 25000:22"), 37214);
393 assertEquals(TypeConverter.stringToDateNumber("1999/1/13 25000: 22"), 37214);
394 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 00:00am"), 33779);
395 assertEquals(TypeConverter.stringToDateNumber("1992/06/24 01:44am "), 33779);
396 assertEquals(TypeConverter.stringToDateNumber("1999/1/01 02:59pm"), 36161);
397 assertEquals(TypeConverter.stringToDateNumber("2222/1/01 03:33pm"), 117610);
398 assertEquals(TypeConverter.stringToDateNumber("1902/9/02 12:33pm"), 976);
399 assertEquals(TypeConverter.stringToDateNumber("1902/9/2 12:33pm"), 976);
400 assertEquals(TypeConverter.stringToDateNumber("4243/11/3 12:33pm"), 856071);
401 assertEquals(TypeConverter.stringToDateNumber(" 1992/04/19 12: 33pm "), 33713);
402 assertEquals(TypeConverter.stringToDateNumber("1992/5/20 01:33am"), 33744);
403 assertEquals(TypeConverter.stringToDateNumber("1992/6/21 3:33pm"), 33776);
404 assertEquals(TypeConverter.stringToDateNumber("1992/9/29 3:33pm"), 33876);
405 assertEquals(TypeConverter.stringToDateNumber("1992/1/24 3:33pm"), 33627);
406 assertEquals(TypeConverter.stringToDateNumber("1992/12/21 3:33pm"), 33959);
407 assertEquals(TypeConverter.stringToDateNumber("1992/01/31 3:33pm"), 33634);
408 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 3:33pm"), 33616);
409 assertEquals(TypeConverter.stringToDateNumber("2004/2/29 3:33pm"), 38046);
410 assertEquals(TypeConverter.stringToDateNumber("2004/2/28 3:33pm "), 38045);
411 assertEquals(TypeConverter.stringToDateNumber("1999/1/13 3:33pm"), 36173);
412 assertEquals(TypeConverter.stringToDateNumber("1999/01/13 3:33pm"), 36173);
413 assertEquals(TypeConverter.stringToDateNumber("0999/01/13 3:33pm"), -329069);
414 assertEquals(TypeConverter.stringToDateNumber("1200/01/13 3:33pm"), -255656);
415 assertEquals(TypeConverter.stringToDateNumber("0029/01/13 3:33pm"), 47131);
416 assertEquals(TypeConverter.stringToDateNumber("0030/01/13 3:33pm"), 10971);
417 assertEquals(TypeConverter.stringToDateNumber("0044/01/13 3:33pm"), 16084);
418 assertEquals(TypeConverter.stringToDateNumber("0050/01/13 3:33pm"), 18276);
419 assertEquals(TypeConverter.stringToDateNumber("0097/01/13 00:33pm"), 35443);
420 assertEquals(TypeConverter.stringToDateNumber("0099/01/13 3:33pm"), 36173);
421 assertEquals(TypeConverter.stringToDateNumber("0000/01/13 3:33pm"), 36538);
422 assertEquals(TypeConverter.stringToDateNumber("0101/01/13 3:33pm"), -657057);
423 assertEquals(TypeConverter.stringToDateNumber("0100/01/13 3:33pm"), -657422);
424 assertEquals(TypeConverter.stringToDateNumber("100/12/31 3:33pm"), -657070);
425 assertEquals(TypeConverter.stringToDateNumber("122/11/10 3:33pm"), -649086);
426 assertEquals(TypeConverter.stringToDateNumber("2222/1/22 3:33pm"), 117631);
427 assertEquals(TypeConverter.stringToDateNumber("222/1/22 3:33pm"), -612854);
428 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 6:22222222am"), 49048); // overload minutes
429 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:720pm"), 33617); // overload minutes
430 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 00:720pm"), 33617); // overload minutes
431 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:719pm"), 33616); // overload minutes
432 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 00:720am"), 33616); // overload minutes
433 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 00:01pm"), 33616); // overload minutes
434 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:66669pm"), 33662); // overload minutes
435 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:66669am"), 33662); // overload minutes
436 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:66249pm"), 33662); // overload minutes
437 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:66249am"), 33662); // overload minutes
438 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:666669am"), 34078); // overload minutes
439 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:666669pm"), 34079); // overload minutes
440 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:100000000am"), 103060); // overload minutes
441 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:0912347287am"), 667190); // overload minutes
442 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:00000912347287am"), 667190); // overload minutes
443 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:1989198298am"), 1415003); // overload minutes
444 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 0:0:0"), 33779);
445 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 0000:0000:0000"), 33779);
446 assertEquals(TypeConverter.stringToDateNumber("0000/01/13 3:33:999999999"), 48112); // overload seconds
447 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 6:22222222:0"), 49048); // overload minutes
448 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:912347287:10"), 667191); // overload minutes
449 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:100000000:10"), 103060); // overload minutes
450 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 23:720:10"), 33617); // overload minutes
451 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 23:719:60"), 33617); // overload minutes, seconds
452 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 24:00:00"), 33780); // overload hours
453 assertEquals(TypeConverter.stringToDateNumber("1999/1/01 200000000:999999999:923231312"), 9074624); // overload hours, minutes, seconds
454 assertEquals(TypeConverter.stringToDateNumber(" 1992/04/19 12: 33: 11 "), 33713);
455 assertEquals(TypeConverter.stringToDateNumber("0000/01/13 3:33:33"), 36538);
456 assertEquals(TypeConverter.stringToDateNumber("4243/11/3 200000000:33:444"), 9189404);
457 assertEquals(TypeConverter.stringToDateNumber("1999/1/13 10:10:10pm"), 36173);
458 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 0:0:0pm"), 33779);
459 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 00:0000:0000pm"), 33779);
460 assertEquals(TypeConverter.stringToDateNumber("0000/01/13 3:33:999999999pm"), 48112); // overload seconds
461 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 6:22222222:0pm"), 49048); // overload minutes
462 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:912347287:10pm"), 667191); // overload minutes
463 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:100000000:10pm"), 103060); // overload minutes
464 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 00:00:00am"), 33779);
465 assertEquals(TypeConverter.stringToDateNumber("1992/06/24 01:44:00am "), 33779);
466 assertEquals(TypeConverter.stringToDateNumber("1999/1/01 02:59:00pm"), 36161);
467 assertEquals(TypeConverter.stringToDateNumber("2222/1/01 03:33:00pm"), 117610);
468 assertEquals(TypeConverter.stringToDateNumber("1902/9/02 12:33:00pm"), 976);
469 assertEquals(TypeConverter.stringToDateNumber("1902/9/2 12:33:00pm"), 976);
470 assertEquals(TypeConverter.stringToDateNumber("4243/11/3 12:33:00pm"), 856071);
471 assertEquals(TypeConverter.stringToDateNumber(" 1992/04/19 12: 33: 00 pm "), 33713);
472 assertEquals(TypeConverter.stringToDateNumber("1992/5/20 01:33:44am"), 33744);
473 assertEquals(TypeConverter.stringToDateNumber("1992/6/21 3:33:44pm"), 33776);
474 assertEquals(TypeConverter.stringToDateNumber("1992/9/29 3:33:44pm"), 33876);
475 assertEquals(TypeConverter.stringToDateNumber("1992/1/24 3:33:44pm"), 33627);
476 assertEquals(TypeConverter.stringToDateNumber("1992/12/21 3:33:44pm"), 33959);
477 assertEquals(TypeConverter.stringToDateNumber("1992/01/31 3:33:44pm"), 33634);
478 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 3:33:44pm"), 33616);
479 assertEquals(TypeConverter.stringToDateNumber("2004/2/29 3:33:44pm"), 38046);
480 assertEquals(TypeConverter.stringToDateNumber("2004/2/28 3:33:44pm "), 38045);
481 assertEquals(TypeConverter.stringToDateNumber("1999/1/13 3:33:44pm"), 36173);
482 assertEquals(TypeConverter.stringToDateNumber("1999/01/13 3:33:44pm"), 36173);
483 assertEquals(TypeConverter.stringToDateNumber("0999/01/13 3:33:44pm"), -329069);
484 assertEquals(TypeConverter.stringToDateNumber("1200/01/13 3:33:44pm"), -255656);
485 assertEquals(TypeConverter.stringToDateNumber("0029/01/13 3:33:44pm"), 47131);
486 assertEquals(TypeConverter.stringToDateNumber("0030/01/13 3:33:44pm"), 10971);
487 assertEquals(TypeConverter.stringToDateNumber("0044/01/13 3:33:44pm"), 16084);
488 assertEquals(TypeConverter.stringToDateNumber("0050/01/13 3:33:44pm"), 18276);
489 assertEquals(TypeConverter.stringToDateNumber("0097/01/13 00:33:44pm"), 35443);
490 assertEquals(TypeConverter.stringToDateNumber("0099/01/13 3:33:44pm"), 36173);
491 assertEquals(TypeConverter.stringToDateNumber("0000/01/13 3:33:44pm"), 36538);
492 assertEquals(TypeConverter.stringToDateNumber("0101/01/13 3:33:44pm"), -657057);
493 assertEquals(TypeConverter.stringToDateNumber("0100/01/13 3:33:44pm"), -657422);
494 assertEquals(TypeConverter.stringToDateNumber("100/12/31 3:33:44pm"), -657070);
495 assertEquals(TypeConverter.stringToDateNumber("122/11/10 3:33:44pm"), -649086);
496 assertEquals(TypeConverter.stringToDateNumber("2222/1/22 3:33:44pm"), 117631);
497 assertEquals(TypeConverter.stringToDateNumber("222/1/22 3:33:44pm"), -612854);
498 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 6:22222222:44am"), 49048); // overload minutes
499 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:720:00pm"), 33617); // overload minutes
500 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 00:720:00pm"), 33617); // overload minutes
501 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:719:00pm"), 33616); // overload minutes
502 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 00:720:00am"), 33616); // overload minutes
503 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:719:60pm"), 33617); // overload minutes
504 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 00:720:00am"), 33616); // overload minutes
505 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 00:01:00pm"), 33616); // overload minutes
506 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:66669:00pm"), 33662); // overload minutes
507 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:66669:00am"), 33662); // overload minutes
508 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:66249:00pm"), 33662); // overload minutes
509 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:66249:00am"), 33662); // overload minutes
510 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:666669:00am"), 34078); // overload minutes
511 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:666669:00pm"), 34079); // overload minutes
512 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:100000000:00am"), 103060); // overload minutes
513 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:912347287:00am"), 667190); // overload minutes
514 // YEAR_MONTHDIG_DAY, YYYY(fd)MM(fd)DD ===============================================================================
515 assertEquals(TypeConverter.stringToDateNumber("1992/6/24"), 33779);
516 assertEquals(TypeConverter.stringToDateNumber("1992/06/24"), 33779);
517 assertEquals(TypeConverter.stringToDateNumber("1999/1/01"), 36161);
518 assertEquals(TypeConverter.stringToDateNumber("2222/1/01"), 117610);
519 assertEquals(TypeConverter.stringToDateNumber("1902/9/02"), 976);
520 assertEquals(TypeConverter.stringToDateNumber("1902/9/2"), 976);
521 assertEquals(TypeConverter.stringToDateNumber("4243/11/3"), 856071);
522 assertEquals(TypeConverter.stringToDateNumber(" 1992/04/19 "), 33713);
523 assertEquals(TypeConverter.stringToDateNumber(" 1992 / 04/ 19 "), 33713);
524 assertEquals(TypeConverter.stringToDateNumber("1992/5/20"), 33744);
525 assertEquals(TypeConverter.stringToDateNumber("1992/6/21"), 33776);
526 assertEquals(TypeConverter.stringToDateNumber("1992/9/29"), 33876);
527 assertEquals(TypeConverter.stringToDateNumber("1992/1/24"), 33627);
528 assertEquals(TypeConverter.stringToDateNumber("1992/12/21"), 33959);
529 assertEquals(TypeConverter.stringToDateNumber("1992/01/31"), 33634);
530 assertEquals(TypeConverter.stringToDateNumber("1992/1/13"), 33616);
531 assertEquals(TypeConverter.stringToDateNumber("2004/2/29"), 38046);
532 assertEquals(TypeConverter.stringToDateNumber("2004/2/28"), 38045);
533 assertEquals(TypeConverter.stringToDateNumber("1999/1/13"), 36173);
534 assertEquals(TypeConverter.stringToDateNumber("1999/01/13"), 36173);
535 assertEquals(TypeConverter.stringToDateNumber("0999/01/13"), -329069);
536 assertEquals(TypeConverter.stringToDateNumber("1200/01/13"), -255656);
537 assertEquals(TypeConverter.stringToDateNumber("0029/01/13"), 47131);
538 assertEquals(TypeConverter.stringToDateNumber("0030/01/13"), 10971);
539 assertEquals(TypeConverter.stringToDateNumber("0044/01/13"), 16084);
540 assertEquals(TypeConverter.stringToDateNumber("0050/01/13"), 18276);
541 assertEquals(TypeConverter.stringToDateNumber("0097/01/13"), 35443);
542 assertEquals(TypeConverter.stringToDateNumber("0099/01/13"), 36173);
543 assertEquals(TypeConverter.stringToDateNumber("0000/01/13"), 36538);
544 assertEquals(TypeConverter.stringToDateNumber("0101/01/13"), -657057);
545 assertEquals(TypeConverter.stringToDateNumber("0100/01/13"), -657422);
546 assertEquals(TypeConverter.stringToDateNumber("100/12/31"), -657070);
547 assertEquals(TypeConverter.stringToDateNumber("122/11/10"), -649086);
548 assertEquals(TypeConverter.stringToDateNumber("2222/1/22"), 117631);
549 assertEquals(TypeConverter.stringToDateNumber("222/1/22"), -612854);
550 assertEquals(TypeConverter.stringToDateNumber("Sunday 1992/6/24"), 33779);
551 assertEquals(TypeConverter.stringToDateNumber("Monday 1992/6/24"), 33779);
552 assertEquals(TypeConverter.stringToDateNumber("Tuesday 1992/6/24"), 33779);
553 assertEquals(TypeConverter.stringToDateNumber("Wednesday 1992/6/24"), 33779);
554 assertEquals(TypeConverter.stringToDateNumber("Thursday 1992/6/24"), 33779);
555 assertEquals(TypeConverter.stringToDateNumber("Friday 1992/6/24"), 33779);
556 assertEquals(TypeConverter.stringToDateNumber("Saturday 1992/6/24"), 33779);
557 assertEquals(TypeConverter.stringToDateNumber("Sun 1992/6/24"), 33779);
558 assertEquals(TypeConverter.stringToDateNumber("Mon 1992/6/24"), 33779);
559 assertEquals(TypeConverter.stringToDateNumber("Tue 1992/6/24"), 33779);
560 assertEquals(TypeConverter.stringToDateNumber("Wed 1992/6/24"), 33779);
561 assertEquals(TypeConverter.stringToDateNumber("Thu 1992/6/24"), 33779);
562 assertEquals(TypeConverter.stringToDateNumber("Fri 1992/6/24"), 33779);
563 assertEquals(TypeConverter.stringToDateNumber("Sat 1992/6/24"), 33779);
564 assertEquals(TypeConverter.stringToDateNumber("Sunday, 1992/6/24"), 33779);
565 // delimiter tests
566 assertEquals(TypeConverter.stringToDateNumber("1992-6-24"), 33779);
567 assertEquals(TypeConverter.stringToDateNumber("1992/6/24"), 33779);
568 assertEquals(TypeConverter.stringToDateNumber("1992 6 24"), 33779);
569 assertEquals(TypeConverter.stringToDateNumber("1992 6 24"), 33779);
570 assertEquals(TypeConverter.stringToDateNumber("1992 . 6 . 24"), 33779);
571 assertEquals(TypeConverter.stringToDateNumber("1992 / 6 / 24"), 33779);
572 assertEquals(TypeConverter.stringToDateNumber("1992, 6, 24"), 33779);
573 // flex delimiter should not allow a comma without a space after it.
574 catchAndAssertEquals(function() {
575 TypeConverter.stringToDateNumber("Sunday,1992/6/24");
576 }, VALUE_ERROR);
577 // Leap day on non-leap years
578 catchAndAssertEquals(function() {
579 TypeConverter.stringToDateNumber("2005/2/29");
580 }, VALUE_ERROR);
581 catchAndAssertEquals(function() {
582 TypeConverter.stringToDateNumber("2001/2/29");
583 }, VALUE_ERROR);
584 // Out of range day for any month
585 catchAndAssertEquals(function() {
586 TypeConverter.stringToDateNumber("2005/1/44");
587 }, VALUE_ERROR);
588 // timestamp test
589 assertEquals(TypeConverter.stringToDateNumber("1992-6-24 10am"), 33779);
590 assertEquals(TypeConverter.stringToDateNumber("1992-6-24 10:10"), 33779);
591 assertEquals(TypeConverter.stringToDateNumber("1992-6-24 10:10am"), 33779);
592 assertEquals(TypeConverter.stringToDateNumber("1992-6-24 10:10:10"), 33779);
593 assertEquals(TypeConverter.stringToDateNumber("1992-6-24 10:10:10am"), 33779);
594 assertEquals(TypeConverter.stringToDateNumber("1992-6-24 10 am"), 33779);
595 assertEquals(TypeConverter.stringToDateNumber("1992-6-24 10: 10 "), 33779);
596 assertEquals(TypeConverter.stringToDateNumber("1992-6-24 10: 10 pm"), 33779);
597 assertEquals(TypeConverter.stringToDateNumber("1992-6-24 10: 10: 10"), 33779);
598 assertEquals(TypeConverter.stringToDateNumber("1992-6-24 10: 10: 10 am "), 33779);
599 assertEquals(TypeConverter.stringToDateNumber("1992/6/24 00am"), 33779);
600 assertEquals(TypeConverter.stringToDateNumber("1992/06/24 01am "), 33779);
601 assertEquals(TypeConverter.stringToDateNumber("1999/1/01 02pm"), 36161);
602 assertEquals(TypeConverter.stringToDateNumber("2222/1/01 03pm"), 117610);
603 assertEquals(TypeConverter.stringToDateNumber("1902/9/02 12pm"), 976);
604 assertEquals(TypeConverter.stringToDateNumber("1902/9/2 12pm"), 976);
605 assertEquals(TypeConverter.stringToDateNumber("4243/11/3 12pm "), 856071);
606 assertEquals(TypeConverter.stringToDateNumber(" 1992/04/19 12pm "), 33713);
607 assertEquals(TypeConverter.stringToDateNumber("1992/5/20 01am"), 33744);
608 assertEquals(TypeConverter.stringToDateNumber("1992/6/21 3pm"), 33776);
609 assertEquals(TypeConverter.stringToDateNumber("1992/9/29 3pm"), 33876);
610 assertEquals(TypeConverter.stringToDateNumber("1992/1/24 3pm"), 33627);
611 assertEquals(TypeConverter.stringToDateNumber("1992/12/21 3pm"), 33959);
612 assertEquals(TypeConverter.stringToDateNumber("1992/01/31 3pm"), 33634);
613 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 3pm"), 33616);
614 assertEquals(TypeConverter.stringToDateNumber("2004/2/29 3pm"), 38046);
615 assertEquals(TypeConverter.stringToDateNumber("2004/2/28 3pm "), 38045);
616 assertEquals(TypeConverter.stringToDateNumber("1999/1/13 3pm"), 36173);
617 assertEquals(TypeConverter.stringToDateNumber("1999/01/13 3pm"), 36173);
618 assertEquals(TypeConverter.stringToDateNumber("0999/01/13 3pm"), -329069);
619 assertEquals(TypeConverter.stringToDateNumber("1200/01/13 3pm"), -255656);
620 assertEquals(TypeConverter.stringToDateNumber("0029/01/13 3pm"), 47131);
621 assertEquals(TypeConverter.stringToDateNumber("0030/01/13 3pm"), 10971);
622 assertEquals(TypeConverter.stringToDateNumber("0044/01/13 3pm"), 16084);
623 assertEquals(TypeConverter.stringToDateNumber("0050/01/13 3pm"), 18276);
624 assertEquals(TypeConverter.stringToDateNumber("0097/01/13 00pm"), 35443);
625 assertEquals(TypeConverter.stringToDateNumber("0099/01/13 3pm"), 36173);
626 assertEquals(TypeConverter.stringToDateNumber("0000/01/13 3pm"), 36538);
627 assertEquals(TypeConverter.stringToDateNumber("0101/01/13 3pm"), -657057);
628 assertEquals(TypeConverter.stringToDateNumber("0100/01/13 3pm"), -657422);
629 assertEquals(TypeConverter.stringToDateNumber("100/12/31 3pm"), -657070);
630 assertEquals(TypeConverter.stringToDateNumber("122/11/10 3pm"), -649086);
631 assertEquals(TypeConverter.stringToDateNumber("2222/1/22 3pm"), 117631);
632 assertEquals(TypeConverter.stringToDateNumber("222/1/22 3pm"), -612854);
633 catchAndAssertEquals(function() {
634 TypeConverter.stringToDateNumber("2005/2/29 000pm");// Too many digits
635 }, VALUE_ERROR);
636 catchAndAssertEquals(function() {
637 TypeConverter.stringToDateNumber("2001/2/2 13pm");// Hour out of range
638 }, VALUE_ERROR);
639 // DAY_MONTHNAME_YEAR, DD(fd)Month(fd)YYYY ===========================================================================
640 assertEquals(TypeConverter.stringToDateNumber("Sun 09 Feb 2017"), 42775);
641 assertEquals(TypeConverter.stringToDateNumber("Sun 9 Feb 2017"), 42775);
642 assertEquals(TypeConverter.stringToDateNumber("Mon 09 Feb 2017"), 42775);
643 assertEquals(TypeConverter.stringToDateNumber("Thursday 09 Feb 2017"), 42775);
644 assertEquals(TypeConverter.stringToDateNumber("Thursday 09 February 2017"), 42775);
645 assertEquals(TypeConverter.stringToDateNumber("Sun 01 September 20"), 44075);
646 assertEquals(TypeConverter.stringToDateNumber("Sun, 09, Feb, 2017"), 42775);
647 assertEquals(TypeConverter.stringToDateNumber("20 May 1992"), 33744);
648 assertEquals(TypeConverter.stringToDateNumber("31 December 100"), -657070);
649 assertEquals(TypeConverter.stringToDateNumber("13 January 0030"), 10971);
650 assertEquals(TypeConverter.stringToDateNumber("13 January 1200"), -255656);
651 assertEquals(TypeConverter.stringToDateNumber("22 January 2222"), 117631);
652 assertEquals(TypeConverter.stringToDateNumber("3 November 4243"), 856071);
653 assertEquals(TypeConverter.stringToDateNumber("13 November 0999"), -328765);
654 assertEquals(TypeConverter.stringToDateNumber("13 November 1200"), -255351);
655 assertEquals(TypeConverter.stringToDateNumber("13 January 0029"), 47131);
656 assertEquals(TypeConverter.stringToDateNumber("13 January 0030"), 10971);
657 assertEquals(TypeConverter.stringToDateNumber("13 January 0044"), 16084);
658 assertEquals(TypeConverter.stringToDateNumber("13 January 0050"), 18276);
659 assertEquals(TypeConverter.stringToDateNumber("13 January 0097"), 35443);
660 assertEquals(TypeConverter.stringToDateNumber("13 January 0099"), 36173);
661 assertEquals(TypeConverter.stringToDateNumber("13 January 0000"), 36538);
662 assertEquals(TypeConverter.stringToDateNumber("13 January 0101"), -657057);
663 assertEquals(TypeConverter.stringToDateNumber("13 January 0100"), -657422);
664 assertEquals(TypeConverter.stringToDateNumber("01 Jan 2017"), 42736);
665 assertEquals(TypeConverter.stringToDateNumber("01 Feb 2017"), 42767);
666 assertEquals(TypeConverter.stringToDateNumber("01 Mar 2017"), 42795);
667 assertEquals(TypeConverter.stringToDateNumber("01 Apr 2017"), 42826);
668 assertEquals(TypeConverter.stringToDateNumber("01 May 2017"), 42856);
669 assertEquals(TypeConverter.stringToDateNumber("01 Jun 2017"), 42887);
670 assertEquals(TypeConverter.stringToDateNumber("01 Jul 2017"), 42917);
671 assertEquals(TypeConverter.stringToDateNumber("01 Aug 2017"), 42948);
672 assertEquals(TypeConverter.stringToDateNumber("01 Sep 2017"), 42979);
673 assertEquals(TypeConverter.stringToDateNumber("01 Oct 2017"), 43009);
674 assertEquals(TypeConverter.stringToDateNumber("01 Nov 2017"), 43040);
675 assertEquals(TypeConverter.stringToDateNumber(" 1 Dec 2017"), 43070);
676 assertEquals(TypeConverter.stringToDateNumber("20 Jan 2015"), 42024);
677 assertEquals(TypeConverter.stringToDateNumber("20 Feb 2015"), 42055);
678 assertEquals(TypeConverter.stringToDateNumber("20 Mar 2015"), 42083);
679 assertEquals(TypeConverter.stringToDateNumber("20 Apr 2015"), 42114);
680 assertEquals(TypeConverter.stringToDateNumber("20 May 2015"), 42144);
681 assertEquals(TypeConverter.stringToDateNumber("20 Jun 2015"), 42175);
682 assertEquals(TypeConverter.stringToDateNumber("20 Jul 2015"), 42205);
683 assertEquals(TypeConverter.stringToDateNumber("20 Aug 2015"), 42236);
684 assertEquals(TypeConverter.stringToDateNumber("20 Sep 2015"), 42267);
685 assertEquals(TypeConverter.stringToDateNumber("20 Oct 2015"), 42297);
686 assertEquals(TypeConverter.stringToDateNumber("20 Nov 2015"), 42328);
687 assertEquals(TypeConverter.stringToDateNumber("20 Dec 2015"), 42358);
688 assertEquals(TypeConverter.stringToDateNumber("29 Feb 2004"), 38046); // leap year, 29th ok
689 catchAndAssertEquals(function() {
690 TypeConverter.stringToDateNumber("29 Feb 2001");// not leap year, 29th not ok
691 }, VALUE_ERROR);
692 catchAndAssertEquals(function() {
693 TypeConverter.stringToDateNumber("32 June 2001");// overload numbers not ok
694 }, VALUE_ERROR);
695 // delimiter tests
696 assertEquals(TypeConverter.stringToDateNumber("Sun, 09, Feb, 2017"), 42775);
697 assertEquals(TypeConverter.stringToDateNumber("Sun, 09/Feb/2017"), 42775);
698 assertEquals(TypeConverter.stringToDateNumber("09/Feb/2017"), 42775);
699 assertEquals(TypeConverter.stringToDateNumber("09-Feb-2017"), 42775);
700 assertEquals(TypeConverter.stringToDateNumber("09.Feb.2017"), 42775);
701 assertEquals(TypeConverter.stringToDateNumber("09 Feb/2017"), 42775);
702 assertEquals(TypeConverter.stringToDateNumber("09 . Feb . 2017"), 42775);
703 // If the delimiters don't match the first one should be a space.
704 catchAndAssertEquals(function() {
705 TypeConverter.stringToDateNumber("09.Feb/2017");
706 }, VALUE_ERROR);
707 // Comma delimiters should be followed by spaces.
708 catchAndAssertEquals(function() {
709 TypeConverter.stringToDateNumber("09,Feb,2017");
710 }, VALUE_ERROR);
711 // timestamp tests
712 assertEquals(TypeConverter.stringToDateNumber("24/June/1992 10am"), 33779);
713 assertEquals(TypeConverter.stringToDateNumber("24/June/1992 10:10"), 33779);
714 assertEquals(TypeConverter.stringToDateNumber("24/June/1992 10:10am"), 33779);
715 assertEquals(TypeConverter.stringToDateNumber("24/June/1992 10:10:10"), 33779);
716 assertEquals(TypeConverter.stringToDateNumber("24/June/1992 10:10:10am"), 33779);
717 assertEquals(TypeConverter.stringToDateNumber("24/June/1992 10 am"), 33779);
718 assertEquals(TypeConverter.stringToDateNumber("24/June/1992 10: 10 "), 33779);
719 assertEquals(TypeConverter.stringToDateNumber("24/June/1992 10: 10 pm"), 33779);
720 assertEquals(TypeConverter.stringToDateNumber("24/June/1992 10: 10: 10"), 33779);
721 assertEquals(TypeConverter.stringToDateNumber("24/June/1992 10: 10: 10 am "), 33779);
722 // MONTHNAME_DAY_YEAR, Month(fd)DD(fd)YYYY, 'Aug 19 2020' ============================================================
723 assertEquals(TypeConverter.stringToDateNumber("Sun Feb 09 2017"), 42775);
724 assertEquals(TypeConverter.stringToDateNumber("Sun Feb 9 2017"), 42775);
725 assertEquals(TypeConverter.stringToDateNumber("Mon Feb 09 2017"), 42775);
726 assertEquals(TypeConverter.stringToDateNumber("Thursday Feb 09 2017"), 42775);
727 assertEquals(TypeConverter.stringToDateNumber("Thursday February 09 2017"), 42775);
728 assertEquals(TypeConverter.stringToDateNumber("Sun September 01 20"), 44075);
729 assertEquals(TypeConverter.stringToDateNumber("Sun, Feb, 09, 2017"), 42775);
730 assertEquals(TypeConverter.stringToDateNumber("May 20 1992"), 33744);
731 assertEquals(TypeConverter.stringToDateNumber("December 31 100"), -657070);
732 assertEquals(TypeConverter.stringToDateNumber("January 13 0030"), 10971);
733 assertEquals(TypeConverter.stringToDateNumber("January 13 1200"), -255656);
734 assertEquals(TypeConverter.stringToDateNumber("January 22 2222"), 117631);
735 assertEquals(TypeConverter.stringToDateNumber("November 3 4243"), 856071);
736 assertEquals(TypeConverter.stringToDateNumber("Feb 29 2004"), 38046); // leap year, 29th ok
737 catchAndAssertEquals(function() {
738 TypeConverter.stringToDateNumber("Feb 29 2001");// not leap year, 29th not ok
739 }, VALUE_ERROR);
740 catchAndAssertEquals(function() {
741 TypeConverter.stringToDateNumber("June 32 2001");// overload numbers not ok
742 }, VALUE_ERROR);
743 // YEAR_MONTHDIG, YYYY(fd)MM, '1992/06' ==============================================================================
744 assertEquals(TypeConverter.stringToDateNumber("2017/01"), 42736);
745 assertEquals(TypeConverter.stringToDateNumber("2017/02"), 42767);
746 assertEquals(TypeConverter.stringToDateNumber("2017/03"), 42795);
747 assertEquals(TypeConverter.stringToDateNumber("2017/04"), 42826);
748 assertEquals(TypeConverter.stringToDateNumber("2017/05"), 42856);
749 assertEquals(TypeConverter.stringToDateNumber("2017/06"), 42887);
750 assertEquals(TypeConverter.stringToDateNumber("2017/07"), 42917);
751 assertEquals(TypeConverter.stringToDateNumber("2017/08"), 42948);
752 assertEquals(TypeConverter.stringToDateNumber("2017/09"), 42979);
753 assertEquals(TypeConverter.stringToDateNumber("2017/10"), 43009);
754 assertEquals(TypeConverter.stringToDateNumber("2017/11"), 43040);
755 assertEquals(TypeConverter.stringToDateNumber("2017/12"), 43070);
756 assertEquals(TypeConverter.stringToDateNumber("2017/01"), 42736);
757 // delimiter tests
758 assertEquals(TypeConverter.stringToDateNumber("Thursday 2017/01"), 42736);
759 assertEquals(TypeConverter.stringToDateNumber("Thursday, 2017/01"), 42736);
760 assertEquals(TypeConverter.stringToDateNumber("2017/01"), 42736);
761 assertEquals(TypeConverter.stringToDateNumber("2017-01"), 42736);
762 assertEquals(TypeConverter.stringToDateNumber("2017. 01"), 42736);
763 assertEquals(TypeConverter.stringToDateNumber("2017 01"), 42736);
764 assertEquals(TypeConverter.stringToDateNumber("2017, 01"), 42736);
765 // Comma and period delimiters should be followed by spaces.
766 catchAndAssertEquals(function() {
767 TypeConverter.stringToDateNumber("2017,01");
768 }, VALUE_ERROR);
769 catchAndAssertEquals(function() {
770 TypeConverter.stringToDateNumber("2017.01");
771 }, VALUE_ERROR);
772 // timestamp test
773 assertEquals(TypeConverter.stringToDateNumber("2017-01 10am"), 42736);
774 assertEquals(TypeConverter.stringToDateNumber("2017-01 10:10"), 42736);
775 assertEquals(TypeConverter.stringToDateNumber("2017-01 10:10am"), 42736);
776 assertEquals(TypeConverter.stringToDateNumber("2017-01 10:10:10"), 42736);
777 assertEquals(TypeConverter.stringToDateNumber("2017-01 10:10:10am"), 42736);
778 assertEquals(TypeConverter.stringToDateNumber("2017-01 10 am"), 42736);
779 assertEquals(TypeConverter.stringToDateNumber("2017-01 10: 10 "), 42736);
780 assertEquals(TypeConverter.stringToDateNumber("2017-01 10: 10 pm"), 42736);
781 assertEquals(TypeConverter.stringToDateNumber("2017-01 10: 10: 10"), 42736);
782 assertEquals(TypeConverter.stringToDateNumber("2017-01 10: 10: 10 am "), 42736);
783 // MONTHDIG_YEAR, MM(fd)YYYY, '06/1992' ================================================================================
784 assertEquals(TypeConverter.stringToDateNumber("01/2017"), 42736);
785 assertEquals(TypeConverter.stringToDateNumber("02/2017"), 42767);
786 assertEquals(TypeConverter.stringToDateNumber("03/2017"), 42795);
787 assertEquals(TypeConverter.stringToDateNumber("04/2017"), 42826);
788 assertEquals(TypeConverter.stringToDateNumber("05/2017"), 42856);
789 assertEquals(TypeConverter.stringToDateNumber("06/2017"), 42887);
790 assertEquals(TypeConverter.stringToDateNumber("07/2017"), 42917);
791 assertEquals(TypeConverter.stringToDateNumber("08/2017"), 42948);
792 assertEquals(TypeConverter.stringToDateNumber("09/2017"), 42979);
793 assertEquals(TypeConverter.stringToDateNumber("10/2017"), 43009);
794 assertEquals(TypeConverter.stringToDateNumber("11/2017"), 43040);
795 assertEquals(TypeConverter.stringToDateNumber("12/2017"), 43070);
796 // delimiter tests
797 assertEquals(TypeConverter.stringToDateNumber("Thursday 01/2017"), 42736);
798 assertEquals(TypeConverter.stringToDateNumber("Thursday, 01/2017"), 42736);
799 assertEquals(TypeConverter.stringToDateNumber("1/2017"), 42736);
800 assertEquals(TypeConverter.stringToDateNumber("01-2017"), 42736);
801 assertEquals(TypeConverter.stringToDateNumber("01. 2017"), 42736);
802 assertEquals(TypeConverter.stringToDateNumber("01, 2017"), 42736);
803 // Comma, period delimiters should be followed by spaces.
804 catchAndAssertEquals(function() {
805 TypeConverter.stringToDateNumber("01,2017");
806 }, VALUE_ERROR);
807 catchAndAssertEquals(function() {
808 TypeConverter.stringToDateNumber("01.2017");
809 }, VALUE_ERROR);
810 // 0 is not a month
811 catchAndAssertEquals(function() {
812 TypeConverter.stringToDateNumber("0/2017");
813 }, VALUE_ERROR);
814 // timestamp test
815 assertEquals(TypeConverter.stringToDateNumber("01-2017 10am"), 42736);
816 assertEquals(TypeConverter.stringToDateNumber("01-2017 10:10"), 42736);
817 assertEquals(TypeConverter.stringToDateNumber("01-2017 10:10am"), 42736);
818 assertEquals(TypeConverter.stringToDateNumber("01-2017 10:10:10"), 42736);
819 assertEquals(TypeConverter.stringToDateNumber("01-2017 10:10:10am"), 42736);
820 assertEquals(TypeConverter.stringToDateNumber("01-2017 10 am"), 42736);
821 assertEquals(TypeConverter.stringToDateNumber("01-2017 10: 10 "), 42736);
822 assertEquals(TypeConverter.stringToDateNumber("01-2017 10: 10 pm"), 42736);
823 assertEquals(TypeConverter.stringToDateNumber("01-2017 10: 10: 10"), 42736);
824 assertEquals(TypeConverter.stringToDateNumber("01-2017 10: 10: 10 am "), 42736);
825 // YEAR_MONTHNAME, YYYY(fd)Month, '1992/Aug' =========================================================================
826 assertEquals(TypeConverter.stringToDateNumber("2017 January"), 42736);
827 assertEquals(TypeConverter.stringToDateNumber("2017 February"), 42767);
828 assertEquals(TypeConverter.stringToDateNumber("2017 March"), 42795);
829 assertEquals(TypeConverter.stringToDateNumber("2017 April"), 42826);
830 assertEquals(TypeConverter.stringToDateNumber("2017 May"), 42856);
831 assertEquals(TypeConverter.stringToDateNumber("2017 June"), 42887);
832 assertEquals(TypeConverter.stringToDateNumber("2017 July"), 42917);
833 assertEquals(TypeConverter.stringToDateNumber("2017 August"), 42948);
834 assertEquals(TypeConverter.stringToDateNumber("2017 September"), 42979);
835 assertEquals(TypeConverter.stringToDateNumber("2017 October"), 43009);
836 assertEquals(TypeConverter.stringToDateNumber("2017 November"), 43040);
837 assertEquals(TypeConverter.stringToDateNumber("2017 December"), 43070);
838 // delimiter tests
839 assertEquals(TypeConverter.stringToDateNumber("Thursday 2017 January"), 42736);
840 assertEquals(TypeConverter.stringToDateNumber("Thursday, 2017 January"), 42736);
841 assertEquals(TypeConverter.stringToDateNumber("2017/January"), 42736);
842 assertEquals(TypeConverter.stringToDateNumber("2017-January"), 42736);
843 assertEquals(TypeConverter.stringToDateNumber("2017. January"), 42736);
844 assertEquals(TypeConverter.stringToDateNumber("2017, January"), 42736);
845 // Comma delimiters should be followed by spaces.
846 catchAndAssertEquals(function() {
847 TypeConverter.stringToDateNumber("2017,January");
848 }, VALUE_ERROR);
849 catchAndAssertEquals(function() {
850 TypeConverter.stringToDateNumber("2017.January");
851 }, VALUE_ERROR);
852 // timestamp test
853 assertEquals(TypeConverter.stringToDateNumber("2017-January 10am"), 42736);
854 assertEquals(TypeConverter.stringToDateNumber("2017-January 10:10"), 42736);
855 assertEquals(TypeConverter.stringToDateNumber("2017-January 10:10am"), 42736);
856 assertEquals(TypeConverter.stringToDateNumber("2017-January 10:10:10"), 42736);
857 assertEquals(TypeConverter.stringToDateNumber("2017-January 10:10:10am"), 42736);
858 assertEquals(TypeConverter.stringToDateNumber("2017-January 10 am"), 42736);
859 assertEquals(TypeConverter.stringToDateNumber("2017-January 10: 10 "), 42736);
860 assertEquals(TypeConverter.stringToDateNumber("2017-January 10: 10 pm"), 42736);
861 assertEquals(TypeConverter.stringToDateNumber("2017-January 10: 10: 10"), 42736);
862 assertEquals(TypeConverter.stringToDateNumber("2017-January 10: 10: 10 am "), 42736);
863 // MONTHNAME_YEAR, Month(fd)YYYY, 'Aug 1992' =========================================================================
864 assertEquals(TypeConverter.stringToDateNumber("January 2017"), 42736);
865 assertEquals(TypeConverter.stringToDateNumber("February 2017"), 42767);
866 assertEquals(TypeConverter.stringToDateNumber("March 2017"), 42795);
867 assertEquals(TypeConverter.stringToDateNumber("April 2017"), 42826);
868 assertEquals(TypeConverter.stringToDateNumber("May 2017"), 42856);
869 assertEquals(TypeConverter.stringToDateNumber("June 2017"), 42887);
870 assertEquals(TypeConverter.stringToDateNumber("July 2017"), 42917);
871 assertEquals(TypeConverter.stringToDateNumber("August 2017"), 42948);
872 assertEquals(TypeConverter.stringToDateNumber("September 2017"), 42979);
873 assertEquals(TypeConverter.stringToDateNumber("October 2017"), 43009);
874 assertEquals(TypeConverter.stringToDateNumber("November 2017"), 43040);
875 assertEquals(TypeConverter.stringToDateNumber("December 2017"), 43070);
876 assertEquals(TypeConverter.stringToDateNumber(" Feb 2017 "), 42767);
877 assertEquals(TypeConverter.stringToDateNumber("Feb-2017"), 42767);
878 assertEquals(TypeConverter.stringToDateNumber("Feb. 2017"), 42767);
879 assertEquals(TypeConverter.stringToDateNumber("Feb/2017"), 42767);
880 assertEquals(TypeConverter.stringToDateNumber("Feb . 2017"), 42767);
881 assertEquals(TypeConverter.stringToDateNumber("Feb - 2017"), 42767);
882 assertEquals(TypeConverter.stringToDateNumber("January 0030"), 10959);
883 assertEquals(TypeConverter.stringToDateNumber("November 4243"), 856069);
884 assertEquals(TypeConverter.stringToDateNumber("December 0100"), -657100);
885 assertEquals(TypeConverter.stringToDateNumber("Jan 2017"), 42736);
886 assertEquals(TypeConverter.stringToDateNumber("Feb 2017"), 42767);
887 assertEquals(TypeConverter.stringToDateNumber("Mar 2017"), 42795);
888 assertEquals(TypeConverter.stringToDateNumber("Apr 2017"), 42826);
889 assertEquals(TypeConverter.stringToDateNumber("May 2017"), 42856);
890 assertEquals(TypeConverter.stringToDateNumber("Jun 2017"), 42887);
891 assertEquals(TypeConverter.stringToDateNumber("Jul 2017"), 42917);
892 assertEquals(TypeConverter.stringToDateNumber("Aug 2017"), 42948);
893 assertEquals(TypeConverter.stringToDateNumber("Sep 2017"), 42979);
894 assertEquals(TypeConverter.stringToDateNumber("Oct 2017"), 43009);
895 assertEquals(TypeConverter.stringToDateNumber("Nov 2017"), 43040);
896 assertEquals(TypeConverter.stringToDateNumber("Dec 2017"), 43070);
897 assertEquals(TypeConverter.stringToDateNumber("Feb, 2017"), 42767);
898 catchAndAssertEquals(function() {
899 TypeConverter.stringToDateNumber("December 100");// need 4 digits
900 }, VALUE_ERROR);
901 catchAndAssertEquals(function() {
902 TypeConverter.stringToDateNumber("Dec.20");// need space after if using period
903 }, VALUE_ERROR);
904 // delimiter tests
905 assertEquals(TypeConverter.stringToDateNumber("Thursday January 2017"), 42736);
906 assertEquals(TypeConverter.stringToDateNumber("Thursday, January 2017"), 42736);
907 assertEquals(TypeConverter.stringToDateNumber("January/2017"), 42736);
908 assertEquals(TypeConverter.stringToDateNumber("January-2017"), 42736);
909 assertEquals(TypeConverter.stringToDateNumber("January. 2017"), 42736);
910 assertEquals(TypeConverter.stringToDateNumber("January, 2017"), 42736);
911 // Comma, period delimiters should be followed by spaces.
912 catchAndAssertEquals(function() {
913 TypeConverter.stringToDateNumber("January,2017");
914 }, VALUE_ERROR);
915 catchAndAssertEquals(function() {
916 TypeConverter.stringToDateNumber("January.2017");
917 }, VALUE_ERROR);
918 // timestamp test
919 assertEquals(TypeConverter.stringToDateNumber("January-2017 10am"), 42736);
920 assertEquals(TypeConverter.stringToDateNumber("January-2017 10:10"), 42736);
921 assertEquals(TypeConverter.stringToDateNumber("January-2017 10:10am"), 42736);
922 assertEquals(TypeConverter.stringToDateNumber("January-2017 10:10:10"), 42736);
923 assertEquals(TypeConverter.stringToDateNumber("January-2017 10:10:10am"), 42736);
924 assertEquals(TypeConverter.stringToDateNumber("January-2017 10 am"), 42736);
925 assertEquals(TypeConverter.stringToDateNumber("January-2017 10: 10 "), 42736);
926 assertEquals(TypeConverter.stringToDateNumber("January-2017 10: 10 pm"), 42736);
927 assertEquals(TypeConverter.stringToDateNumber("January-2017 10: 10: 10"), 42736);
928 assertEquals(TypeConverter.stringToDateNumber("January-2017 10: 10: 10 am "), 42736);
929 assertEquals(TypeConverter.stringToDateNumber("January-2000 100000000:100000000:100000000"), 4273794);
930 assertEquals(TypeConverter.stringToDateNumber("1999/1/01 00200000000:00000999999999:00000923231312"), 9074624);
931 assertEquals(TypeConverter.stringToDateNumber("1992/1/13 12:00001989198298am"), 1415003);
932 catchAndAssertEquals(function() {
933 TypeConverter.stringToDateNumber("1992/1/13 12:000019891982980am");
934 }, VALUE_ERROR);
935 catchAndAssertEquals(function() {
936 TypeConverter.stringToDateNumber("January-2000 100000000:100000000:1001000000");
937 }, VALUE_ERROR);
938 // MONTHDIG_DAYDIG, MM(fd)DD, '09/01' =========================================================================
939 lockDate(2017, 9, 24, 10, 55, 23);
940 assertEquals(TypeConverter.stringToDateNumber("01/09"), 42744);
941 assertEquals(TypeConverter.stringToDateNumber("02/09"), 42775);
942 assertEquals(TypeConverter.stringToDateNumber("03/09"), 42803);
943 assertEquals(TypeConverter.stringToDateNumber("04/09"), 42834);
944 assertEquals(TypeConverter.stringToDateNumber("05/09"), 42864);
945 assertEquals(TypeConverter.stringToDateNumber("06/09"), 42895);
946 assertEquals(TypeConverter.stringToDateNumber("07/09"), 42925);
947 assertEquals(TypeConverter.stringToDateNumber("08/09"), 42956);
948 assertEquals(TypeConverter.stringToDateNumber("09/09"), 42987);
949 assertEquals(TypeConverter.stringToDateNumber("10/09"), 43017);
950 assertEquals(TypeConverter.stringToDateNumber("11/09"), 43048);
951 assertEquals(TypeConverter.stringToDateNumber("12/09"), 43078);
952 assertEquals(TypeConverter.stringToDateNumber("01/01"), 42736);
953 assertEquals(TypeConverter.stringToDateNumber("01/02"), 42737);
954 assertEquals(TypeConverter.stringToDateNumber("01/03"), 42738);
955 assertEquals(TypeConverter.stringToDateNumber("01/04"), 42739);
956 assertEquals(TypeConverter.stringToDateNumber("01/05"), 42740);
957 assertEquals(TypeConverter.stringToDateNumber("01/29"), 42764);
958 assertEquals(TypeConverter.stringToDateNumber("01/30"), 42765);
959 assertEquals(TypeConverter.stringToDateNumber("01/31"), 42766);
960 assertEquals(TypeConverter.stringToDateNumber("01/09 10:10:10am"), 42744);
961 assertEquals(TypeConverter.stringToDateNumber("01/09 10:10:100000"), 42745);
962 assertEquals(TypeConverter.stringToDateNumber("08/09 10:10:100000"), 42957);
963 assertEquals(TypeConverter.stringToDateNumber("01/02 10am"), 42737);
964 assertEquals(TypeConverter.stringToDateNumber("01/02 10:10"), 42737);
965 assertEquals(TypeConverter.stringToDateNumber("01/02 10:10am"), 42737);
966 assertEquals(TypeConverter.stringToDateNumber("01/02 10:10:10"), 42737);
967 assertEquals(TypeConverter.stringToDateNumber("01/02 10:10:10am"), 42737);
968 assertEquals(TypeConverter.stringToDateNumber("01/02 10 am"), 42737);
969 assertEquals(TypeConverter.stringToDateNumber("01/02 10: 10: 10 am "), 42737);
970});
971
972
973test("TypeConverter.stringToTimeNumber", function () {
974 assertEquals(TypeConverter.stringToTimeNumber("12:00pm"), 0.5);
975 assertEquals(TypeConverter.stringToTimeNumber("12:00"), 0.5);
976 assertEquals(TypeConverter.stringToTimeNumber("12pm"), 0.5);
977 assertEquals(TypeConverter.stringToTimeNumber("10:10am"), 0.4236111111111111);
978 assertEquals(TypeConverter.stringToTimeNumber("10:10:10am"), 0.4237268518518518);
979 assertEquals(TypeConverter.stringToTimeNumber("22:10:10"), 0.9237268518518519);
980 assertEquals(TypeConverter.stringToTimeNumber("1:10:10"), 0.048726851851851855);
981 assertEquals(TypeConverter.stringToTimeNumber("25:10:10"), 0.048726851851851855);
982});