[pypy-commit] pypy cppyy-dev: add test_regression file with regression tests
wlav
pypy.commits at gmail.com
Thu Nov 7 18:56:16 EST 2019
Author: Wim Lavrijsen <WLavrijsen at lbl.gov>
Branch: cppyy-dev
Changeset: r97985:7c7fd9713e04
Date: 2019-11-06 19:06 -0800
http://bitbucket.org/pypy/pypy/changeset/7c7fd9713e04/
Log: add test_regression file with regression tests
diff --git a/pypy/module/_cppyy/test/test_regression.py b/pypy/module/_cppyy/test/test_regression.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/_cppyy/test/test_regression.py
@@ -0,0 +1,50 @@
+import py, os, sys
+from .support import setup_make
+
+from pypy.module._cppyy import interp_cppyy, executor
+
+
+class AppTestREGRESSION:
+ spaceconfig = dict(usemodules=['_cppyy', '_rawffi', 'itertools'])
+
+ def setup_class(cls):
+ cls.w_example01 = cls.space.appexec([], """():
+ import ctypes, _cppyy
+ _cppyy._post_import_startup()""")
+
+ def test01_dir(self):
+ """These dir() methods used to crash."""
+
+ import _cppyy as cppyy
+
+ cppyy.gbl.gInterpreter.Declare("namespace cppyy_regression_test { void iii() {}; }")
+
+ assert not 'iii' in cppyy.gbl.cppyy_regression_test.__dict__
+ assert not '__abstractmethods__' in dir(cppyy.gbl.cppyy_regression_test)
+ assert '__class__' in dir(cppyy.gbl.cppyy_regression_test)
+ assert 'iii' in dir(cppyy.gbl.cppyy_regression_test)
+
+ assert not 'iii' in cppyy.gbl.cppyy_regression_test.__dict__
+ assert cppyy.gbl.cppyy_regression_test.iii
+ assert 'iii' in cppyy.gbl.cppyy_regression_test.__dict__
+
+ def test02_default_template_arguments(self):
+ """Calling a templated method on a templated class with all defaults used to crash."""
+
+ import _cppyy as cppyy
+
+ cppyy.gbl.gInterpreter.Declare("""
+ template<typename T>
+ class AllDefault {
+ public:
+ AllDefault(int val) : m_t(val) {}
+ template<int aap=1, int noot=2>
+ int do_stuff() { return m_t+aap+noot; }
+
+ public:
+ T m_t;
+ };""")
+
+ a = cppyy.gbl.AllDefault[int](24)
+ a.m_t = 21;
+ assert a.do_stuff() == 24
More information about the pypy-commit
mailing list