def testRoundingExceptions(self): """ Test exceptions. """ # pylint: disable=pointless-statement with self.assertRaises(BasesError): Rationals.round_to_int(Fraction(1, 2), None)
def test_rounding_exceptions(self): """ Test exceptions. """ # pylint: disable=pointless-statement with self.assertRaises(BasesError): Rationals.round_to_int(Fraction(1, 2), None)
def test_as_int(self, radix, method): """ Test equivalence with two paths. """ result1 = Rationals.round_to_int(radix.as_rational(), method) result2 = radix.as_int(method) self.assertEqual(result1, result2)
def testAsInt(self, radix, method): """ Test equivalence with two paths. """ result1 = Rationals.round_to_int(radix.as_rational(), method) result2 = radix.as_int(method) assert result1 == result2
def test_rounding(self, value, method): """ Test rounding to int. """ (result, _) = Rationals.round_to_int(value, method) self.assertIsInstance(result, int) (lower, upper) = (result - 1, result + 1) self.assertTrue((lower <= value <= result) or (result <= value <= upper))
def testRounding(self, value, method): """ Test rounding to int. """ (result, _) = Rationals.round_to_int(value, method) self.assertIsInstance(result, six.integer_types) (lower, upper) = (result - 1, result + 1) self.assertTrue( (lower <= value and value <= result) or \ (result <= value and value <= upper) )
def testRoundingPrecise(self, numerator): """ Test with predicted value. """ # pylint: disable=too-many-statements value = Fraction(numerator, 10) (result, rel) = \ Rationals.round_to_int(value, RoundingMethods.ROUND_DOWN) self.assertEqual(result, 0) self.assertEqual(rel, -value) (result, rel) = \ Rationals.round_to_int(-value, RoundingMethods.ROUND_DOWN) self.assertEqual(result, -1) self.assertEqual(rel, value - 1) (result, rel) = \ Rationals.round_to_int(value, RoundingMethods.ROUND_UP) self.assertEqual(result, 1) self.assertEqual(rel, 1 - value) (result, rel) = \ Rationals.round_to_int(-value, RoundingMethods.ROUND_UP) self.assertEqual(result, 0) self.assertEqual(rel, value) (result, rel) = \ Rationals.round_to_int(value, RoundingMethods.ROUND_TO_ZERO) self.assertEqual(result, 0) self.assertEqual(rel, -value) (result, rel) = \ Rationals.round_to_int(-value, RoundingMethods.ROUND_TO_ZERO) self.assertEqual(result, 0) self.assertEqual(rel, value) (result, rel) = \ Rationals.round_to_int(value, RoundingMethods.ROUND_HALF_UP) if numerator < 5: self.assertEqual(result, 0) self.assertEqual(rel, -value) else: self.assertEqual(result, 1) self.assertEqual(rel, 1 - value) (result, rel) = \ Rationals.round_to_int(-value, RoundingMethods.ROUND_HALF_UP) if numerator <= 5: self.assertEqual(result, 0) self.assertEqual(rel, value) else: self.assertEqual(result, -1) self.assertEqual(rel, value - 1) (result, rel) = \ Rationals.round_to_int(value, RoundingMethods.ROUND_HALF_DOWN) if numerator > 5: self.assertEqual(result, 1) self.assertEqual(rel, 1 - value) else: self.assertEqual(result, 0) self.assertEqual(rel, -value) (result, rel) = \ Rationals.round_to_int(-value, RoundingMethods.ROUND_HALF_DOWN) if numerator >= 5: self.assertEqual(result, -1) self.assertEqual(rel, value - 1) else: self.assertEqual(result, 0) self.assertEqual(rel, value) (result, rel) = \ Rationals.round_to_int(value, RoundingMethods.ROUND_HALF_ZERO) if numerator > 5: self.assertEqual(result, 1) self.assertEqual(rel, 1 - value) else: self.assertEqual(result, 0) self.assertEqual(rel, -value) (result, rel) = \ Rationals.round_to_int(-value, RoundingMethods.ROUND_HALF_ZERO) if numerator > 5: self.assertEqual(result, -1) self.assertEqual(rel, value - 1) else: self.assertEqual(result, 0) self.assertEqual(rel, value)
def test_rounding_precise(self, numerator): """ Test with predicted value. """ # pylint: disable=too-many-statements value = Fraction(numerator, 10) (result, rel) = Rationals.round_to_int(value, RoundingMethods.ROUND_DOWN) self.assertEqual(result, 0) self.assertEqual(rel, -1) (result, rel) = Rationals.round_to_int(-value, RoundingMethods.ROUND_DOWN) self.assertEqual(result, -1) self.assertEqual(rel, -1) (result, rel) = Rationals.round_to_int(value, RoundingMethods.ROUND_UP) self.assertEqual(result, 1) self.assertEqual(rel, 1) (result, rel) = Rationals.round_to_int(-value, RoundingMethods.ROUND_UP) self.assertEqual(result, 0) self.assertEqual(rel, 1) (result, rel) = Rationals.round_to_int(value, RoundingMethods.ROUND_TO_ZERO) self.assertEqual(result, 0) self.assertEqual(rel, -1) (result, rel) = Rationals.round_to_int(-value, RoundingMethods.ROUND_TO_ZERO) self.assertEqual(result, 0) self.assertEqual(rel, 1) (result, rel) = Rationals.round_to_int(value, RoundingMethods.ROUND_HALF_UP) if numerator < 5: self.assertEqual(result, 0) self.assertEqual(rel, -1) else: self.assertEqual(result, 1) self.assertEqual(rel, 1) (result, rel) = Rationals.round_to_int(-value, RoundingMethods.ROUND_HALF_UP) if numerator <= 5: self.assertEqual(result, 0) self.assertEqual(rel, 1) else: self.assertEqual(result, -1) self.assertEqual(rel, -1) (result, rel) = Rationals.round_to_int(value, RoundingMethods.ROUND_HALF_DOWN) if numerator > 5: self.assertEqual(result, 1) self.assertEqual(rel, 1) else: self.assertEqual(result, 0) self.assertEqual(rel, -1) (result, rel) = Rationals.round_to_int(-value, RoundingMethods.ROUND_HALF_DOWN) if numerator >= 5: self.assertEqual(result, -1) self.assertEqual(rel, -1) else: self.assertEqual(result, 0) self.assertEqual(rel, 1) (result, rel) = Rationals.round_to_int(value, RoundingMethods.ROUND_HALF_ZERO) if numerator > 5: self.assertEqual(result, 1) self.assertEqual(rel, 1) else: self.assertEqual(result, 0) self.assertEqual(rel, -1) (result, rel) = Rationals.round_to_int(-value, RoundingMethods.ROUND_HALF_ZERO) if numerator > 5: self.assertEqual(result, -1) self.assertEqual(rel, -1) else: self.assertEqual(result, 0) self.assertEqual(rel, 1)