diff options
Diffstat (limited to 'vendor/js-sys/tests/headless.rs')
-rw-r--r-- | vendor/js-sys/tests/headless.rs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/vendor/js-sys/tests/headless.rs b/vendor/js-sys/tests/headless.rs new file mode 100644 index 000000000..aafa6b0ae --- /dev/null +++ b/vendor/js-sys/tests/headless.rs @@ -0,0 +1,47 @@ +#![cfg(target_arch = "wasm32")] + +extern crate js_sys; +extern crate wasm_bindgen; +extern crate wasm_bindgen_test; + +use js_sys::Array; +use wasm_bindgen::prelude::*; +use wasm_bindgen_test::*; + +wasm_bindgen_test_configure!(run_in_browser); + +#[wasm_bindgen(module = "/tests/headless.js")] +extern "C" { + fn is_array_values_supported() -> bool; +} + +#[wasm_bindgen] +extern "C" { + type ValuesIterator; + #[wasm_bindgen(method, structural)] + fn next(this: &ValuesIterator) -> IterNext; + + type IterNext; + + #[wasm_bindgen(method, getter, structural)] + fn value(this: &IterNext) -> JsValue; + #[wasm_bindgen(method, getter, structural)] + fn done(this: &IterNext) -> bool; +} + +#[wasm_bindgen_test] +fn array_iterator_values() { + if !is_array_values_supported() { + return; + } + let array = Array::new(); + array.push(&8.into()); + array.push(&3.into()); + array.push(&2.into()); + let iter = ValuesIterator::from(JsValue::from(array.values())); + + assert_eq!(iter.next().value(), 8); + assert_eq!(iter.next().value(), 3); + assert_eq!(iter.next().value(), 2); + assert!(iter.next().done()); +} |