1 #![cfg(target_arch = "wasm32")] 2 3 extern crate js_sys; 4 extern crate wasm_bindgen; 5 extern crate wasm_bindgen_test; 6 7 use js_sys::Array; 8 use wasm_bindgen::prelude::*; 9 use wasm_bindgen_test::*; 10 11 wasm_bindgen_test_configure!(run_in_browser); 12 13 #[wasm_bindgen(module = "/tests/headless.js")] 14 extern "C" { is_array_values_supported() -> bool15 fn is_array_values_supported() -> bool; 16 } 17 18 #[wasm_bindgen] 19 extern "C" { 20 type ValuesIterator; 21 #[wasm_bindgen(method, structural)] next(this: &ValuesIterator) -> IterNext22 fn next(this: &ValuesIterator) -> IterNext; 23 24 type IterNext; 25 26 #[wasm_bindgen(method, getter, structural)] value(this: &IterNext) -> JsValue27 fn value(this: &IterNext) -> JsValue; 28 #[wasm_bindgen(method, getter, structural)] done(this: &IterNext) -> bool29 fn done(this: &IterNext) -> bool; 30 } 31 32 #[wasm_bindgen_test] array_iterator_values()33fn array_iterator_values() { 34 if !is_array_values_supported() { 35 return; 36 } 37 let array = Array::new(); 38 array.push(&8.into()); 39 array.push(&3.into()); 40 array.push(&2.into()); 41 let iter = ValuesIterator::from(JsValue::from(array.values())); 42 43 assert_eq!(iter.next().value(), 8); 44 assert_eq!(iter.next().value(), 3); 45 assert_eq!(iter.next().value(), 2); 46 assert!(iter.next().done()); 47 } 48