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