|
1 |
| -use anyhow::{anyhow, Error}; |
| 1 | +use anyhow::{anyhow, Chain, Error}; |
2 | 2 |
|
3 | 3 | fn error() -> Error {
|
4 | 4 | anyhow!(0).context(1).context(2).context(3)
|
@@ -33,13 +33,36 @@ fn test_len() {
|
33 | 33 | let e = error();
|
34 | 34 | let mut chain = e.chain();
|
35 | 35 | assert_eq!(4, chain.len());
|
| 36 | + assert_eq!((4, Some(4)), chain.size_hint()); |
36 | 37 | assert_eq!("3", chain.next().unwrap().to_string());
|
37 | 38 | assert_eq!(3, chain.len());
|
| 39 | + assert_eq!((3, Some(3)), chain.size_hint()); |
38 | 40 | assert_eq!("0", chain.next_back().unwrap().to_string());
|
39 | 41 | assert_eq!(2, chain.len());
|
| 42 | + assert_eq!((2, Some(2)), chain.size_hint()); |
40 | 43 | assert_eq!("2", chain.next().unwrap().to_string());
|
41 | 44 | assert_eq!(1, chain.len());
|
| 45 | + assert_eq!((1, Some(1)), chain.size_hint()); |
42 | 46 | assert_eq!("1", chain.next_back().unwrap().to_string());
|
43 | 47 | assert_eq!(0, chain.len());
|
| 48 | + assert_eq!((0, Some(0)), chain.size_hint()); |
44 | 49 | assert!(chain.next().is_none());
|
45 | 50 | }
|
| 51 | + |
| 52 | +#[test] |
| 53 | +fn test_default() { |
| 54 | + let mut c: Chain = Default::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 | +} |
0 commit comments