# Augmented assignment test.

x = 2
x += 1
x *= 2
x **= 2
x -= 8
x //= 2
x //= 1
x %= 12
x &= 2
x |= 5
x ^= 1

print x

x = [2]
x[0] += 1
x[0] *= 2
x[0] **= 2
x[0] -= 8
x[0] //= 2
x[0] //= 2
x[0] %= 12
x[0] &= 2
x[0] |= 5
x[0] ^= 1

print x

x = {0: 2}
x[0] += 1
x[0] *= 2
x[0] **= 2
x[0] -= 8
x[0] //= 2
x[0] //= 1
x[0] %= 12
x[0] &= 2
x[0] |= 5
x[0] ^= 1

print x[0]

x = [1,2]
x += [3,4]
x *= 2

print x

x = [1, 2, 3]
y = x
x[1:2] *= 2
y[1:2] += [1]

print x
print x is y

class aug_test:
    def __init__(self, value):
        self.val = value
    def __radd__(self, val):
        return self.val + val
    def __add__(self, val):
        return aug_test(self.val + val)


class aug_test2(aug_test):
    def __iadd__(self, val):
        self.val = self.val + val
        return self

class aug_test3(aug_test):
    def __iadd__(self, val):
        return aug_test3(self.val + val)

x = aug_test(1)
y = x
x += 10

print isinstance(x, aug_test)
print y is not x
print x.val

x = aug_test2(2)
y = x
x += 10

print y is x
print x.val

x = aug_test3(3)
y = x
x += 10

print isinstance(x, aug_test3)
print y is not x
print x.val

class testall:

    def __add__(self, val):
        print "__add__ called"
    def __radd__(self, val):
        print "__radd__ called"
    def __iadd__(self, val):
        print "__iadd__ called"
        return self

    def __sub__(self, val):
        print "__sub__ called"
    def __rsub__(self, val):
        print "__rsub__ called"
    def __isub__(self, val):
        print "__isub__ called"
        return self

    def __mul__(self, val):
        print "__mul__ called"
    def __rmul__(self, val):
        print "__rmul__ called"
    def __imul__(self, val):
        print "__imul__ called"
        return self

    def __div__(self, val):
        print "__div__ called"
    def __rdiv__(self, val):
        print "__rdiv__ called"
    def __idiv__(self, val):
        print "__idiv__ called"
        return self

    def __floordiv__(self, val):
        print "__floordiv__ called"
        return self
    def __ifloordiv__(self, val):
        print "__ifloordiv__ called"
        return self
    def __rfloordiv__(self, val):
        print "__rfloordiv__ called"
        return self

    def __truediv__(self, val):
        print "__truediv__ called"
        return self
    def __itruediv__(self, val):
        print "__itruediv__ called"
        return self

    def __mod__(self, val):
        print "__mod__ called"
    def __rmod__(self, val):
        print "__rmod__ called"
    def __imod__(self, val):
        print "__imod__ called"
        return self

    def __pow__(self, val):
        print "__pow__ called"
    def __rpow__(self, val):
        print "__rpow__ called"
    def __ipow__(self, val):
        print "__ipow__ called"
        return self

    def __or__(self, val):
        print "__or__ called"
    def __ror__(self, val):
        print "__ror__ called"
    def __ior__(self, val):
        print "__ior__ called"
        return self

    def __and__(self, val):
        print "__and__ called"
    def __rand__(self, val):
        print "__rand__ called"
    def __iand__(self, val):
        print "__iand__ called"
        return self

    def __xor__(self, val):
        print "__xor__ called"
    def __rxor__(self, val):
        print "__rxor__ called"
    def __ixor__(self, val):
        print "__ixor__ called"
        return self

    def __rshift__(self, val):
        print "__rshift__ called"
    def __rrshift__(self, val):
        print "__rrshift__ called"
    def __irshift__(self, val):
        print "__irshift__ called"
        return self

    def __lshift__(self, val):
        print "__lshift__ called"
    def __rlshift__(self, val):
        print "__rlshift__ called"
    def __ilshift__(self, val):
        print "__ilshift__ called"
        return self

x = testall()
x + 1
1 + x
x += 1

x - 1
1 - x
x -= 1

x * 1
1 * x
x *= 1

x / 1
1 / x
x /= 1

x // 1
1 // x
x //= 1

x % 1
1 % x
x %= 1

x ** 1
1 ** x
x **= 1

x | 1
1 | x
x |= 1

x & 1
1 & x
x &= 1

x ^ 1
1 ^ x
x ^= 1

x >> 1
1 >> x
x >>= 1

x << 1
1 << x
x <<= 1
