about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKonrad Borowski <konrad@borowski.pw>2018-12-05 14:52:23 +0100
committerKonrad Borowski <konrad@borowski.pw>2018-12-05 15:40:14 +0100
commitfcc46040a969f48cef92582bc78c792edb90ff8c (patch)
tree57e5c02b5c5b08f1a2fa3a6b56e23d4a25736ce6
parentab2cd6070e73dc79a5b5e0b67cad120f0ccb4217 (diff)
downloadrust-fcc46040a969f48cef92582bc78c792edb90ff8c.tar.gz
rust-fcc46040a969f48cef92582bc78c792edb90ff8c.zip
Add tests for Option::copied()
-rw-r--r--src/libcore/tests/lib.rs1
-rw-r--r--src/libcore/tests/option.rs21
2 files changed, 22 insertions, 0 deletions
diff --git a/src/libcore/tests/lib.rs b/src/libcore/tests/lib.rs
index 7d62b4fa90f..58b5ea7ff2d 100644
--- a/src/libcore/tests/lib.rs
+++ b/src/libcore/tests/lib.rs
@@ -10,6 +10,7 @@
 
 #![feature(box_syntax)]
 #![feature(cell_update)]
+#![feature(copied)]
 #![feature(core_private_bignum)]
 #![feature(core_private_diy_float)]
 #![feature(dec2flt)]
diff --git a/src/libcore/tests/option.rs b/src/libcore/tests/option.rs
index 1324ba2d9a9..b4761f89426 100644
--- a/src/libcore/tests/option.rs
+++ b/src/libcore/tests/option.rs
@@ -248,6 +248,27 @@ fn test_collect() {
     assert!(v == None);
 }
 
+#[test]
+fn test_copied() {
+    let val = 1;
+    let val_ref = &val;
+    let opt_none: Option<&'static u32> = None;
+    let opt_ref = Some(&val);
+    let opt_ref_ref = Some(&val_ref);
+
+    // None works
+    assert_eq!(opt_none.clone(), None);
+    assert_eq!(opt_none.copied(), None);
+
+    // Immutable ref works
+    assert_eq!(opt_ref.clone(), Some(&val));
+    assert_eq!(opt_ref.copied(), Some(1));
+
+    // Double Immutable ref works
+    assert_eq!(opt_ref_ref.clone(), Some(&val_ref));
+    assert_eq!(opt_ref_ref.clone().copied(), Some(&val));
+    assert_eq!(opt_ref_ref.copied().copied(), Some(1));
+}
 
 #[test]
 fn test_cloned() {