Skip to content

Commit a2b81cc

Browse files
committed
libstd: Fix BigUint::is_even
1 parent 9ee8d50 commit a2b81cc

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/libstd/num/bigint.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ impl Integer for BigUint {
447447
if self.data.is_empty() {
448448
true
449449
} else {
450-
self.data.last().is_even()
450+
self.data[0].is_even()
451451
}
452452
}
453453

@@ -1448,6 +1448,17 @@ mod biguint_tests {
14481448
check(99, 17, 1683);
14491449
}
14501450

1451+
#[test]
1452+
fn test_is_even() {
1453+
assert!(FromStr::from_str::<BigUint>("1").get().is_odd());
1454+
assert!(FromStr::from_str::<BigUint>("2").get().is_even());
1455+
assert!(FromStr::from_str::<BigUint>("1000").get().is_even());
1456+
assert!(FromStr::from_str::<BigUint>("1000000000000000000000").get().is_even());
1457+
assert!(FromStr::from_str::<BigUint>("1000000000000000000001").get().is_odd());
1458+
assert!((BigUint::from_uint(1) << 64).is_even());
1459+
assert!(((BigUint::from_uint(1) << 64) + BigUint::from_uint(1)).is_odd());
1460+
}
1461+
14511462
fn to_str_pairs() -> ~[ (BigUint, ~[(uint, ~str)]) ] {
14521463
let bits = BigDigit::bits;
14531464
~[( Zero::zero(), ~[

0 commit comments

Comments
 (0)