Skip to content

Commit 5cc4e51

Browse files
committed
auto merge of #7730 : chris-morgan/rust/bitv-eq_vec-bool, r=cmr
Fixes #7711.
2 parents 4e1292a + 5b656cf commit 5cc4e51

File tree

1 file changed

+67
-69
lines changed

1 file changed

+67
-69
lines changed

src/libextra/bitv.rs

Lines changed: 67 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -489,18 +489,15 @@ impl Bitv {
489489

490490

491491
/**
492-
* Compare a bitvector to a vector of uint
492+
* Compare a bitvector to a vector of bool.
493493
*
494-
* The uint vector is expected to only contain the values 0u and 1u. Both
495-
* the bitvector and vector must have the same length
494+
* Both the bitvector and vector must have the same length.
496495
*/
497-
pub fn eq_vec(&self, v: ~[uint]) -> bool {
496+
pub fn eq_vec(&self, v: &[bool]) -> bool {
498497
assert_eq!(self.nbits, v.len());
499498
let mut i = 0;
500499
while i < self.nbits {
501-
let w0 = self.get(i);
502-
let w1 = v[i];
503-
if !w0 && w1 != 0u || w0 && w1 == 0u { return false; }
500+
if self.get(i) != v[i] { return false; }
504501
i = i + 1;
505502
}
506503
true
@@ -887,16 +884,16 @@ mod tests {
887884
#[test]
888885
fn test_0_elements() {
889886
let act = Bitv::new(0u, false);
890-
let exp = vec::from_elem::<uint>(0u, 0u);
887+
let exp = vec::from_elem::<bool>(0u, false);
891888
assert!(act.eq_vec(exp));
892889
}
893890
894891
#[test]
895892
fn test_1_element() {
896893
let mut act = Bitv::new(1u, false);
897-
assert!(act.eq_vec(~[0u]));
894+
assert!(act.eq_vec(~[false]));
898895
act = Bitv::new(1u, true);
899-
assert!(act.eq_vec(~[1u]));
896+
assert!(act.eq_vec(~[true]));
900897
}
901898
902899
#[test]
@@ -913,11 +910,12 @@ mod tests {
913910
// all 0
914911
915912
act = Bitv::new(10u, false);
916-
assert!((act.eq_vec(~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u])));
913+
assert!((act.eq_vec(
914+
~[false, false, false, false, false, false, false, false, false, false])));
917915
// all 1
918916
919917
act = Bitv::new(10u, true);
920-
assert!((act.eq_vec(~[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u])));
918+
assert!((act.eq_vec(~[true, true, true, true, true, true, true, true, true, true])));
921919
// mixed
922920
923921
act = Bitv::new(10u, false);
@@ -926,7 +924,7 @@ mod tests {
926924
act.set(2u, true);
927925
act.set(3u, true);
928926
act.set(4u, true);
929-
assert!((act.eq_vec(~[1u, 1u, 1u, 1u, 1u, 0u, 0u, 0u, 0u, 0u])));
927+
assert!((act.eq_vec(~[true, true, true, true, true, false, false, false, false, false])));
930928
// mixed
931929
932930
act = Bitv::new(10u, false);
@@ -935,15 +933,15 @@ mod tests {
935933
act.set(7u, true);
936934
act.set(8u, true);
937935
act.set(9u, true);
938-
assert!((act.eq_vec(~[0u, 0u, 0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u])));
936+
assert!((act.eq_vec(~[false, false, false, false, false, true, true, true, true, true])));
939937
// mixed
940938
941939
act = Bitv::new(10u, false);
942940
act.set(0u, true);
943941
act.set(3u, true);
944942
act.set(6u, true);
945943
act.set(9u, true);
946-
assert!((act.eq_vec(~[1u, 0u, 0u, 1u, 0u, 0u, 1u, 0u, 0u, 1u])));
944+
assert!((act.eq_vec(~[true, false, false, true, false, false, true, false, false, true])));
947945
}
948946
949947
#[test]
@@ -953,16 +951,16 @@ mod tests {
953951
954952
act = Bitv::new(31u, false);
955953
assert!(act.eq_vec(
956-
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
957-
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
958-
0u, 0u, 0u, 0u, 0u]));
954+
~[false, false, false, false, false, false, false, false, false, false, false,
955+
false, false, false, false, false, false, false, false, false, false, false, false,
956+
false, false, false, false, false, false, false, false]));
959957
// all 1
960958
961959
act = Bitv::new(31u, true);
962960
assert!(act.eq_vec(
963-
~[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
964-
1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
965-
1u, 1u, 1u, 1u, 1u]));
961+
~[true, true, true, true, true, true, true, true, true, true, true, true, true,
962+
true, true, true, true, true, true, true, true, true, true, true, true, true, true,
963+
true, true, true, true]));
966964
// mixed
967965
968966
act = Bitv::new(31u, false);
@@ -975,9 +973,9 @@ mod tests {
975973
act.set(6u, true);
976974
act.set(7u, true);
977975
assert!(act.eq_vec(
978-
~[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 0u, 0u, 0u, 0u,
979-
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
980-
0u, 0u, 0u, 0u, 0u]));
976+
~[true, true, true, true, true, true, true, true, false, false, false, false, false,
977+
false, false, false, false, false, false, false, false, false, false, false, false,
978+
false, false, false, false, false, false]));
981979
// mixed
982980
983981
act = Bitv::new(31u, false);
@@ -990,9 +988,9 @@ mod tests {
990988
act.set(22u, true);
991989
act.set(23u, true);
992990
assert!(act.eq_vec(
993-
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
994-
0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 0u,
995-
0u, 0u, 0u, 0u, 0u]));
991+
~[false, false, false, false, false, false, false, false, false, false, false,
992+
false, false, false, false, false, true, true, true, true, true, true, true, true,
993+
false, false, false, false, false, false, false]));
996994
// mixed
997995
998996
act = Bitv::new(31u, false);
@@ -1004,19 +1002,19 @@ mod tests {
10041002
act.set(29u, true);
10051003
act.set(30u, true);
10061004
assert!(act.eq_vec(
1007-
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1008-
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u,
1009-
1u, 1u, 1u, 1u, 1u]));
1005+
~[false, false, false, false, false, false, false, false, false, false, false,
1006+
false, false, false, false, false, false, false, false, false, false, false, false,
1007+
false, true, true, true, true, true, true, true]));
10101008
// mixed
10111009
10121010
act = Bitv::new(31u, false);
10131011
act.set(3u, true);
10141012
act.set(17u, true);
10151013
act.set(30u, true);
10161014
assert!(act.eq_vec(
1017-
~[0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1018-
0u, 0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1019-
0u, 0u, 0u, 0u, 1u]));
1015+
~[false, false, false, true, false, false, false, false, false, false, false, false,
1016+
false, false, false, false, false, true, false, false, false, false, false, false,
1017+
false, false, false, false, false, false, true]));
10201018
}
10211019
10221020
#[test]
@@ -1026,16 +1024,16 @@ mod tests {
10261024
10271025
act = Bitv::new(32u, false);
10281026
assert!(act.eq_vec(
1029-
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1030-
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1031-
0u, 0u, 0u, 0u, 0u, 0u]));
1027+
~[false, false, false, false, false, false, false, false, false, false, false,
1028+
false, false, false, false, false, false, false, false, false, false, false, false,
1029+
false, false, false, false, false, false, false, false, false]));
10321030
// all 1
10331031
10341032
act = Bitv::new(32u, true);
10351033
assert!(act.eq_vec(
1036-
~[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
1037-
1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
1038-
1u, 1u, 1u, 1u, 1u, 1u]));
1034+
~[true, true, true, true, true, true, true, true, true, true, true, true, true,
1035+
true, true, true, true, true, true, true, true, true, true, true, true, true, true,
1036+
true, true, true, true, true]));
10391037
// mixed
10401038
10411039
act = Bitv::new(32u, false);
@@ -1048,9 +1046,9 @@ mod tests {
10481046
act.set(6u, true);
10491047
act.set(7u, true);
10501048
assert!(act.eq_vec(
1051-
~[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 0u, 0u, 0u, 0u,
1052-
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1053-
0u, 0u, 0u, 0u, 0u, 0u]));
1049+
~[true, true, true, true, true, true, true, true, false, false, false, false, false,
1050+
false, false, false, false, false, false, false, false, false, false, false, false,
1051+
false, false, false, false, false, false, false]));
10541052
// mixed
10551053
10561054
act = Bitv::new(32u, false);
@@ -1063,9 +1061,9 @@ mod tests {
10631061
act.set(22u, true);
10641062
act.set(23u, true);
10651063
assert!(act.eq_vec(
1066-
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1067-
0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 0u,
1068-
0u, 0u, 0u, 0u, 0u, 0u]));
1064+
~[false, false, false, false, false, false, false, false, false, false, false,
1065+
false, false, false, false, false, true, true, true, true, true, true, true, true,
1066+
false, false, false, false, false, false, false, false]));
10691067
// mixed
10701068
10711069
act = Bitv::new(32u, false);
@@ -1078,9 +1076,9 @@ mod tests {
10781076
act.set(30u, true);
10791077
act.set(31u, true);
10801078
assert!(act.eq_vec(
1081-
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1082-
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u,
1083-
1u, 1u, 1u, 1u, 1u, 1u]));
1079+
~[false, false, false, false, false, false, false, false, false, false, false,
1080+
false, false, false, false, false, false, false, false, false, false, false, false,
1081+
false, true, true, true, true, true, true, true, true]));
10841082
// mixed
10851083
10861084
act = Bitv::new(32u, false);
@@ -1089,9 +1087,9 @@ mod tests {
10891087
act.set(30u, true);
10901088
act.set(31u, true);
10911089
assert!(act.eq_vec(
1092-
~[0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1093-
0u, 0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1094-
0u, 0u, 0u, 0u, 1u, 1u]));
1090+
~[false, false, false, true, false, false, false, false, false, false, false, false,
1091+
false, false, false, false, false, true, false, false, false, false, false, false,
1092+
false, false, false, false, false, false, true, true]));
10951093
}
10961094
10971095
#[test]
@@ -1101,16 +1099,16 @@ mod tests {
11011099
11021100
act = Bitv::new(33u, false);
11031101
assert!(act.eq_vec(
1104-
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1105-
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1106-
0u, 0u, 0u, 0u, 0u, 0u, 0u]));
1102+
~[false, false, false, false, false, false, false, false, false, false, false,
1103+
false, false, false, false, false, false, false, false, false, false, false, false,
1104+
false, false, false, false, false, false, false, false, false, false]));
11071105
// all 1
11081106
11091107
act = Bitv::new(33u, true);
11101108
assert!(act.eq_vec(
1111-
~[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
1112-
1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
1113-
1u, 1u, 1u, 1u, 1u, 1u, 1u]));
1109+
~[true, true, true, true, true, true, true, true, true, true, true, true, true,
1110+
true, true, true, true, true, true, true, true, true, true, true, true, true, true,
1111+
true, true, true, true, true, true]));
11141112
// mixed
11151113
11161114
act = Bitv::new(33u, false);
@@ -1123,9 +1121,9 @@ mod tests {
11231121
act.set(6u, true);
11241122
act.set(7u, true);
11251123
assert!(act.eq_vec(
1126-
~[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 0u, 0u, 0u, 0u,
1127-
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1128-
0u, 0u, 0u, 0u, 0u, 0u, 0u]));
1124+
~[true, true, true, true, true, true, true, true, false, false, false, false, false,
1125+
false, false, false, false, false, false, false, false, false, false, false, false,
1126+
false, false, false, false, false, false, false, false]));
11291127
// mixed
11301128
11311129
act = Bitv::new(33u, false);
@@ -1138,9 +1136,9 @@ mod tests {
11381136
act.set(22u, true);
11391137
act.set(23u, true);
11401138
assert!(act.eq_vec(
1141-
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1142-
0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 0u,
1143-
0u, 0u, 0u, 0u, 0u, 0u, 0u]));
1139+
~[false, false, false, false, false, false, false, false, false, false, false,
1140+
false, false, false, false, false, true, true, true, true, true, true, true, true,
1141+
false, false, false, false, false, false, false, false, false]));
11441142
// mixed
11451143
11461144
act = Bitv::new(33u, false);
@@ -1153,9 +1151,9 @@ mod tests {
11531151
act.set(30u, true);
11541152
act.set(31u, true);
11551153
assert!(act.eq_vec(
1156-
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1157-
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u,
1158-
1u, 1u, 1u, 1u, 1u, 1u, 0u]));
1154+
~[false, false, false, false, false, false, false, false, false, false, false,
1155+
false, false, false, false, false, false, false, false, false, false, false, false,
1156+
false, true, true, true, true, true, true, true, true, false]));
11591157
// mixed
11601158
11611159
act = Bitv::new(33u, false);
@@ -1165,9 +1163,9 @@ mod tests {
11651163
act.set(31u, true);
11661164
act.set(32u, true);
11671165
assert!(act.eq_vec(
1168-
~[0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1169-
0u, 0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
1170-
0u, 0u, 0u, 0u, 1u, 1u, 1u]));
1166+
~[false, false, false, true, false, false, false, false, false, false, false, false,
1167+
false, false, false, false, false, true, false, false, false, false, false, false,
1168+
false, false, false, false, false, false, true, true, true]));
11711169
}
11721170
11731171
#[test]

0 commit comments

Comments
 (0)