summaryrefslogtreecommitdiffstats
path: root/vendor/js-sys/tests/headless.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/js-sys/tests/headless.rs')
-rw-r--r--vendor/js-sys/tests/headless.rs47
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());
+}