about summary refs log tree commit diff
path: root/src/libcoretest
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2015-08-28 03:38:37 +0530
committerManish Goregaokar <manishsmail@gmail.com>2015-08-28 03:38:37 +0530
commit07d1a22ce5050cfa2edd7b257ac7fead534588a2 (patch)
tree08391a01e310da9b0e14dce0791867c77d324915 /src/libcoretest
parent0833d8776282b39740345bbb5710037eabc67180 (diff)
parenta7313a0b891fb5fa62357527409bafde63aa44aa (diff)
downloadrust-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.rs9
-rw-r--r--src/libcoretest/result.rs33
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"));
+}