Lichen

Annotated tests/operator_support.py

627:05ad7964265c
2017-02-27 Paul Boddie Merged convenience macro changes.
paul@364 1
class A:
paul@364 2
    def __init__(self, x):
paul@364 3
        self.x = x
paul@364 4
    def __sub__(self, other):
paul@364 5
        return self.x - other.x
paul@364 6
paul@364 7
class B:
paul@364 8
    def __init__(self, x):
paul@364 9
        self.x = x
paul@364 10
    def __rsub__(self, other):
paul@364 11
        return other.x - self.x
paul@364 12
paul@364 13
class C:
paul@364 14
    def __init__(self, x):
paul@364 15
        self.x = x
paul@364 16
paul@364 17
a = A(10)
paul@364 18
b = B(5)
paul@364 19
c = C(3)
paul@364 20
paul@364 21
print a - b                         # 5
paul@364 22
print c - b                         # -2
paul@364 23
print a - c                         # 7
paul@364 24
paul@364 25
try:
paul@364 26
    print b - c                     # should raise an exception
paul@364 27
except TypeError:
paul@364 28
    print "b - c: b and c do not respectively support the __sub__ and __rsub__ operations"