From 19fcec84d8d7d21e796c7624e521b60d28ee21ed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:45:59 +0200 Subject: Adding upstream version 16.2.11+ds. Signed-off-by: Daniel Baumann --- src/boost/libs/python/test/opaque.py | 87 ++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 src/boost/libs/python/test/opaque.py (limited to 'src/boost/libs/python/test/opaque.py') diff --git a/src/boost/libs/python/test/opaque.py b/src/boost/libs/python/test/opaque.py new file mode 100644 index 000000000..9f5663723 --- /dev/null +++ b/src/boost/libs/python/test/opaque.py @@ -0,0 +1,87 @@ +# -*- coding: utf-8 -*- +# Copyright Gottfried Ganßauge 2003..2006. 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 opaque_ext import * + + + Check for correct conversion + +>>> use(get()) + + Check that None is converted to a NULL opaque pointer + +>>> useany(get()) +1 +>>> useany(None) +0 + + Check that we don't lose type information by converting NULL + opaque pointers to None + +>>> assert getnull() is None +>>> useany(getnull()) +0 + +>>> failuse(get()) +Traceback (most recent call last): + ... +RuntimeError: success + + Check that there is no conversion from integers ... + +>>> try: use(0) +... except TypeError: pass +... else: print('expected a TypeError') + + ... and from strings to opaque objects + +>>> try: use("") +... except TypeError: pass +... else: print('expected a TypeError') + + Now check the same for another opaque pointer type + +>>> use2(get2()) +>>> failuse2(get2()) +Traceback (most recent call last): + ... +RuntimeError: success +>>> try: use2(0) +... except TypeError: pass +... else: print('expected a TypeError') +>>> try: use2("") +... except TypeError: pass +... else: print('expected a TypeError') + + Check that opaque types are distinct + +>>> try: use(get2()) +... except TypeError: pass +... else: print('expected a TypeError') +>>> try: use2(get()) +... except TypeError: pass +... else: print('expected a TypeError') + + This used to result in a segmentation violation + +>>> type(get()) != type (get2()) +1 +""" +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) -- cgit v1.2.3