'''
>>> from operators_ext import *

  Check __nonzero__ support
  
>>> assert X(2)
>>> assert not X(0)

 ----
 
>>> x = X(42)
>>> x.value()
42
>>> y = x - X(5)
>>> y.value()
37
>>> y = x - 4
>>> y.value()
38
>>> y = 3 - x
>>> y.value()
-39
>>> (-y).value()
39

>>> (x + y).value()
3

>>> abs(y).value()
39

>>> x < 10
0
>>> x < 43
1

>>> 10 < x
1
>>> 43 < x
0

>>> x < y
0
>>> y < x
1

 ------
>>> x > 10
1
>>> x > 43
0

>>> 10 > x
0
>>> 43 > x
1

>>> x > y
1
>>> y > x
0

>>> y = x - 5
>>> x -= y
>>> x.value()
5
>>> str(x)
'5'

>>> z = Z(10)
>>> int(z)
10
>>> float(z)
10.0
>>> complex(z)
(10+0j)

>>> pow(2,x)
32
>>> pow(x,2).value()
25
>>> pow(X(2),x).value()
32
'''

def run(args = None):
    import sys
    import doctest

    if args is not None:
        sys.argv = args
    return doctest.testmod(sys.modules.get(__name__))
    
if __name__ == '__main__':
    print "running..."
    import sys
    status = run()[0]
    if (status == 0): print "Done."
    sys.exit(status)
