WeakSet.rs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. use js_sys::*;
  2. use wasm_bindgen::prelude::*;
  3. use wasm_bindgen::JsCast;
  4. use wasm_bindgen_test::*;
  5. #[wasm_bindgen]
  6. extern "C" {
  7. type SomeValue;
  8. #[wasm_bindgen(method, setter, structural)]
  9. fn set_some(this: &SomeValue, val: JsValue);
  10. }
  11. fn some_value() -> Object {
  12. let value = SomeValue::from(JsValue::from(Object::new()));
  13. value.set_some("value".into());
  14. Object::from(JsValue::from(value))
  15. }
  16. #[wasm_bindgen_test]
  17. fn new() {
  18. assert!(JsValue::from(WeakSet::new()).is_object())
  19. }
  20. #[wasm_bindgen_test]
  21. fn has() {
  22. let set = WeakSet::new();
  23. let value = some_value();
  24. assert!(!set.has(&value));
  25. set.add(&value);
  26. assert!(set.has(&value));
  27. assert!(!set.has(&some_value()));
  28. }
  29. #[wasm_bindgen_test]
  30. fn delete() {
  31. let set = WeakSet::new();
  32. let value = some_value();
  33. set.add(&value);
  34. assert!(set.has(&value));
  35. assert!(set.delete(&value));
  36. assert!(!set.has(&value));
  37. assert!(!set.delete(&value));
  38. }
  39. #[wasm_bindgen_test]
  40. fn weakset_inheritance() {
  41. let set = WeakSet::new();
  42. assert!(set.is_instance_of::<WeakSet>());
  43. assert!(set.is_instance_of::<Object>());
  44. let _: &Object = set.as_ref();
  45. }