about summary refs log tree commit diff
path: root/src/libcollections/enum_set.rs
diff options
context:
space:
mode:
authorJoseph Crail <jbcrail@gmail.com>2014-11-07 18:46:29 -0500
committerJoseph Crail <jbcrail@gmail.com>2014-11-07 18:46:29 -0500
commit12db4de554faf8e2f6baca4514b1e5983cb60783 (patch)
tree060faef1f117c456e3d1276e6682036952b92e97 /src/libcollections/enum_set.rs
parent01b599eb34125b7bc4d01fd7cc24876179ad6798 (diff)
downloadrust-12db4de554faf8e2f6baca4514b1e5983cb60783.tar.gz
rust-12db4de554faf8e2f6baca4514b1e5983cb60783.zip
Add tests for BitAnd and BitXor.
Diffstat (limited to 'src/libcollections/enum_set.rs')
-rw-r--r--src/libcollections/enum_set.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/libcollections/enum_set.rs b/src/libcollections/enum_set.rs
index 0737620690b..b2b26914b44 100644
--- a/src/libcollections/enum_set.rs
+++ b/src/libcollections/enum_set.rs
@@ -403,9 +403,29 @@ mod test {
         let elems = e_intersection.iter().collect();
         assert_eq!(vec![C], elems)
 
+        // Another way to express intersection
+        let e_intersection = e1 - (e1 - e2);
+        let elems = e_intersection.iter().collect();
+        assert_eq!(vec![C], elems)
+
         let e_subtract = e1 - e2;
         let elems = e_subtract.iter().collect();
         assert_eq!(vec![A], elems)
+
+        // Bitwise XOR of two sets, aka symmetric difference
+        let e_symmetric_diff = e1 ^ e2;
+        let elems = e_symmetric_diff.iter().collect();
+        assert_eq!(vec![A,B], elems)
+
+        // Another way to express symmetric difference
+        let e_symmetric_diff = (e1 - e2) | (e2 - e1);
+        let elems = e_symmetric_diff.iter().collect();
+        assert_eq!(vec![A,B], elems)
+
+        // Yet another way to express symmetric difference
+        let e_symmetric_diff = (e1 | e2) - (e1 & e2);
+        let elems = e_symmetric_diff.iter().collect();
+        assert_eq!(vec![A,B], elems)
     }
 
     #[test]