diff options
| author | bors <bors@rust-lang.org> | 2013-05-11 22:40:36 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-05-11 22:40:36 -0700 |
| commit | 36771ef60997b5882ad391839b5f7854d077cc42 (patch) | |
| tree | 47150bad4dd0ef6295b730e463f595b30db50f44 | |
| parent | 1f62b23411abcfbe66eeea294f4258f1bb169e7d (diff) | |
| parent | a2b81ccba45fc2dbeee83815f5463e48f29c7569 (diff) | |
| download | rust-36771ef60997b5882ad391839b5f7854d077cc42.tar.gz rust-36771ef60997b5882ad391839b5f7854d077cc42.zip | |
auto merge of #6429 : gifnksm/rust/bigint-is_even, r=catamorphism
`BigUint::is_even()` didn't return correct value.
| -rw-r--r-- | src/libstd/num/bigint.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/libstd/num/bigint.rs b/src/libstd/num/bigint.rs index 7b39b200079..498c86dd8e1 100644 --- a/src/libstd/num/bigint.rs +++ b/src/libstd/num/bigint.rs @@ -445,7 +445,7 @@ impl Integer for BigUint { if self.data.is_empty() { true } else { - self.data.last().is_even() + self.data[0].is_even() } } @@ -1446,6 +1446,17 @@ mod biguint_tests { check(99, 17, 1683); } + #[test] + fn test_is_even() { + assert!(FromStr::from_str::<BigUint>("1").get().is_odd()); + assert!(FromStr::from_str::<BigUint>("2").get().is_even()); + assert!(FromStr::from_str::<BigUint>("1000").get().is_even()); + assert!(FromStr::from_str::<BigUint>("1000000000000000000000").get().is_even()); + assert!(FromStr::from_str::<BigUint>("1000000000000000000001").get().is_odd()); + assert!((BigUint::from_uint(1) << 64).is_even()); + assert!(((BigUint::from_uint(1) << 64) + BigUint::from_uint(1)).is_odd()); + } + fn to_str_pairs() -> ~[ (BigUint, ~[(uint, ~str)]) ] { let bits = BigDigit::bits; ~[( Zero::zero(), ~[ |
