diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2015-08-28 03:38:37 +0530 |
|---|---|---|
| committer | Manish Goregaokar <manishsmail@gmail.com> | 2015-08-28 03:38:37 +0530 |
| commit | 07d1a22ce5050cfa2edd7b257ac7fead534588a2 (patch) | |
| tree | 08391a01e310da9b0e14dce0791867c77d324915 /src/libcoretest | |
| parent | 0833d8776282b39740345bbb5710037eabc67180 (diff) | |
| parent | a7313a0b891fb5fa62357527409bafde63aa44aa (diff) | |
| download | rust-07d1a22ce5050cfa2edd7b257ac7fead534588a2.tar.gz rust-07d1a22ce5050cfa2edd7b257ac7fead534588a2.zip | |
Rollup merge of #28039 - birkenfeld:option_result_ref_intoiter, r=alexcrichton
Fixes #27996. Does this need any `#[stable]`/`#[unstable]` attributes?
Diffstat (limited to 'src/libcoretest')
| -rw-r--r-- | src/libcoretest/option.rs | 9 | ||||
| -rw-r--r-- | src/libcoretest/result.rs | 33 |
2 files changed, 41 insertions, 1 deletions
diff --git a/src/libcoretest/option.rs b/src/libcoretest/option.rs index 04271ed5dd1..3e564cf1970 100644 --- a/src/libcoretest/option.rs +++ b/src/libcoretest/option.rs @@ -180,11 +180,14 @@ fn test_iter() { assert_eq!(it.next(), Some(&val)); assert_eq!(it.size_hint(), (0, Some(0))); assert!(it.next().is_none()); + + let mut it = (&x).into_iter(); + assert_eq!(it.next(), Some(&val)); } #[test] fn test_mut_iter() { - let val = 5; + let mut val = 5; let new_val = 11; let mut x = Some(val); @@ -205,6 +208,10 @@ fn test_mut_iter() { assert!(it.next().is_none()); } assert_eq!(x, Some(new_val)); + + let mut y = Some(val); + let mut it = (&mut y).into_iter(); + assert_eq!(it.next(), Some(&mut val)); } #[test] diff --git a/src/libcoretest/result.rs b/src/libcoretest/result.rs index 02ea6b10e6e..6e9f653dcd8 100644 --- a/src/libcoretest/result.rs +++ b/src/libcoretest/result.rs @@ -150,3 +150,36 @@ pub fn test_expect_err() { let err: Result<isize, &'static str> = Err("All good"); err.expect("Got expected error"); } + +#[test] +pub fn test_iter() { + let ok: Result<isize, &'static str> = Ok(100); + let mut it = ok.iter(); + assert_eq!(it.size_hint(), (1, Some(1))); + assert_eq!(it.next(), Some(&100)); + assert_eq!(it.size_hint(), (0, Some(0))); + assert!(it.next().is_none()); + assert_eq!((&ok).into_iter().next(), Some(&100)); + + let err: Result<isize, &'static str> = Err("error"); + assert_eq!(err.iter().next(), None); +} + +#[test] +pub fn test_iter_mut() { + let mut ok: Result<isize, &'static str> = Ok(100); + for loc in ok.iter_mut() { + *loc = 200; + } + assert_eq!(ok, Ok(200)); + for loc in &mut ok { + *loc = 300; + } + assert_eq!(ok, Ok(300)); + + let mut err: Result<isize, &'static str> = Err("error"); + for loc in err.iter_mut() { + *loc = 200; + } + assert_eq!(err, Err("error")); +} |
