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)
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)
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
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)
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)