101 lines
1.8 KiB
Python
101 lines
1.8 KiB
Python
# Copyright David Abrahams 2004. Distributed under the Boost
|
|
# Software License, Version 1.0. (See accompanying
|
|
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
'''
|
|
>>> from auto_ptr_ext import *
|
|
>>> x = X(42)
|
|
>>> x.value()
|
|
42
|
|
>>> look(x), look(x)
|
|
(42, 42)
|
|
|
|
>>> maybe_steal(x, 0)
|
|
42
|
|
>>> look(x)
|
|
42
|
|
|
|
>>> maybe_steal(x, 1)
|
|
42
|
|
>>> broken_auto_ptr and -1 or look(x)
|
|
-1
|
|
|
|
>>> x = X(69)
|
|
>>> steal(x)
|
|
69
|
|
>>> broken_auto_ptr and -1 or look(x)
|
|
-1
|
|
|
|
>>> if not broken_auto_ptr:
|
|
... try: x.value()
|
|
... except TypeError: pass
|
|
... else: print('expected a TypeError exception')
|
|
|
|
>>> x = make()
|
|
>>> look(x)
|
|
77
|
|
|
|
>>> z = callback(lambda z: z)
|
|
>>> z.value()
|
|
77
|
|
|
|
>>> extract(x).value()
|
|
77
|
|
|
|
#
|
|
# Test derived to base conversions
|
|
#
|
|
|
|
>>> y = Y(42)
|
|
>>> y.value()
|
|
42
|
|
|
|
>>> try: maybe_steal(y, 0)
|
|
... except TypeError: pass
|
|
... else: print('expected a TypeError exception')
|
|
|
|
>>> y.value()
|
|
42
|
|
|
|
>>> broken_auto_ptr and 42 or steal(y)
|
|
42
|
|
|
|
>>> if not broken_auto_ptr:
|
|
... try: y.value()
|
|
... except TypeError: pass
|
|
... else: print('expected a TypeError exception')
|
|
|
|
>>> print(look.__doc__.splitlines()[1])
|
|
look( (X)arg1) -> int :
|
|
|
|
>>> print(steal.__doc__.splitlines()[1])
|
|
steal( (X)arg1) -> int :
|
|
|
|
>>> print(maybe_steal.__doc__.splitlines()[1])
|
|
maybe_steal( (X)arg1, (bool)arg2) -> int :
|
|
|
|
>>> print(make.__doc__.splitlines()[1])
|
|
make() -> X :
|
|
|
|
>>> print(callback.__doc__.splitlines()[1])
|
|
callback( (object)arg1) -> X :
|
|
|
|
>>> print(extract.__doc__.splitlines()[1])
|
|
extract( (object)arg1) -> X :
|
|
|
|
'''
|
|
|
|
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)
|