Map.rs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. use js_sys::*;
  2. use wasm_bindgen::JsCast;
  3. use wasm_bindgen_test::*;
  4. #[wasm_bindgen_test]
  5. fn clear() {
  6. let map = Map::new();
  7. map.set(&"foo".into(), &"bar".into());
  8. map.set(&"bar".into(), &"baz".into());
  9. assert_eq!(map.size(), 2);
  10. map.clear();
  11. assert_eq!(map.size(), 0);
  12. map.clear();
  13. assert_eq!(map.size(), 0);
  14. }
  15. #[wasm_bindgen_test]
  16. fn delete() {
  17. let map = Map::new();
  18. map.set(&"foo".into(), &"bar".into());
  19. assert_eq!(map.size(), 1);
  20. assert_eq!(map.delete(&"foo".into()), true);
  21. assert_eq!(map.delete(&"bar".into()), false);
  22. assert_eq!(map.size(), 0);
  23. }
  24. #[wasm_bindgen_test]
  25. fn for_each() {
  26. let map = Map::new();
  27. map.set(&1.into(), &true.into());
  28. map.set(&2.into(), &false.into());
  29. map.set(&3.into(), &"awoo".into());
  30. map.set(&4.into(), &100.into());
  31. map.set(&5.into(), &Array::new().into());
  32. map.set(&6.into(), &Object::new().into());
  33. let mut res = Vec::new();
  34. map.for_each(&mut |value, key| {
  35. if value.as_bool().is_some() {
  36. res.push((key, value));
  37. }
  38. });
  39. assert_eq!(map.size(), 6);
  40. assert_eq!(res.len(), 2);
  41. assert_eq!(res[0].0, 1);
  42. assert_eq!(res[0].1, true);
  43. assert_eq!(res[1].0, 2);
  44. assert_eq!(res[1].1, false);
  45. }
  46. #[wasm_bindgen_test]
  47. fn get() {
  48. let map = Map::new();
  49. map.set(&"foo".into(), &"bar".into());
  50. map.set(&1.into(), &2.into());
  51. assert_eq!(map.get(&"foo".into()), "bar");
  52. assert_eq!(map.get(&1.into()), 2);
  53. assert!(map.get(&2.into()).is_undefined());
  54. }
  55. #[wasm_bindgen_test]
  56. fn has() {
  57. let map = Map::new();
  58. map.set(&"foo".into(), &"bar".into());
  59. assert_eq!(map.has(&"foo".into()), true);
  60. assert_eq!(map.has(&"bar".into()), false);
  61. }
  62. #[wasm_bindgen_test]
  63. fn new() {
  64. assert_eq!(Map::new().size(), 0);
  65. }
  66. #[wasm_bindgen_test]
  67. fn set() {
  68. let map = Map::new();
  69. let new = map.set(&"foo".into(), &"bar".into());
  70. assert_eq!(map.has(&"foo".into()), true);
  71. assert_eq!(new.has(&"foo".into()), true);
  72. }
  73. #[wasm_bindgen_test]
  74. fn size() {
  75. let map = Map::new();
  76. map.set(&"foo".into(), &"bar".into());
  77. map.set(&"bar".into(), &"baz".into());
  78. assert_eq!(map.size(), 2);
  79. }
  80. #[wasm_bindgen_test]
  81. fn map_inheritance() {
  82. let map = Map::new();
  83. assert!(map.is_instance_of::<Map>());
  84. assert!(map.is_instance_of::<Object>());
  85. let _: &Object = map.as_ref();
  86. }