newtest.py
来自「Boost provides free peer-reviewed portab」· Python 代码 · 共 207 行
PY
207 行
# 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 m1 import *>>> from m2 import * Prove that we get an appropriate error from trying to return a type for which we have no registered to_python converter>>> def check_unregistered(f, msgprefix): ... try:... f(1)... except TypeError, x:... if not str(x).startswith(msgprefix):... print str(x)... else:... print 'expected a TypeError'...>>> check_unregistered(make_unregistered, 'No to_python (by-value) converter found for C++ type')>>> check_unregistered(make_unregistered2, 'No Python class registered for C++ class')>>> n = new_noddy()>>> s = new_simple()>>> unwrap_int(n)42>>> unwrap_int_ref(n)42>>> unwrap_int_const_ref(n)42>>> unwrap_simple(s)'hello, world'>>> unwrap_simple_ref(s)'hello, world'>>> unwrap_simple_const_ref(s)'hello, world'>>> unwrap_int(5)5Can't get a non-const reference to a built-in integer object>>> try:... unwrap_int_ref(7)... except: pass... else: print 'no exception'>>> unwrap_int_const_ref(9)9>>> wrap_int(n)42try: wrap_int_ref(n)... except: pass... else: print 'no exception'>>> wrap_int_const_ref(n)42>>> unwrap_simple_ref(wrap_simple(s))'hello, world'>>> unwrap_simple_ref(wrap_simple_ref(s))'hello, world'>>> unwrap_simple_ref(wrap_simple_const_ref(s))'hello, world'>>> f(s)12>>> unwrap_simple(g(s))'hello, world'>>> f(g(s))12>>> f_mutable_ref(g(s))12>>> f_const_ptr(g(s))12>>> f_mutable_ptr(g(s))12>>> f2(g(s))12Create an extension class which wraps "complicated" (init1 and get_n)are a complicated constructor and member function, respectively.>>> c1 = complicated(s, 99)>>> c1.get_n()99>>> c2 = complicated(s)>>> c2.get_n()0 a quick regression test for a bug where None could be converted to the target of any member function. To see it, we need to access the __dict__ directly, to bypass the type check supplied by the Method property which wraps the method when accessed as an attribute. >>> try: A.__dict__['name'](None)... except TypeError: pass... else: print 'expected an exception!'>>> a = A()>>> b = B()>>> c = C()>>> d = D()>>> take_a(a).name()'A'>>> try:... take_b(a)... except: pass... else: print 'no exception'>>> try:... take_c(a)... except: pass... else: print 'no exception'>>> try:... take_d(a)... except: pass... else: print 'no exception'------>>> take_a(b).name()'A'>>> take_b(b).name()'B'>>> try:... take_c(b)... except: pass... else: print 'no exception'>>> try:... take_d(b)... except: pass... else: print 'no exception'------->>> take_a(c).name()'A'>>> try:... take_b(c)... except: pass... else: print 'no exception'>>> take_c(c).name()'C'>>> try:... take_d(c)... except: pass... else: print 'no exception'------->>> take_a(d).name()'A'>>> take_b(d).name()'B'>>> take_c(d).name()'C'>>> take_d(d).name()'D'>>> take_d_shared_ptr(d).name()'D'>>> d_as_a = d_factory()>>> dd = take_d(d_as_a)>>> dd.name()'D'>>> print g.__doc__.splitlines()[1]g( (Simple)arg1) -> Simple :"""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)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?