1 #[cfg(all(test, feature = "wasmbind"))]
2 mod test {
3     extern crate chrono;
4     extern crate wasm_bindgen_test;
5 
6     use self::chrono::prelude::*;
7     use self::wasm_bindgen_test::*;
8 
9     #[wasm_bindgen_test]
now()10     fn now() {
11         let utc: DateTime<Utc> = Utc::now();
12         let local: DateTime<Local> = Local::now();
13 
14         // Ensure time fetched is correct
15         let actual = Utc.datetime_from_str(&env!("NOW"), "%s").unwrap();
16         assert!(utc - actual < chrono::Duration::minutes(5));
17 
18         let tz = env!("TZ");
19         eprintln!("testing with tz={}", tz);
20 
21         // Ensure offset retrieved when getting local time is correct
22         let expected_offset = match tz {
23             "ACST-9:30" => FixedOffset::east(19 * 30 * 60),
24             "Asia/Katmandu" => FixedOffset::east(23 * 15 * 60), // No DST thankfully
25             "EDT" | "EST4" | "-0400" => FixedOffset::east(-4 * 60 * 60),
26             "EST" | "-0500" => FixedOffset::east(-5 * 60 * 60),
27             "UTC0" | "+0000" => FixedOffset::east(0),
28             tz => panic!("unexpected TZ {}", tz),
29         };
30         assert_eq!(
31             &expected_offset,
32             local.offset(),
33             "expected: {:?} local: {:?}",
34             expected_offset,
35             local.offset(),
36         );
37     }
38 
39     #[wasm_bindgen_test]
from_is_exact()40     fn from_is_exact() {
41         let now = js_sys::Date::new_0();
42 
43         let dt = DateTime::<Utc>::from(now.clone());
44 
45         assert_eq!(now.get_time() as i64, dt.timestamp_millis());
46     }
47 }
48