mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-06-12 04:21:21 +00:00
Port WeakMap
tests to wasm
This commit is contained in:
52
crates/js-sys/tests/wasm/WeakMap.rs
Normal file
52
crates/js-sys/tests/wasm/WeakMap.rs
Normal file
@ -0,0 +1,52 @@
|
||||
use wasm_bindgen::prelude::*;
|
||||
use wasm_bindgen_test::*;
|
||||
use js_sys::*;
|
||||
|
||||
#[wasm_bindgen]
|
||||
extern {
|
||||
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));
|
||||
}
|
@ -27,3 +27,4 @@ pub mod Set;
|
||||
pub mod SetIterator;
|
||||
pub mod Symbol;
|
||||
pub mod TypedArray;
|
||||
pub mod WeakMap;
|
||||
|
Reference in New Issue
Block a user