wasm.rs 2.0 KB

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