Skip to content

Commit 04e3292

Browse files
authored
Merge pull request #159 from jmintb/main
Implement no_std tests
2 parents eed67b3 + 1890422 commit 04e3292

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

tests/no_std.rs

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
#![no_std]
2+
3+
use core::future;
4+
use futures_concurrency::{array::AggregateError, prelude::*};
5+
use futures_lite::future::block_on;
6+
use futures_lite::prelude::*;
7+
use futures_lite::stream;
8+
9+
// These tests ensure that the traits provided by `futures-concurrency` work in a no std environment.
10+
11+
#[test]
12+
fn join() {
13+
futures_lite::future::block_on(async {
14+
let fut = [future::ready("hello"), future::ready("world")].join();
15+
assert_eq!(fut.await, ["hello", "world"]);
16+
});
17+
}
18+
19+
#[test]
20+
fn try_join() {
21+
futures_lite::future::block_on(async {
22+
let res: Result<[&str; 2], &str> = [future::ready(Ok("hello")), future::ready(Ok("world"))]
23+
.try_join()
24+
.await;
25+
assert_eq!(res.unwrap(), ["hello", "world"]);
26+
})
27+
}
28+
29+
#[test]
30+
fn race() {
31+
futures_lite::future::block_on(async {
32+
let res = [future::ready("hello"), future::ready("world")]
33+
.race()
34+
.await;
35+
assert!(matches!(res, "hello" | "world"));
36+
});
37+
}
38+
39+
#[test]
40+
fn race_ok() {
41+
futures_lite::future::block_on(async {
42+
let res: Result<&str, AggregateError<&str, 2>> =
43+
[future::ready(Ok("hello")), future::ready(Ok("world"))]
44+
.race_ok()
45+
.await;
46+
assert!(res.is_ok());
47+
})
48+
}
49+
50+
#[test]
51+
fn chain_3() {
52+
block_on(async {
53+
let a = stream::once(1);
54+
let b = stream::once(2);
55+
let c = stream::once(3);
56+
let mut s = [a, b, c].chain();
57+
58+
assert_eq!(s.next().await, Some(1));
59+
assert_eq!(s.next().await, Some(2));
60+
assert_eq!(s.next().await, Some(3));
61+
assert_eq!(s.next().await, None);
62+
})
63+
}
64+
65+
#[test]
66+
fn merge_array_4() {
67+
block_on(async {
68+
let a = stream::once(1);
69+
let b = stream::once(2);
70+
let c = stream::once(3);
71+
let d = stream::once(4);
72+
let mut s = [a, b, c, d].merge();
73+
74+
let mut counter = 0;
75+
while let Some(n) = s.next().await {
76+
counter += n;
77+
}
78+
assert_eq!(counter, 10);
79+
})
80+
}
81+
82+
#[test]
83+
fn zip_array_3() {
84+
use futures_concurrency::stream::Zip;
85+
86+
block_on(async {
87+
let a = stream::repeat(1).take(2);
88+
let b = stream::repeat(2).take(2);
89+
let c = stream::repeat(3).take(2);
90+
let mut s = Zip::zip([a, b, c]);
91+
92+
assert_eq!(s.next().await, Some([1, 2, 3]));
93+
assert_eq!(s.next().await, Some([1, 2, 3]));
94+
assert_eq!(s.next().await, None);
95+
})
96+
}

0 commit comments

Comments
 (0)