about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonathan S <gereeter+code@gmail.com>2016-01-16 22:55:56 -0600
committerJonathan S <gereeter+code@gmail.com>2016-01-16 22:55:56 -0600
commitbe4128d148ae5b0edf9d547530dc5e149697b693 (patch)
tree06a0e2366a804fea2225b4b9f270f3e2def66ae7
parentcd639d8927674cda3303c4d4af33565dab12b17b (diff)
downloadrust-be4128d148ae5b0edf9d547530dc5e149697b693.tar.gz
rust-be4128d148ae5b0edf9d547530dc5e149697b693.zip
BTreeMap: Add a test for clone
-rw-r--r--src/libcollectionstest/btree/map.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/libcollectionstest/btree/map.rs b/src/libcollectionstest/btree/map.rs
index dfb72d78d46..c4473b64066 100644
--- a/src/libcollectionstest/btree/map.rs
+++ b/src/libcollectionstest/btree/map.rs
@@ -346,6 +346,38 @@ fn test_bad_zst() {
     }
 }
 
+#[test]
+fn test_clone() {
+    let mut map = BTreeMap::new();
+    let size = 100;
+    assert_eq!(map.len(), 0);
+
+    for i in 0..size {
+        assert_eq!(map.insert(i, 10*i), None);
+        assert_eq!(map.len(), i + 1);
+        assert_eq!(map, map.clone());
+    }
+
+    for i in 0..size {
+        assert_eq!(map.insert(i, 100*i), Some(10*i));
+        assert_eq!(map.len(), size);
+        assert_eq!(map, map.clone());
+    }
+
+    for i in 0..size/2 {
+        assert_eq!(map.remove(&(i*2)), Some(i*200));
+        assert_eq!(map.len(), size - i - 1);
+        assert_eq!(map, map.clone());
+    }
+
+    for i in 0..size/2 {
+        assert_eq!(map.remove(&(2*i)), None);
+        assert_eq!(map.remove(&(2*i+1)), Some(i*200 + 100));
+        assert_eq!(map.len(), size/2 - i - 1);
+        assert_eq!(map, map.clone());
+    }
+}
+
 mod bench {
     use std::collections::BTreeMap;
     use std::__rand::{Rng, thread_rng};