headless.rs 1.1 KB

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