123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- # 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 test_pointer_adoption_ext import *
- >>> num_a_instances()
- 0
- >>> a = create('dynamically allocated')
- >>> num_a_instances()
- 1
- >>> a.content()
- 'dynamically allocated'
- >>> innards = a.get_inner()
- >>> innards.change('with an exposed reference')
- >>> a.content()
- 'with an exposed reference'
- # The a instance should be kept alive...
- >>> a = None
- >>> num_a_instances()
- 1
- # ...until we're done with its innards
- >>> innards = None
- >>> num_a_instances()
- 0
- >>> b = B()
- >>> a = create('another')
- >>> b.a_content()
- 'empty'
- >>> innards = b.adopt(a);
- >>> b.a_content()
- 'another'
- >>> num_a_instances()
- 1
- >>> del a # innards and b are both holding a reference
- >>> num_a_instances()
- 1
- >>> innards.change('yet another')
- >>> b.a_content()
- 'yet another'
- >>> del innards
- >>> num_a_instances() # b still owns a reference to a
- 1
- >>> del b
- >>> num_a_instances()
- 0
- Test call policies for constructors here
- >>> a = create('second a')
- >>> num_a_instances()
- 1
- >>> b = B(a)
- >>> num_a_instances()
- 1
- >>> a.content()
- 'second a'
- >>> del a
- >>> num_a_instances()
- 1
- >>> b.a_content()
- 'second a'
- >>> del b
- >>> num_a_instances()
- 0
- >>> assert as_A(create('dynalloc')) is not None
- >>> base = Base()
- >>> assert as_A(base) is None
- """
- 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)
|