1 use anyhow::{anyhow, Chain, Error};
2
error() -> Error3 fn error() -> Error {
4 anyhow!({ 0 }).context(1).context(2).context(3)
5 }
6
7 #[test]
test_iter()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]
test_rev()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]
test_len()32 fn test_len() {
33 let e = error();
34 let mut chain = e.chain();
35 assert_eq!(4, chain.len());
36 assert_eq!((4, Some(4)), chain.size_hint());
37 assert_eq!("3", chain.next().unwrap().to_string());
38 assert_eq!(3, chain.len());
39 assert_eq!((3, Some(3)), chain.size_hint());
40 assert_eq!("0", chain.next_back().unwrap().to_string());
41 assert_eq!(2, chain.len());
42 assert_eq!((2, Some(2)), chain.size_hint());
43 assert_eq!("2", chain.next().unwrap().to_string());
44 assert_eq!(1, chain.len());
45 assert_eq!((1, Some(1)), chain.size_hint());
46 assert_eq!("1", chain.next_back().unwrap().to_string());
47 assert_eq!(0, chain.len());
48 assert_eq!((0, Some(0)), chain.size_hint());
49 assert!(chain.next().is_none());
50 }
51
52 #[test]
test_default()53 fn test_default() {
54 let mut c = Chain::default();
55 assert!(c.next().is_none());
56 }
57
58 #[test]
59 #[allow(clippy::redundant_clone)]
test_clone()60 fn test_clone() {
61 let e = error();
62 let mut chain = e.chain().clone();
63 assert_eq!("3", chain.next().unwrap().to_string());
64 assert_eq!("2", chain.next().unwrap().to_string());
65 assert_eq!("1", chain.next().unwrap().to_string());
66 assert_eq!("0", chain.next().unwrap().to_string());
67 assert!(chain.next().is_none());
68 assert!(chain.next_back().is_none());
69 }
70