コード例 #1
0
ファイル: test_rationals.py プロジェクト: mulkieran/justbases
 def testRoundingExceptions(self):
     """
     Test exceptions.
     """
     # pylint: disable=pointless-statement
     with self.assertRaises(BasesError):
         Rationals.round_to_int(Fraction(1, 2), None)
コード例 #2
0
ファイル: test_rationals.py プロジェクト: mulkieran/justbases
 def test_rounding_exceptions(self):
     """
     Test exceptions.
     """
     # pylint: disable=pointless-statement
     with self.assertRaises(BasesError):
         Rationals.round_to_int(Fraction(1, 2), None)
コード例 #3
0
 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)
コード例 #4
0
ファイル: test_radix.py プロジェクト: mulkieran/justbases
 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
コード例 #5
0
ファイル: test_rationals.py プロジェクト: mulkieran/justbases
    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))
コード例 #6
0
ファイル: test_rationals.py プロジェクト: mulkieran/justbases
    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)
        )
コード例 #7
0
ファイル: test_rationals.py プロジェクト: mulkieran/justbases
    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)
コード例 #8
0
ファイル: test_rationals.py プロジェクト: mulkieran/justbases
    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)