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