Auto merge of #182 - ollie27:ratio_posneg, r=cuviper
Correct Ratio::is_negative and Ratio::is_positive
Zero is not positive or negative.
This was broken in 8be7e7bab5
.
This commit is contained in:
commit
774bf31ec6
|
@ -526,12 +526,14 @@ impl<T: Clone + Integer + Signed> Signed for Ratio<T> {
|
|||
|
||||
#[inline]
|
||||
fn is_positive(&self) -> bool {
|
||||
!self.is_negative()
|
||||
(self.numer.is_positive() && self.denom.is_positive()) ||
|
||||
(self.numer.is_negative() && self.denom.is_negative())
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn is_negative(&self) -> bool {
|
||||
self.numer.is_negative() ^ self.denom.is_negative()
|
||||
(self.numer.is_negative() && self.denom.is_positive()) ||
|
||||
(self.numer.is_positive() && self.denom.is_negative())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -674,6 +676,14 @@ mod test {
|
|||
numer: -1,
|
||||
denom: 2,
|
||||
};
|
||||
pub const _1_NEG2: Rational = Ratio {
|
||||
numer: 1,
|
||||
denom: -2,
|
||||
};
|
||||
pub const _NEG1_NEG2: Rational = Ratio {
|
||||
numer: -1,
|
||||
denom: -2,
|
||||
};
|
||||
pub const _1_3: Rational = Ratio {
|
||||
numer: 1,
|
||||
denom: 3,
|
||||
|
@ -1081,9 +1091,17 @@ mod test {
|
|||
assert_eq!(_1_2.abs_sub(&_3_2), Zero::zero());
|
||||
assert_eq!(_1_2.signum(), One::one());
|
||||
assert_eq!(_NEG1_2.signum(), -<Ratio<isize>>::one());
|
||||
assert_eq!(_0.signum(), Zero::zero());
|
||||
assert!(_NEG1_2.is_negative());
|
||||
assert!(_1_NEG2.is_negative());
|
||||
assert!(!_NEG1_2.is_positive());
|
||||
assert!(!_1_NEG2.is_positive());
|
||||
assert!(_1_2.is_positive());
|
||||
assert!(_NEG1_NEG2.is_positive());
|
||||
assert!(!_1_2.is_negative());
|
||||
assert!(!_NEG1_NEG2.is_negative());
|
||||
assert!(!_0.is_positive());
|
||||
assert!(!_0.is_negative());
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
Loading…
Reference in New Issue