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() -> Object13fn 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()20fn new() { 21 assert!(JsValue::from(WeakSet::new()).is_object()) 22 } 23 24 #[wasm_bindgen_test] has()25fn 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()35fn 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()46fn 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