Intl.rs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. use js_sys::*;
  2. use wasm_bindgen::{JsCast, JsValue};
  3. use wasm_bindgen_test::*;
  4. #[wasm_bindgen_test]
  5. fn get_canonical_locales() {
  6. let locales = Array::new();
  7. locales.push(&"EN-US".into());
  8. locales.push(&"Fr".into());
  9. let locales = JsValue::from(locales);
  10. let canonical_locales = Intl::get_canonical_locales(&locales);
  11. assert_eq!(canonical_locales.length(), 2);
  12. canonical_locales.for_each(&mut |l, i, _| {
  13. if i == 0 {
  14. assert_eq!(l, "en-US");
  15. } else {
  16. assert_eq!(l, "fr");
  17. }
  18. });
  19. let canonical_locales = Intl::get_canonical_locales(&"EN-US".into());
  20. assert_eq!(canonical_locales.length(), 1);
  21. canonical_locales.for_each(&mut |l, _, _| {
  22. assert_eq!(l, "en-US");
  23. });
  24. }
  25. #[wasm_bindgen_test]
  26. fn collator() {
  27. let locales = Array::of1(&JsValue::from("en-US"));
  28. let opts = Object::new();
  29. let c = Intl::Collator::new(&locales, &opts);
  30. assert!(c.compare().is_instance_of::<Function>());
  31. assert!(c.resolved_options().is_instance_of::<Object>());
  32. let a = Intl::Collator::supported_locales_of(&locales, &opts);
  33. assert!(a.is_instance_of::<Array>());
  34. }
  35. #[wasm_bindgen_test]
  36. fn collator_inheritance() {
  37. let locales = Array::of1(&JsValue::from("en-US"));
  38. let opts = Object::new();
  39. let c = Intl::Collator::new(&locales, &opts);
  40. assert!(c.is_instance_of::<Intl::Collator>());
  41. assert!(c.is_instance_of::<Object>());
  42. let _: &Object = c.as_ref();
  43. }
  44. #[wasm_bindgen_test]
  45. fn date_time_format() {
  46. let locales = Array::of1(&JsValue::from("en-US"));
  47. let opts = Object::new();
  48. let epoch = Date::new(&JsValue::from(0));
  49. let c = Intl::DateTimeFormat::new(&locales, &opts);
  50. assert!(c.format().is_instance_of::<Function>());
  51. assert!(c.format_to_parts(&epoch).is_instance_of::<Array>());
  52. assert!(c.resolved_options().is_instance_of::<Object>());
  53. let a = Intl::DateTimeFormat::supported_locales_of(&locales, &opts);
  54. assert!(a.is_instance_of::<Array>());
  55. }
  56. #[wasm_bindgen_test]
  57. fn date_time_format_inheritance() {
  58. let locales = Array::of1(&JsValue::from("en-US"));
  59. let opts = Object::new();
  60. let c = Intl::DateTimeFormat::new(&locales, &opts);
  61. assert!(c.is_instance_of::<Intl::DateTimeFormat>());
  62. assert!(c.is_instance_of::<Object>());
  63. let _: &Object = c.as_ref();
  64. }
  65. #[wasm_bindgen_test]
  66. fn number_format() {
  67. let locales = Array::of1(&JsValue::from("en-US"));
  68. let opts = Object::new();
  69. let n = Intl::NumberFormat::new(&locales, &opts);
  70. assert!(n.format().is_instance_of::<Function>());
  71. assert!(n.format_to_parts(42.5).is_instance_of::<Array>());
  72. assert!(n.resolved_options().is_instance_of::<Object>());
  73. let a = Intl::NumberFormat::supported_locales_of(&locales, &opts);
  74. assert!(a.is_instance_of::<Array>());
  75. }
  76. #[wasm_bindgen_test]
  77. fn number_format_inheritance() {
  78. let locales = Array::of1(&JsValue::from("en-US"));
  79. let opts = Object::new();
  80. let n = Intl::NumberFormat::new(&locales, &opts);
  81. assert!(n.is_instance_of::<Intl::NumberFormat>());
  82. assert!(n.is_instance_of::<Object>());
  83. let _: &Object = n.as_ref();
  84. }
  85. #[wasm_bindgen_test]
  86. fn plural_rules() {
  87. let locales = Array::of1(&JsValue::from("en-US"));
  88. let opts = Object::new();
  89. let r = Intl::PluralRules::new(&locales, &opts);
  90. assert!(r.resolved_options().is_instance_of::<Object>());
  91. assert_eq!(r.select(1_f64), "one");
  92. let a = Intl::PluralRules::supported_locales_of(&locales, &opts);
  93. assert!(a.is_instance_of::<Array>());
  94. }
  95. #[wasm_bindgen_test]
  96. fn plural_rules_inheritance() {
  97. let locales = Array::of1(&JsValue::from("en-US"));
  98. let opts = Object::new();
  99. let r = Intl::PluralRules::new(&locales, &opts);
  100. assert!(r.is_instance_of::<Intl::PluralRules>());
  101. assert!(r.is_instance_of::<Object>());
  102. let _: &Object = r.as_ref();
  103. }