Made minimal modifications to pass included tests

This commit is contained in:
Alexander Belopolsky 2010-07-03 22:36:06 +00:00
parent 418182e18b
commit 74135d0ad9
1 changed files with 7 additions and 17 deletions

View File

@ -151,13 +151,9 @@ class Complex:
raise ValueError("can't convert Complex with nonzero im to float")
return float(self.re)
def __cmp__(self, other):
def __eq__(self, other):
other = ToComplex(other)
return cmp((self.re, self.im), (other.re, other.im))
def __rcmp__(self, other):
other = ToComplex(other)
return cmp(other, self)
return (self.re, self.im) == (other.re, other.im)
def __bool__(self):
return not (self.re == self.im == 0)
@ -190,14 +186,14 @@ class Complex:
__rmul__ = __mul__
def __div__(self, other):
def __truediv__(self, other):
other = ToComplex(other)
d = float(other.re*other.re + other.im*other.im)
if not d: raise ZeroDivisionError('Complex division')
return Complex((self.re*other.re + self.im*other.im) / d,
(self.im*other.re - self.re*other.im) / d)
def __rdiv__(self, other):
def __rtruediv__(self, other):
other = ToComplex(other)
return other / self
@ -226,8 +222,9 @@ def checkop(expr, a, b, value, fuzz = 1e-6):
print(' ', a, 'and', b, end=' ')
try:
result = eval(expr)
except:
result = sys.exc_info()[0]
except Exception as e:
print('!!\t!!\t!! error: {}'.format(e))
return
print('->', result)
if isinstance(result, str) or isinstance(value, str):
ok = (result == value)
@ -295,13 +292,6 @@ def test():
(Complex(1), Complex(0,10), 1),
(2, Complex(4,0), 16),
],
'cmp(a,b)': [
(1, 10, -1),
(1, Complex(0,10), 1),
(Complex(0,10), 1, -1),
(Complex(0,10), Complex(1), -1),
(Complex(1), Complex(0,10), 1),
],
}
for expr in sorted(testsuite):
print(expr + ':')