Skip to content

Commit 9503129

Browse files
committed
auto merge of #13572 : yuriks/rust/bitv-renames, r=alexcrichton
Renamed the methods in Bitv that test all bits to have names that, ehm, "roll off the tongue" a bit more easily. :) Also added tests for them while at it, since they seemed to be missing.
2 parents 4c50cf3 + 03c5955 commit 9503129

File tree

1 file changed

+59
-14
lines changed

1 file changed

+59
-14
lines changed

src/libcollections/bitv.rs

Lines changed: 59 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,12 @@ impl SmallBitv {
9797
pub fn set_all(&mut self) { self.bits = !0; }
9898

9999
#[inline]
100-
pub fn is_true(&self, nbits: uint) -> bool {
100+
pub fn all(&self, nbits: uint) -> bool {
101101
small_mask(nbits) & !self.bits == 0
102102
}
103103

104104
#[inline]
105-
pub fn is_false(&self, nbits: uint) -> bool {
105+
pub fn none(&self, nbits: uint) -> bool {
106106
small_mask(nbits) & self.bits == 0
107107
}
108108

@@ -412,13 +412,10 @@ impl Bitv {
412412

413413
/// Returns `true` if all bits are 1
414414
#[inline]
415-
pub fn is_true(&self) -> bool {
415+
pub fn all(&self) -> bool {
416416
match self.rep {
417-
Small(ref b) => b.is_true(self.nbits),
418-
_ => {
419-
for i in self.iter() { if !i { return false; } }
420-
true
421-
}
417+
Small(ref b) => b.all(self.nbits),
418+
_ => self.iter().all(|x| x)
422419
}
423420
}
424421

@@ -433,16 +430,19 @@ impl Bitv {
433430
}
434431

435432
/// Returns `true` if all bits are 0
436-
pub fn is_false(&self) -> bool {
433+
pub fn none(&self) -> bool {
437434
match self.rep {
438-
Small(ref b) => b.is_false(self.nbits),
439-
Big(_) => {
440-
for i in self.iter() { if i { return false; } }
441-
true
442-
}
435+
Small(ref b) => b.none(self.nbits),
436+
_ => self.iter().all(|x| !x)
443437
}
444438
}
445439

440+
#[inline]
441+
/// Returns `true` if any bit is 1
442+
pub fn any(&self) -> bool {
443+
!self.none()
444+
}
445+
446446
pub fn init_to_vec(&self, i: uint) -> uint {
447447
return if self.get(i) { 1 } else { 0 };
448448
}
@@ -1551,6 +1551,51 @@ mod tests {
15511551
assert!(b.contains(&1000));
15521552
}
15531553

1554+
#[test]
1555+
fn test_small_bitv_tests() {
1556+
let v = from_bytes([0]);
1557+
assert!(!v.all());
1558+
assert!(!v.any());
1559+
assert!(v.none());
1560+
1561+
let v = from_bytes([0b00010100]);
1562+
assert!(!v.all());
1563+
assert!(v.any());
1564+
assert!(!v.none());
1565+
1566+
let v = from_bytes([0xFF]);
1567+
assert!(v.all());
1568+
assert!(v.any());
1569+
assert!(!v.none());
1570+
}
1571+
1572+
#[test]
1573+
fn test_big_bitv_tests() {
1574+
let v = from_bytes([ // 88 bits
1575+
0, 0, 0, 0,
1576+
0, 0, 0, 0,
1577+
0, 0, 0]);
1578+
assert!(!v.all());
1579+
assert!(!v.any());
1580+
assert!(v.none());
1581+
1582+
let v = from_bytes([ // 88 bits
1583+
0, 0, 0b00010100, 0,
1584+
0, 0, 0, 0b00110100,
1585+
0, 0, 0]);
1586+
assert!(!v.all());
1587+
assert!(v.any());
1588+
assert!(!v.none());
1589+
1590+
let v = from_bytes([ // 88 bits
1591+
0xFF, 0xFF, 0xFF, 0xFF,
1592+
0xFF, 0xFF, 0xFF, 0xFF,
1593+
0xFF, 0xFF, 0xFF]);
1594+
assert!(v.all());
1595+
assert!(v.any());
1596+
assert!(!v.none());
1597+
}
1598+
15541599
fn rng() -> rand::IsaacRng {
15551600
let seed = &[1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
15561601
rand::SeedableRng::from_seed(seed)

0 commit comments

Comments
 (0)