mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-03-31 01:11:06 +00:00
futures: Add sanity tests for conversion between Promises and Futures
Part of #614
This commit is contained in:
parent
f9ac4e9c90
commit
ff83594882
@ -62,9 +62,9 @@ matrix:
|
|||||||
- cargo test --target wasm32-unknown-unknown --features serde-serialize
|
- cargo test --target wasm32-unknown-unknown --features serde-serialize
|
||||||
# Make sure the `std` feature works if disabled
|
# Make sure the `std` feature works if disabled
|
||||||
- cargo test --target wasm32-unknown-unknown -p no-std
|
- cargo test --target wasm32-unknown-unknown -p no-std
|
||||||
# Make sure the `wasm-bindgen-futures` tests pass. Right now, this just
|
# Make sure the `wasm-bindgen-futures` tests pass.
|
||||||
# verifies that the example program in the crate level docs compiles.
|
|
||||||
- cargo test -p wasm-bindgen-futures
|
- cargo test -p wasm-bindgen-futures
|
||||||
|
- cargo test -p wasm-bindgen-futures --target wasm32-unknown-unknown
|
||||||
addons:
|
addons:
|
||||||
firefox: latest
|
firefox: latest
|
||||||
if: branch = master
|
if: branch = master
|
||||||
|
@ -7,3 +7,6 @@ authors = ["The wasm-bindgen Developers"]
|
|||||||
futures = "0.1.20"
|
futures = "0.1.20"
|
||||||
js-sys = { path = "../js-sys", version = '0.2.0' }
|
js-sys = { path = "../js-sys", version = '0.2.0' }
|
||||||
wasm-bindgen = { path = "../..", version = '0.2.15' }
|
wasm-bindgen = { path = "../..", version = '0.2.15' }
|
||||||
|
|
||||||
|
[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
|
||||||
|
wasm-bindgen-test = { path = '../test', version = '0.2.15' }
|
||||||
|
51
crates/futures/tests/tests.rs
Executable file
51
crates/futures/tests/tests.rs
Executable file
@ -0,0 +1,51 @@
|
|||||||
|
#![feature(use_extern_macros)]
|
||||||
|
#![cfg(target_arch = "wasm32")]
|
||||||
|
|
||||||
|
extern crate futures;
|
||||||
|
extern crate js_sys;
|
||||||
|
extern crate wasm_bindgen;
|
||||||
|
extern crate wasm_bindgen_futures;
|
||||||
|
extern crate wasm_bindgen_test;
|
||||||
|
|
||||||
|
use futures::Future;
|
||||||
|
use wasm_bindgen::prelude::*;
|
||||||
|
use wasm_bindgen_futures::{future_to_promise, JsFuture};
|
||||||
|
use wasm_bindgen_test::*;
|
||||||
|
|
||||||
|
#[wasm_bindgen_test(async)]
|
||||||
|
fn promise_resolve_is_ok_future() -> impl Future<Item = (), Error = JsValue> {
|
||||||
|
let p = js_sys::Promise::resolve(&JsValue::from(42));
|
||||||
|
JsFuture::from(p)
|
||||||
|
.map(|x| {
|
||||||
|
assert_eq!(x, 42);
|
||||||
|
}).map_err(|_| unreachable!())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[wasm_bindgen_test(async)]
|
||||||
|
fn promise_reject_is_error_future() -> impl Future<Item = (), Error = JsValue> {
|
||||||
|
let p = js_sys::Promise::reject(&JsValue::from(42));
|
||||||
|
JsFuture::from(p).map(|_| unreachable!()).or_else(|e| {
|
||||||
|
assert_eq!(e, 42);
|
||||||
|
Ok(())
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[wasm_bindgen_test(async)]
|
||||||
|
fn ok_future_is_resolved_promise() -> impl Future<Item = (), Error = JsValue> {
|
||||||
|
let f = futures::future::ok(JsValue::from(42));
|
||||||
|
let p = future_to_promise(f);
|
||||||
|
JsFuture::from(p)
|
||||||
|
.map(|x| {
|
||||||
|
assert_eq!(x, 42);
|
||||||
|
}).map_err(|_| unreachable!())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[wasm_bindgen_test(async)]
|
||||||
|
fn error_future_is_rejected_promise() -> impl Future<Item = (), Error = JsValue> {
|
||||||
|
let f = futures::future::err(JsValue::from(42));
|
||||||
|
let p = future_to_promise(f);
|
||||||
|
JsFuture::from(p).map(|_| unreachable!()).or_else(|e| {
|
||||||
|
assert_eq!(e, 42);
|
||||||
|
Ok(())
|
||||||
|
})
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user