Пример #1
0
 def testUlp(self, radix):
     """
     Verify that ulp has correct relation to ``radix``.
     """
     result = radix.ulp
     if radix.repeating_part != []:
         self.assertIsNone(result)
     else:
         (carry_out, non_repeating_part) = \
            Nats.carry_in(radix.non_repeating_part, 1, radix.base)
         (carry_out, integer_part) = \
            Nats.carry_in(radix.integer_part, carry_out, radix.base)
         if carry_out != 0:
             integer_part = [carry_out] + integer_part
         new = Radix(
            radix.sign if radix.sign != 0 else 1,
            integer_part,
            non_repeating_part,
            [],
            radix.base
         )
         difference = new.as_rational() - radix.as_rational()
         if radix.sign < 0:
             self.assertEqual(difference, -result)
         else:
             self.assertEqual(difference, result)
Пример #2
0
 def testExceptions(self):
     """ Test throwing exception. """
     with self.assertRaises(BasesError):
         Nats.convert_from_int(-32, 2)
     with self.assertRaises(BasesError):
         Nats.convert_from_int(32, -2)
     with self.assertRaises(BasesError):
         Nats.convert([1], 1, 2)
     with self.assertRaises(BasesError):
         Nats.convert([1], 2, 1)
     with self.assertRaises(BasesError):
         Nats.convert_to_int([1], 1)
     with self.assertRaises(BasesError):
         Nats.convert_to_int([-1], 2)
     with self.assertRaises(BasesError):
         Nats.carry_in([-1], 1, 2)
     with self.assertRaises(BasesError):
         Nats.carry_in([1], -1, 2)
     with self.assertRaises(BasesError):
         Nats.carry_in([1], 1, 1)
     with self.assertRaises(BasesError):
         Nats.roundTo([1], 0, 2, RoundingMethods.ROUND_DOWN)
     with self.assertRaises(BasesError):
         Nats.roundTo([3], 2, 2, RoundingMethods.ROUND_DOWN)
     with self.assertRaises(BasesError):
         Nats.roundTo([1], 2, 2, None)
Пример #3
0
    def testCarryIn(self, strategy):
        """
        Test carry_in.

        :param strategy: the strategy (tuple of value, carry, base)
        """
        (value, base, carry) = strategy
        (carry_out, result) = Nats.carry_in(value, carry, base)
        assert len(result) == len(value)

        result2 = Nats.convert_from_int(
           Nats.convert_to_int(value, base) + carry,
           base
        )

        assert len(result2) >= len(result)

        assert (len(result2) == len(result)) or \
           result2[0] == carry_out and result2[1:] == result

        assert not (len(result2) == len(result)) or result2 == result
Пример #4
0
    def test_carry_in(self, strategy):
        """
        Test carry_in.

        :param strategy: the strategy (tuple of value, carry, base)
        """
        (value, carry, base) = strategy
        (carry_out, result) = Nats.carry_in(value, carry, base)
        self.assertEqual(len(result), len(value))

        result2 = Nats.convert_from_int(Nats.convert_to_int(value, base) + carry, base)

        self.assertGreaterEqual(len(result2), len(result))

        self.assertTrue(
            (len(result2) == len(result))
            or result2[0] == carry_out
            and result2[1:] == result
        )

        self.assertTrue(not (len(result2) == len(result)) or result2 == result)
Пример #5
0
 def test_exceptions(self):
     """Test throwing exception."""
     with self.assertRaises(BasesError):
         Nats.convert_from_int(-32, 2)
     with self.assertRaises(BasesError):
         Nats.convert_from_int(32, -2)
     with self.assertRaises(BasesError):
         Nats.convert([1], 1, 2)
     with self.assertRaises(BasesError):
         Nats.convert([1], 2, 1)
     with self.assertRaises(BasesError):
         Nats.convert_to_int([1], 1)
     with self.assertRaises(BasesError):
         Nats.convert_to_int([-1], 2)
     with self.assertRaises(BasesError):
         Nats.carry_in([-1], 1, 2)
     with self.assertRaises(BasesError):
         Nats.carry_in([1], -1, 2)
     with self.assertRaises(BasesError):
         Nats.carry_in([1], 1, 1)