]> git.lizzy.rs Git - rust.git/commitdiff
Give reduction-type tests in Bitv more natural names
authorYuri Kunde Schlesner <yuriks@yuriks.net>
Thu, 17 Apr 2014 05:08:20 +0000 (02:08 -0300)
committerYuri Kunde Schlesner <yuriks@yuriks.net>
Thu, 17 Apr 2014 05:08:20 +0000 (02:08 -0300)
src/libcollections/bitv.rs

index c39914fc993fe7f21dd3fcfbc707681d57aead36..08d3378b54826f5df8dcc2b7470af01625f978b9 100644 (file)
@@ -97,12 +97,12 @@ pub fn equals(&self, b: &SmallBitv, nbits: uint) -> bool {
     pub fn set_all(&mut self) { self.bits = !0; }
 
     #[inline]
-    pub fn is_true(&self, nbits: uint) -> bool {
+    pub fn all(&self, nbits: uint) -> bool {
         small_mask(nbits) & !self.bits == 0
     }
 
     #[inline]
-    pub fn is_false(&self, nbits: uint) -> bool {
+    pub fn none(&self, nbits: uint) -> bool {
         small_mask(nbits) & self.bits == 0
     }
 
@@ -412,9 +412,9 @@ pub fn difference(&mut self, v: &Bitv) -> bool {
 
     /// Returns `true` if all bits are 1
     #[inline]
-    pub fn is_true(&self) -> bool {
+    pub fn all(&self) -> bool {
       match self.rep {
-        Small(ref b) => b.is_true(self.nbits),
+        Small(ref b) => b.all(self.nbits),
         _ => {
           for i in self.iter() { if !i { return false; } }
           true
@@ -433,9 +433,9 @@ pub fn rev_iter<'a>(&'a self) -> Rev<Bits<'a>> {
     }
 
     /// Returns `true` if all bits are 0
-    pub fn is_false(&self) -> bool {
+    pub fn none(&self) -> bool {
       match self.rep {
-        Small(ref b) => b.is_false(self.nbits),
+        Small(ref b) => b.none(self.nbits),
         Big(_) => {
           for i in self.iter() { if i { return false; } }
           true
@@ -443,6 +443,12 @@ pub fn is_false(&self) -> bool {
       }
     }
 
+    #[inline]
+    /// Returns `true` if any bit is 1
+    pub fn any(&self) -> bool {
+        !self.none()
+    }
+
     pub fn init_to_vec(&self, i: uint) -> uint {
       return if self.get(i) { 1 } else { 0 };
     }
@@ -1551,6 +1557,51 @@ fn test_bitv_clone() {
         assert!(b.contains(&1000));
     }
 
+    #[test]
+    fn test_small_bitv_tests() {
+        let v = from_bytes([0]);
+        assert!(!v.all());
+        assert!(!v.any());
+        assert!(v.none());
+
+        let v = from_bytes([0b00010100]);
+        assert!(!v.all());
+        assert!(v.any());
+        assert!(!v.none());
+
+        let v = from_bytes([0xFF]);
+        assert!(v.all());
+        assert!(v.any());
+        assert!(!v.none());
+    }
+
+    #[test]
+    fn test_big_bitv_tests() {
+        let v = from_bytes([ // 88 bits
+            0, 0, 0, 0,
+            0, 0, 0, 0,
+            0, 0, 0]);
+        assert!(!v.all());
+        assert!(!v.any());
+        assert!(v.none());
+
+        let v = from_bytes([ // 88 bits
+            0, 0, 0b00010100, 0,
+            0, 0, 0, 0b00110100,
+            0, 0, 0]);
+        assert!(!v.all());
+        assert!(v.any());
+        assert!(!v.none());
+
+        let v = from_bytes([ // 88 bits
+            0xFF, 0xFF, 0xFF, 0xFF,
+            0xFF, 0xFF, 0xFF, 0xFF,
+            0xFF, 0xFF, 0xFF]);
+        assert!(v.all());
+        assert!(v.any());
+        assert!(!v.none());
+    }
+
     fn rng() -> rand::IsaacRng {
         let seed = &[1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
         rand::SeedableRng::from_seed(seed)