1 use js_sys::*;
2 use wasm_bindgen::JsCast;
3 use wasm_bindgen::JsValue;
4 use wasm_bindgen_test::*;
5
6 #[wasm_bindgen_test]
get_date()7 fn get_date() {
8 let date = Date::new(&"August 19, 1975 23:15:30".into());
9 assert_eq!(date.get_date(), 19);
10 }
11
12 #[wasm_bindgen_test]
get_day()13 fn get_day() {
14 let date = Date::new(&"August 19, 1975 23:15:30".into());
15 assert_eq!(date.get_day(), 2);
16 }
17
18 #[wasm_bindgen_test]
get_full_year()19 fn get_full_year() {
20 let date = Date::new(&"July 20, 1969 00:20:18".into());
21 let abbr = Date::new(&"Thu, 06 Sep 12 00:00:00".into());
22
23 assert_eq!(date.get_full_year(), 1969);
24 assert_eq!(abbr.get_full_year(), 2012);
25 }
26
27 #[wasm_bindgen_test]
get_hours()28 fn get_hours() {
29 let date = Date::new(&"March 13, 08 04:20".into());
30 assert_eq!(date.get_hours(), 4);
31 }
32
33 #[wasm_bindgen_test]
get_milliseconds()34 fn get_milliseconds() {
35 let date = Date::new(&"1995-12-17T09:24:00Z".into());
36 let ms = Date::new(&"1995-12-17T09:24:00.123Z".into());
37
38 assert_eq!(date.get_milliseconds(), 0);
39 assert_eq!(ms.get_milliseconds(), 123);
40 }
41
42 #[wasm_bindgen_test]
get_minutes()43 fn get_minutes() {
44 let date = Date::new(&"March 13, 08 04:20".into());
45
46 assert_eq!(date.get_minutes(), 20);
47 }
48
49 #[wasm_bindgen_test]
get_month()50 fn get_month() {
51 let date = Date::new(&"July 20, 69 00:20:18".into());
52
53 assert_eq!(date.get_month(), 6);
54 }
55
56 #[wasm_bindgen_test]
get_seconds()57 fn get_seconds() {
58 let date = Date::new(&"July 20, 69 00:20:18".into());
59
60 assert_eq!(date.get_seconds(), 18);
61 }
62
63 #[wasm_bindgen_test]
get_time()64 fn get_time() {
65 let date = Date::new(&"July 20, 69 00:20:18 GMT+00:00".into());
66
67 assert_eq!(date.get_time(), -14254782000.0);
68 }
69
70 #[wasm_bindgen_test]
get_timezone_offset()71 fn get_timezone_offset() {
72 let date1 = Date::new(&"August 19, 1975 23:15:30 GMT+07:00".into());
73 let date2 = Date::new(&"August 19, 1975 23:15:30 GMT-02:00".into());
74 assert_eq!(date1.get_timezone_offset(), date2.get_timezone_offset());
75 }
76
77 #[wasm_bindgen_test]
get_utc_date()78 fn get_utc_date() {
79 let date1 = Date::new(&"August 19, 1975 23:15:30 GMT+11:00".into());
80 let date2 = Date::new(&"August 19, 1975 23:15:30 GMT-11:00".into());
81 assert_eq!(date1.get_utc_date(), 19);
82 assert_eq!(date2.get_utc_date(), 20);
83 }
84
85 #[wasm_bindgen_test]
get_utc_day()86 fn get_utc_day() {
87 let date1 = Date::new(&"August 19, 1975 23:15:30 GMT+11:00".into());
88 let date2 = Date::new(&"August 19, 1975 23:15:30 GMT-11:00".into());
89
90 assert_eq!(date1.get_utc_day(), 2);
91 assert_eq!(date2.get_utc_day(), 3);
92 }
93
94 #[wasm_bindgen_test]
get_utc_full_year()95 fn get_utc_full_year() {
96 let date1 = Date::new(&"December 31, 1975, 23:15:30 GMT+11:00".into());
97 let date2 = Date::new(&"December 31, 1975, 23:15:30 GMT-11:00".into());
98 assert_eq!(date1.get_utc_full_year(), 1975);
99 assert_eq!(date2.get_utc_full_year(), 1976);
100 }
101
102 #[wasm_bindgen_test]
get_utc_hours()103 fn get_utc_hours() {
104 let date1 = Date::new(&"December 31, 1975, 23:15:30 GMT+11:00".into());
105 let date2 = Date::new(&"December 31, 1975, 23:15:30 GMT-11:00".into());
106
107 assert_eq!(date1.get_utc_hours(), 12);
108 assert_eq!(date2.get_utc_hours(), 10);
109 }
110
111 #[wasm_bindgen_test]
get_utc_milliseconds()112 fn get_utc_milliseconds() {
113 let date = Date::new(&"2018-01-02T03:04:05.678Z".into());
114 assert_eq!(date.get_utc_milliseconds(), 678);
115 }
116
117 #[wasm_bindgen_test]
get_utc_minutes()118 fn get_utc_minutes() {
119 let date1 = Date::new(&"1 January 2000 03:15:30 GMT+07:00".into());
120 let date2 = Date::new(&"1 January 2000 03:15:30 GMT+03:30".into());
121 assert_eq!(date1.get_utc_minutes(), 15);
122 assert_eq!(date2.get_utc_minutes(), 45);
123 }
124
125 #[wasm_bindgen_test]
get_utc_month()126 fn get_utc_month() {
127 let date1 = Date::new(&"December 31, 1975, 23:15:30 GMT+11:00".into());
128 let date2 = Date::new(&"December 31, 1975, 23:15:30 GMT-11:00".into());
129
130 assert_eq!(date1.get_utc_month(), 11);
131 assert_eq!(date2.get_utc_month(), 0);
132 }
133
134 #[wasm_bindgen_test]
get_utc_seconds()135 fn get_utc_seconds() {
136 let date = Date::new(&"July 20, 1969, 20:18:04 UTC".into());
137
138 assert_eq!(date.get_utc_seconds(), 4);
139 }
140
141 #[wasm_bindgen_test]
new()142 fn new() {
143 assert!(JsValue::from(Date::new(&JsValue::undefined())).is_object());
144 }
145
146 #[wasm_bindgen_test]
new_with_year_month()147 fn new_with_year_month() {
148 let date1 = Date::new_with_year_month(1975, 7);
149
150 assert_eq!(date1.get_full_year(), 1975);
151 assert_eq!(date1.get_month(), 7);
152 }
153
154 #[wasm_bindgen_test]
new_with_year_month_day()155 fn new_with_year_month_day() {
156 let date1 = Date::new_with_year_month_day(1975, 7, 8);
157
158 assert_eq!(date1.get_full_year(), 1975);
159 assert_eq!(date1.get_month(), 7);
160 assert_eq!(date1.get_date(), 8);
161 }
162
163 #[wasm_bindgen_test]
new_with_year_month_day_hr()164 fn new_with_year_month_day_hr() {
165 let date1 = Date::new_with_year_month_day_hr(1975, 7, 8, 4);
166
167 assert_eq!(date1.get_full_year(), 1975);
168 assert_eq!(date1.get_month(), 7);
169 assert_eq!(date1.get_date(), 8);
170 assert_eq!(date1.get_hours(), 4);
171 }
172
173 #[wasm_bindgen_test]
new_with_year_month_day_hr_min()174 fn new_with_year_month_day_hr_min() {
175 let date1 = Date::new_with_year_month_day_hr_min(1975, 7, 8, 4, 35);
176
177 assert_eq!(date1.get_full_year(), 1975);
178 assert_eq!(date1.get_month(), 7);
179 assert_eq!(date1.get_date(), 8);
180 assert_eq!(date1.get_hours(), 4);
181 assert_eq!(date1.get_minutes(), 35);
182 }
183
184 #[wasm_bindgen_test]
new_with_year_month_day_hr_min_sec()185 fn new_with_year_month_day_hr_min_sec() {
186 let date1 = Date::new_with_year_month_day_hr_min_sec(1975, 7, 8, 4, 35, 25);
187
188 assert_eq!(date1.get_full_year(), 1975);
189 assert_eq!(date1.get_month(), 7);
190 assert_eq!(date1.get_date(), 8);
191 assert_eq!(date1.get_hours(), 4);
192 assert_eq!(date1.get_minutes(), 35);
193 assert_eq!(date1.get_seconds(), 25);
194 }
195
196 #[wasm_bindgen_test]
new_with_year_month_day_hr_min_sec_milli()197 fn new_with_year_month_day_hr_min_sec_milli() {
198 let date1 = Date::new_with_year_month_day_hr_min_sec_milli(1975, 7, 8, 4, 35, 25, 300);
199
200 assert_eq!(date1.get_full_year(), 1975);
201 assert_eq!(date1.get_month(), 7);
202 assert_eq!(date1.get_date(), 8);
203 assert_eq!(date1.get_hours(), 4);
204 assert_eq!(date1.get_minutes(), 35);
205 assert_eq!(date1.get_seconds(), 25);
206 assert_eq!(date1.get_milliseconds(), 300);
207 }
208
209 #[wasm_bindgen_test]
now()210 fn now() {
211 assert!(Date::now() > 0.);
212 }
213
214 #[wasm_bindgen_test]
parse()215 fn parse() {
216 let date = Date::parse("04 Dec 1995 00:12:00 GMT");
217 let zero = Date::parse("01 Jan 1970 00:00:00 GMT");
218
219 assert_eq!(date, 818035920000.0);
220 assert_eq!(zero, 0.0);
221 }
222
223 #[wasm_bindgen_test]
set_date()224 fn set_date() {
225 let event1 = Date::new(&"August 19, 1975 23:15:30".into());
226 let event2 = Date::new(&"August 24, 1975 23:15:30".into());
227
228 let ms = event1.set_date(24);
229
230 assert_eq!(ms, event2.get_time());
231 assert_eq!(event1.get_time(), event2.get_time());
232 assert_eq!(event1.get_date(), 24);
233 }
234
235 #[wasm_bindgen_test]
set_full_year()236 fn set_full_year() {
237 let event1 = Date::new(&"August 19, 1975 23:15:30".into());
238 let event2 = Date::new(&"August 19, 1976 23:15:30".into());
239
240 let ms = event1.set_full_year(1976);
241
242 assert_eq!(ms, event2.get_time());
243 assert_eq!(event1.get_time(), event2.get_time());
244 assert_eq!(event1.get_full_year(), 1976);
245 }
246
247 #[wasm_bindgen_test]
set_full_year_with_month()248 fn set_full_year_with_month() {
249 let event1 = Date::new(&"August 19, 1976 23:15:30".into());
250
251 event1.set_full_year_with_month(1979, 4);
252
253 assert_eq!(event1.get_full_year(), 1979);
254 assert_eq!(event1.get_month(), 4);
255 }
256
257 #[wasm_bindgen_test]
set_full_year_with_month_date()258 fn set_full_year_with_month_date() {
259 let event1 = Date::new(&"August 19, 1976 23:15:30".into());
260
261 event1.set_full_year_with_month_date(1979, -1, 25);
262
263 assert_eq!(event1.get_full_year(), 1978);
264 assert_eq!(event1.get_month(), 11);
265 assert_eq!(event1.get_date(), 25);
266 }
267
268 #[wasm_bindgen_test]
set_hours()269 fn set_hours() {
270 let event1 = Date::new(&"August 19, 1975 23:15:30".into());
271 let event2 = Date::new(&"August 19, 1975 20:15:30".into());
272
273 let ms = event1.set_hours(20);
274
275 assert_eq!(ms, event2.get_time());
276 assert_eq!(event1.get_time(), event2.get_time());
277 assert_eq!(event1.get_hours(), 20);
278 }
279
280 #[wasm_bindgen_test]
set_milliseconds()281 fn set_milliseconds() {
282 let event = Date::new(&"August 19, 1975 23:15:30".into());
283
284 let ms = event.set_milliseconds(456);
285
286 assert_eq!(ms, event.get_time());
287 assert_eq!(event.get_milliseconds(), 456);
288 }
289
290 #[wasm_bindgen_test]
set_minutes()291 fn set_minutes() {
292 let event1 = Date::new(&"August 19, 1975 23:15:30".into());
293 let event2 = Date::new(&"August 19, 1975 23:45:30".into());
294
295 let ms = event1.set_minutes(45);
296
297 assert_eq!(ms, event2.get_time());
298 assert_eq!(event1.get_time(), event2.get_time());
299 assert_eq!(event1.get_minutes(), 45);
300 }
301
302 #[wasm_bindgen_test]
set_month()303 fn set_month() {
304 let event1 = Date::new(&"August 19, 1975 23:15:30".into());
305 let event2 = Date::new(&"April 19, 1975 23:15:30".into());
306
307 let ms = event1.set_month(3);
308
309 assert_eq!(ms, event2.get_time());
310 assert_eq!(event1.get_time(), event2.get_time());
311 assert_eq!(event1.get_month(), 3);
312 }
313
314 #[wasm_bindgen_test]
set_seconds()315 fn set_seconds() {
316 let event1 = Date::new(&"August 19, 1975 23:15:30".into());
317 let event2 = Date::new(&"August 19, 1975 23:15:42".into());
318
319 let ms = event1.set_seconds(42);
320
321 assert_eq!(ms, event2.get_time());
322 assert_eq!(event1.get_time(), event2.get_time());
323 assert_eq!(event1.get_seconds(), 42);
324 }
325
326 #[wasm_bindgen_test]
set_time()327 fn set_time() {
328 let event1 = Date::new(&"July 1, 1999".into());
329 let event2 = Date::new(&JsValue::undefined());
330
331 let ms = event2.set_time(event1.get_time());
332
333 assert_eq!(ms, event2.get_time());
334 assert_eq!(event1.get_time(), event2.get_time());
335 }
336
337 #[wasm_bindgen_test]
set_utc_date()338 fn set_utc_date() {
339 let event1 = Date::new(&"August 19, 1975 23:15:30 GMT-3:00".into());
340 let event2 = Date::new(&"August 19, 1975 02:15:30 GMT".into());
341
342 let ms = event1.set_utc_date(19);
343
344 assert_eq!(ms, event2.get_time());
345 assert_eq!(event1.get_time(), event2.get_time());
346 assert_eq!(event1.get_utc_date(), 19);
347 }
348
349 #[wasm_bindgen_test]
set_utc_full_year()350 fn set_utc_full_year() {
351 let event1 = Date::new(&"December 31, 1975 23:15:30 GMT-3:00".into());
352 let event2 = Date::new(&"January 01, 1975 02:15:30 GMT".into());
353
354 let ms = event1.set_utc_full_year(1975);
355
356 assert_eq!(ms, event2.get_time());
357 assert_eq!(event1.get_time(), event2.get_time());
358 assert_eq!(event1.get_utc_full_year(), 1975);
359 }
360
361 #[wasm_bindgen_test]
set_utc_full_year_with_month()362 fn set_utc_full_year_with_month() {
363 let event1 = Date::new(&"December 31, 1975 23:15:30 GMT-3:00".into());
364
365 event1.set_utc_full_year_with_month(1975, 6);
366
367 assert_eq!(event1.get_utc_full_year(), 1975);
368 assert_eq!(event1.get_utc_month(), 6);
369 }
370
371 #[wasm_bindgen_test]
set_utc_full_year_with_month_date()372 fn set_utc_full_year_with_month_date() {
373 let event1 = Date::new(&"December 31, 1975 23:15:30 GMT-3:00".into());
374
375 event1.set_utc_full_year_with_month_date(1975, -2, 21);
376
377 assert_eq!(event1.get_utc_full_year(), 1974);
378 assert_eq!(event1.get_utc_month(), 10);
379 assert_eq!(event1.get_utc_date(), 21);
380 }
381
382 #[wasm_bindgen_test]
set_utc_hours()383 fn set_utc_hours() {
384 let event1 = Date::new(&"August 19, 1975 23:15:30 GMT-3:00".into());
385 let event2 = Date::new(&"August 20, 1975 23:15:30 GMT".into());
386
387 let ms = event1.set_utc_hours(23);
388
389 assert_eq!(ms, event2.get_time());
390 assert_eq!(event1.get_time(), event2.get_time());
391 assert_eq!(event1.get_utc_hours(), 23);
392 }
393
394 #[wasm_bindgen_test]
set_utc_milliseconds()395 fn set_utc_milliseconds() {
396 let event1 = Date::new(&"1995-12-17T09:24:00Z".into());
397 let event2 = Date::new(&"1995-12-17T09:24:00.420Z".into());
398
399 let ms = event1.set_utc_milliseconds(420);
400
401 assert_eq!(ms, event2.get_time());
402 assert_eq!(event1.get_time(), event2.get_time());
403 assert_eq!(event1.get_utc_milliseconds(), 420);
404 }
405
406 #[wasm_bindgen_test]
set_utc_minutes()407 fn set_utc_minutes() {
408 let event1 = Date::new(&"December 31, 1975, 23:15:30 GMT-3:00".into());
409 let event2 = Date::new(&"January 01, 1976 02:25:30 GMT".into());
410
411 let ms = event1.set_utc_minutes(25);
412
413 assert_eq!(ms, event2.get_time());
414 assert_eq!(event1.get_time(), event2.get_time());
415 assert_eq!(event1.get_utc_minutes(), 25);
416 }
417
418 #[wasm_bindgen_test]
set_utc_month()419 fn set_utc_month() {
420 let event1 = Date::new(&"December 31, 1975 23:15:30 GMT-3:00".into());
421 let event2 = Date::new(&"December 01, 1976 02:15:30 GMT".into());
422
423 let ms = event1.set_utc_month(11);
424
425 assert_eq!(ms, event2.get_time());
426 assert_eq!(event1.get_time(), event2.get_time());
427 assert_eq!(event1.get_utc_month(), 11);
428 }
429
430 #[wasm_bindgen_test]
set_utc_seconds()431 fn set_utc_seconds() {
432 let event1 = Date::new(&"December 31, 1975 23:15:30 GMT-3:00".into());
433 let event2 = Date::new(&"January 01, 1976 02:15:39 GMT".into());
434
435 let ms = event1.set_utc_seconds(39);
436
437 assert_eq!(ms, event2.get_time());
438 assert_eq!(event1.get_time(), event2.get_time());
439 assert_eq!(event1.get_utc_seconds(), 39);
440 }
441
442 #[wasm_bindgen_test]
to_date_string()443 fn to_date_string() {
444 let date = Date::new(&"05 October 2011 14:48 UTC".into());
445 assert_eq!(JsValue::from(date.to_date_string()), "Wed Oct 05 2011");
446 }
447
448 #[wasm_bindgen_test]
to_iso_string()449 fn to_iso_string() {
450 let date = Date::new(&"05 October 2011 14:48 UTC".into());
451 assert_eq!(
452 JsValue::from(date.to_iso_string()),
453 "2011-10-05T14:48:00.000Z"
454 );
455 }
456
457 #[wasm_bindgen_test]
to_json()458 fn to_json() {
459 let date = Date::new(&"August 19, 1975 23:15:30 UTC".into());
460
461 assert_eq!(JsValue::from(date.to_json()), "1975-08-19T23:15:30.000Z");
462 }
463
464 #[wasm_bindgen_test]
to_locale_date_string()465 fn to_locale_date_string() {
466 let date = Date::new(&"August 19, 1975 23:15:30 UTC".into());
467 let s = date.to_locale_date_string("de-DE", &JsValue::undefined());
468 assert!(s.length() > 0);
469 }
470
471 #[wasm_bindgen_test]
to_locale_string()472 fn to_locale_string() {
473 let date = Date::new(&"August 19, 1975 23:15:30 UTC".into());
474 let s = date.to_locale_string("de-DE", &JsValue::undefined());
475 assert!(s.length() > 0);
476 }
477
478 #[wasm_bindgen_test]
to_locale_time_string()479 fn to_locale_time_string() {
480 let date = Date::new(&"August 19, 1975 23:15:30".into());
481 assert_eq!(
482 JsValue::from(date.to_locale_time_string("en-US")),
483 "11:15:30 PM",
484 );
485 }
486
487 #[wasm_bindgen_test]
to_string()488 fn to_string() {
489 let date = Date::new(&"August 19, 1975 23:15:30".into());
490 let s = JsValue::from(date.to_string()).as_string().unwrap();
491 assert_eq!(&s[0..15], "Tue Aug 19 1975");
492 }
493
494 #[wasm_bindgen_test]
to_time_string()495 fn to_time_string() {
496 let date = Date::new(&"August 19, 1975 23:15:30".into());
497 let s = JsValue::from(date.to_time_string()).as_string().unwrap();
498 assert_eq!(&s[0..8], "23:15:30");
499 }
500
501 #[wasm_bindgen_test]
to_utc_string()502 fn to_utc_string() {
503 let date = Date::new(&"14 Jun 2017 00:00:00 PDT".into());
504 let s = JsValue::from(date.to_utc_string()).as_string().unwrap();
505 assert_eq!(s, "Wed, 14 Jun 2017 07:00:00 GMT");
506 }
507
508 #[wasm_bindgen_test]
utc()509 fn utc() {
510 assert_eq!(Date::utc(2018f64, 6f64), 1530403200000.0);
511 }
512
513 #[wasm_bindgen_test]
value_of()514 fn value_of() {
515 let date = Date::new(&Date::utc(2018f64, 6f64).into());
516 assert_eq!(date.value_of(), 1530403200000.0);
517 }
518
519 #[wasm_bindgen_test]
date_inheritance()520 fn date_inheritance() {
521 let date = Date::new(&"August 19, 1975 23:15:30".into());
522 assert!(date.is_instance_of::<Date>());
523 assert!(date.is_instance_of::<Object>());
524 let _: &Object = date.as_ref();
525 }
526