def test_creation(self): a = VInt(123) assert a.get_digits() == [1, 2, 3] a = VInt.fromvdigits([VDigit(1), VDigit(2), VDigit(3)]) assert a.get_digits() == [1, 2, 3] a = VInt.fromints([1, 2, 3]) assert a.get_digits() == [1, 2, 3]
def test_mul(self): d1 = VDigit(1) d3 = VDigit(3) d9 = VDigit(9) dm9 = VDigit(-9) assert (d1 * d3).get_digits() == [3] assert (d3 * d9).get_digits() == [2, 7] assert (d3 * dm9).get_digits() == [-2, -7]
def test_sub(self): d1 = VDigit(1) d3 = VDigit(3) d9 = VDigit(9) dm9 = VDigit(-9) assert (d1 - d3).get_digits() == [-2] assert (d3 - d9).get_digits() == [-6] assert (d3 - dm9).get_digits() == [1, 2]
def test_add(self): d1 = VDigit(1) d3 = VDigit(3) d9 = VDigit(9) dm9 = VDigit(-9) assert (d1 + d3).get_digits() == [4] assert (d3 + d9).get_digits() == [1, 2] assert (d3 + dm9).get_digits() == [-6]
def fromints(cls, ds): ''' Return a VInt from a list of digits as ints. ''' ans = cls(0) ans.ds = [VDigit(d) for d in ds] return ans
def test_abs(self): d1 = VDigit(1) d3 = VDigit(3) d9 = VDigit(9) dm9 = VDigit(-9) assert abs(d1) == VDigit(1) assert abs(d3) == VDigit(3) assert abs(d9) == VDigit(9) assert abs(dm9) == VDigit(9)
def test_neg(self): d1 = VDigit(1) d3 = VDigit(3) d9 = VDigit(9) dm9 = VDigit(-9) assert -d1 == VDigit(-1) assert -d3 == VDigit(-3) assert -d9 == VDigit(-9) assert -dm9 == VDigit(9)
def test_as_vinteger(self): assert VDigit(3).as_vinteger().get_digits() == VInteger(3).get_digits() assert VDigit(-3).as_vinteger().get_digits() == VInteger( -3).get_digits()
def test_creation(self): assert digit_from_vdigit(VDigit(7)) == 7 assert digit_from_vdigit(VDigit(0)) == 0 assert digit_from_vdigit(VDigit(-3)) == -3
def __init__(self, n: int): ''' Initialise a VInt from an integer n. ''' self.ds = [VDigit(d) for d in int_to_digits(n)]