]>
Commit | Line | Data |
---|---|---|
136023e0 | 1 | use anyhow::{anyhow, Chain, Error}; |
dfeec247 XL |
2 | |
3 | fn error() -> Error { | |
4 | anyhow!(0).context(1).context(2).context(3) | |
5 | } | |
6 | ||
7 | #[test] | |
8 | fn test_iter() { | |
9 | let e = error(); | |
10 | let mut chain = e.chain(); | |
11 | assert_eq!("3", chain.next().unwrap().to_string()); | |
12 | assert_eq!("2", chain.next().unwrap().to_string()); | |
13 | assert_eq!("1", chain.next().unwrap().to_string()); | |
14 | assert_eq!("0", chain.next().unwrap().to_string()); | |
15 | assert!(chain.next().is_none()); | |
16 | assert!(chain.next_back().is_none()); | |
17 | } | |
18 | ||
19 | #[test] | |
20 | fn test_rev() { | |
21 | let e = error(); | |
22 | let mut chain = e.chain().rev(); | |
23 | assert_eq!("0", chain.next().unwrap().to_string()); | |
24 | assert_eq!("1", chain.next().unwrap().to_string()); | |
25 | assert_eq!("2", chain.next().unwrap().to_string()); | |
26 | assert_eq!("3", chain.next().unwrap().to_string()); | |
27 | assert!(chain.next().is_none()); | |
28 | assert!(chain.next_back().is_none()); | |
29 | } | |
30 | ||
31 | #[test] | |
32 | fn test_len() { | |
33 | let e = error(); | |
34 | let mut chain = e.chain(); | |
35 | assert_eq!(4, chain.len()); | |
136023e0 | 36 | assert_eq!((4, Some(4)), chain.size_hint()); |
dfeec247 XL |
37 | assert_eq!("3", chain.next().unwrap().to_string()); |
38 | assert_eq!(3, chain.len()); | |
136023e0 | 39 | assert_eq!((3, Some(3)), chain.size_hint()); |
dfeec247 XL |
40 | assert_eq!("0", chain.next_back().unwrap().to_string()); |
41 | assert_eq!(2, chain.len()); | |
136023e0 | 42 | assert_eq!((2, Some(2)), chain.size_hint()); |
dfeec247 XL |
43 | assert_eq!("2", chain.next().unwrap().to_string()); |
44 | assert_eq!(1, chain.len()); | |
136023e0 | 45 | assert_eq!((1, Some(1)), chain.size_hint()); |
dfeec247 XL |
46 | assert_eq!("1", chain.next_back().unwrap().to_string()); |
47 | assert_eq!(0, chain.len()); | |
136023e0 | 48 | assert_eq!((0, Some(0)), chain.size_hint()); |
dfeec247 XL |
49 | assert!(chain.next().is_none()); |
50 | } | |
136023e0 XL |
51 | |
52 | #[test] | |
53 | fn test_default() { | |
54 | let mut c = Chain::default(); | |
55 | assert!(c.next().is_none()); | |
56 | } | |
57 | ||
58 | #[test] | |
59 | fn test_clone() { | |
60 | let e = error(); | |
61 | let mut chain = e.chain().clone(); | |
62 | assert_eq!("3", chain.next().unwrap().to_string()); | |
63 | assert_eq!("2", chain.next().unwrap().to_string()); | |
64 | assert_eq!("1", chain.next().unwrap().to_string()); | |
65 | assert_eq!("0", chain.next().unwrap().to_string()); | |
66 | assert!(chain.next().is_none()); | |
67 | assert!(chain.next_back().is_none()); | |
68 | } |