@@ -97,12 +97,12 @@ impl SmallBitv {
97
97
pub fn set_all ( & mut self ) { self . bits = !0 ; }
98
98
99
99
#[ inline]
100
- pub fn is_true ( & self , nbits : uint ) -> bool {
100
+ pub fn all ( & self , nbits : uint ) -> bool {
101
101
small_mask ( nbits) & !self . bits == 0
102
102
}
103
103
104
104
#[ inline]
105
- pub fn is_false ( & self , nbits : uint ) -> bool {
105
+ pub fn none ( & self , nbits : uint ) -> bool {
106
106
small_mask ( nbits) & self . bits == 0
107
107
}
108
108
@@ -412,9 +412,9 @@ impl Bitv {
412
412
413
413
/// Returns `true` if all bits are 1
414
414
#[ inline]
415
- pub fn is_true ( & self ) -> bool {
415
+ pub fn all ( & self ) -> bool {
416
416
match self . rep {
417
- Small ( ref b) => b. is_true ( self . nbits ) ,
417
+ Small ( ref b) => b. all ( self . nbits ) ,
418
418
_ => {
419
419
for i in self . iter ( ) { if !i { return false ; } }
420
420
true
@@ -433,16 +433,22 @@ impl Bitv {
433
433
}
434
434
435
435
/// Returns `true` if all bits are 0
436
- pub fn is_false ( & self ) -> bool {
436
+ pub fn none ( & self ) -> bool {
437
437
match self . rep {
438
- Small ( ref b) => b. is_false ( self . nbits ) ,
438
+ Small ( ref b) => b. none ( self . nbits ) ,
439
439
Big ( _) => {
440
440
for i in self . iter ( ) { if i { return false ; } }
441
441
true
442
442
}
443
443
}
444
444
}
445
445
446
+ #[ inline]
447
+ /// Returns `true` if any bit is 1
448
+ pub fn any ( & self ) -> bool {
449
+ !self . none ( )
450
+ }
451
+
446
452
pub fn init_to_vec ( & self , i : uint ) -> uint {
447
453
return if self . get ( i) { 1 } else { 0 } ;
448
454
}
@@ -1551,6 +1557,51 @@ mod tests {
1551
1557
assert ! ( b. contains( & 1000 ) ) ;
1552
1558
}
1553
1559
1560
+ #[ test]
1561
+ fn test_small_bitv_tests ( ) {
1562
+ let v = from_bytes ( [ 0 ] ) ;
1563
+ assert ! ( !v. all( ) ) ;
1564
+ assert ! ( !v. any( ) ) ;
1565
+ assert ! ( v. none( ) ) ;
1566
+
1567
+ let v = from_bytes ( [ 0b00010100 ] ) ;
1568
+ assert ! ( !v. all( ) ) ;
1569
+ assert ! ( v. any( ) ) ;
1570
+ assert ! ( !v. none( ) ) ;
1571
+
1572
+ let v = from_bytes ( [ 0xFF ] ) ;
1573
+ assert ! ( v. all( ) ) ;
1574
+ assert ! ( v. any( ) ) ;
1575
+ assert ! ( !v. none( ) ) ;
1576
+ }
1577
+
1578
+ #[ test]
1579
+ fn test_big_bitv_tests ( ) {
1580
+ let v = from_bytes ( [ // 88 bits
1581
+ 0 , 0 , 0 , 0 ,
1582
+ 0 , 0 , 0 , 0 ,
1583
+ 0 , 0 , 0 ] ) ;
1584
+ assert ! ( !v. all( ) ) ;
1585
+ assert ! ( !v. any( ) ) ;
1586
+ assert ! ( v. none( ) ) ;
1587
+
1588
+ let v = from_bytes ( [ // 88 bits
1589
+ 0 , 0 , 0b00010100 , 0 ,
1590
+ 0 , 0 , 0 , 0b00110100 ,
1591
+ 0 , 0 , 0 ] ) ;
1592
+ assert ! ( !v. all( ) ) ;
1593
+ assert ! ( v. any( ) ) ;
1594
+ assert ! ( !v. none( ) ) ;
1595
+
1596
+ let v = from_bytes ( [ // 88 bits
1597
+ 0xFF , 0xFF , 0xFF , 0xFF ,
1598
+ 0xFF , 0xFF , 0xFF , 0xFF ,
1599
+ 0xFF , 0xFF , 0xFF ] ) ;
1600
+ assert ! ( v. all( ) ) ;
1601
+ assert ! ( v. any( ) ) ;
1602
+ assert ! ( !v. none( ) ) ;
1603
+ }
1604
+
1554
1605
fn rng ( ) -> rand:: IsaacRng {
1555
1606
let seed = & [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ] ;
1556
1607
rand:: SeedableRng :: from_seed ( seed)
0 commit comments