about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorDaniel Micay <danielmicay@gmail.com>2013-03-10 20:25:09 -0400
committerDaniel Micay <danielmicay@gmail.com>2013-03-11 15:02:55 -0400
commitd55225f04a459c574d9533dcc4c06f953fa8fce5 (patch)
tree6c21c3a688563603b19f438475b192911eea4bea /src/libstd
parentad16fecc332e5dd39236f43c491c009ea798352b (diff)
downloadrust-d55225f04a459c574d9533dcc4c06f953fa8fce5.tar.gz
rust-d55225f04a459c574d9533dcc4c06f953fa8fce5.zip
treemap: add more tests for set difference
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/treemap.rs37
1 files changed, 21 insertions, 16 deletions
diff --git a/src/libstd/treemap.rs b/src/libstd/treemap.rs
index 9cef77cfa76..55a714309af 100644
--- a/src/libstd/treemap.rs
+++ b/src/libstd/treemap.rs
@@ -1141,25 +1141,30 @@ mod test_set {
 
     #[test]
     fn test_difference() {
-        let mut a = TreeSet::new();
-        let mut b = TreeSet::new();
-
-        fail_unless!(a.insert(1));
-        fail_unless!(a.insert(3));
-        fail_unless!(a.insert(5));
-        fail_unless!(a.insert(9));
-        fail_unless!(a.insert(11));
+        fn check_difference(a: &[int], b: &[int], expected: &[int]) {
+            let mut set_a = TreeSet::new();
+            let mut set_b = TreeSet::new();
 
-        fail_unless!(b.insert(3));
-        fail_unless!(b.insert(9));
+            for a.each |x| { fail_unless!(set_a.insert(*x)) }
+            for b.each |y| { fail_unless!(set_b.insert(*y)) }
 
-        let mut i = 0;
-        let expected = [1, 5, 11];
-        for a.difference(&b) |x| {
-            fail_unless!(*x == expected[i]);
-            i += 1
+            let mut i = 0;
+            for set_a.difference(&set_b) |x| {
+                fail_unless!(*x == expected[i]);
+                i += 1;
+            }
+            fail_unless!(i == expected.len());
         }
-        fail_unless!(i == expected.len());
+
+        check_difference([], [], []);
+        check_difference([1, 12], [], [1, 12]);
+        check_difference([], [1, 2, 3, 9], []);
+        check_difference([1, 3, 5, 9, 11],
+                         [3, 9],
+                         [1, 5, 11]);
+        check_difference([-5, 11, 22, 33, 40, 42],
+                         [-12, -5, 14, 23, 34, 38, 39, 50],
+                         [11, 22, 33, 40, 42]);
     }
 
     #[test]