12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- use js_sys::*;
- use wasm_bindgen::prelude::*;
- use wasm_bindgen::JsCast;
- use wasm_bindgen_test::*;
- #[wasm_bindgen]
- extern "C" {
- type SomeKey;
- #[wasm_bindgen(method, setter, structural)]
- fn set_some(this: &SomeKey, val: JsValue);
- }
- fn some_key() -> Object {
- let key = SomeKey::from(JsValue::from(Object::new()));
- key.set_some("key".into());
- Object::from(JsValue::from(key))
- }
- #[wasm_bindgen_test]
- fn new() {
- assert!(JsValue::from(WeakMap::new()).is_object());
- }
- #[wasm_bindgen_test]
- fn get_and_set() {
- let map = WeakMap::new();
- let key = some_key();
- map.set(&key, &"value".into());
- assert_eq!(map.get(&key), "value");
- assert_eq!(map.get(&Object::new()), JsValue::undefined());
- assert_eq!(map.get(&some_key()), JsValue::undefined());
- }
- #[wasm_bindgen_test]
- fn has() {
- let map = WeakMap::new();
- let key = some_key();
- map.set(&key, &"value".into());
- assert!(map.has(&key));
- assert!(!map.has(&Object::new()));
- assert!(!map.has(&some_key()));
- }
- #[wasm_bindgen_test]
- fn delete() {
- let map = WeakMap::new();
- let key = some_key();
- assert!(!map.has(&key));
- map.set(&key, &"value".into());
- assert!(map.has(&key));
- map.delete(&key);
- assert!(!map.has(&key));
- }
- #[wasm_bindgen_test]
- fn weakmap_inheritance() {
- let map = WeakMap::new();
- assert!(map.is_instance_of::<WeakMap>());
- assert!(map.is_instance_of::<Object>());
- let _: &Object = map.as_ref();
- }
|