| #![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()); |
| } |