mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-03-20 04:00:52 +00:00
* js-sys: Return `f64` instead of `Number` * js-sys: remove trailing whitespace * js-sys: Ensure that all imported types derive Clone and Debug * js-sys: Imported functions should always take JS object arguments by-ref
55 lines
1.4 KiB
Rust
55 lines
1.4 KiB
Rust
use wasm_bindgen::prelude::*;
|
|
use wasm_bindgen_test::*;
|
|
use js_sys::*;
|
|
|
|
#[wasm_bindgen]
|
|
extern {
|
|
type GenericIterator;
|
|
#[wasm_bindgen(method, structural)]
|
|
fn next(this: &GenericIterator) -> IteratorNext;
|
|
|
|
type IteratorNext;
|
|
#[wasm_bindgen(method, structural, getter)]
|
|
fn value(this: &IteratorNext) -> JsValue;
|
|
#[wasm_bindgen(method, structural, getter)]
|
|
fn done(this: &IteratorNext) -> bool;
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn entries() {
|
|
let s = Set::new(&JsValue::undefined());
|
|
s.add(&1.into());
|
|
let iter = GenericIterator::from(JsValue::from(s.entries()));
|
|
let obj = iter.next();
|
|
assert!(!obj.done());
|
|
let array = Array::from(&obj.value());
|
|
assert_eq!(array.length(), 2);
|
|
array.for_each(&mut |a, _, _| {
|
|
assert_eq!(a, 1);
|
|
});
|
|
|
|
assert!(iter.next().done());
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn keys() {
|
|
let s = Set::new(&JsValue::undefined());
|
|
s.add(&1.into());
|
|
let iter = GenericIterator::from(JsValue::from(s.keys()));
|
|
let obj = iter.next();
|
|
assert!(!obj.done());
|
|
assert_eq!(obj.value(), 1);
|
|
assert!(iter.next().done());
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn values() {
|
|
let s = Set::new(&JsValue::undefined());
|
|
s.add(&1.into());
|
|
let iter = GenericIterator::from(JsValue::from(s.values()));
|
|
let obj = iter.next();
|
|
assert!(!obj.done());
|
|
assert_eq!(obj.value(), 1);
|
|
assert!(iter.next().done());
|
|
}
|