Author: Wim Lavrijsen <[email protected]>
Branch: cppyy-dev
Changeset: r98050:5e3e6dd38086
Date: 2019-11-13 13:59 -0800
http://bitbucket.org/pypy/pypy/changeset/5e3e6dd38086/
Log: more template tests from cppyy/test (CPython)
diff --git a/pypy/module/_cppyy/test/test_templates.py
b/pypy/module/_cppyy/test/test_templates.py
--- a/pypy/module/_cppyy/test/test_templates.py
+++ b/pypy/module/_cppyy/test/test_templates.py
@@ -25,20 +25,35 @@
m = _cppyy.gbl.MyTemplatedMethodClass()
+ # implicit (called before other tests to check caching)
+ assert m.get_size(1) == m.get_int_size()+1
+ assert 'get_size<int>' in dir(_cppyy.gbl.MyTemplatedMethodClass)
+
# pre-instantiated
assert m.get_size['char']() == m.get_char_size()
assert m.get_size[int]() == m.get_int_size()
# specialized
- assert m.get_size[long]() == m.get_long_size()
+ if sys.hexversion >= 0x3000000:
+ targ = 'long'
+ else:
+ targ = long
+ assert m.get_size[targ]() == m.get_long_size()
+
+ import ctypes
+ assert m.get_size(ctypes.c_double(3.14)) == m.get_size['double']()
+ assert m.get_size(ctypes.c_double(3.14).value) ==
m.get_size['double']()+1
# auto-instantiation
assert m.get_size[float]() == m.get_float_size()
assert m.get_size['double']() == m.get_double_size()
assert m.get_size['MyTemplatedMethodClass']() == m.get_self_size()
+ assert 'get_size<MyTemplatedMethodClass>' in
dir(_cppyy.gbl.MyTemplatedMethodClass)
# auto through typedef
assert m.get_size['MyTMCTypedef_t']() == m.get_self_size()
+ assert 'get_size<MyTMCTypedef_t>' in
dir(_cppyy.gbl.MyTemplatedMethodClass)
+ assert m.get_size['MyTemplatedMethodClass']() == m.get_self_size()
def test02_non_type_template_args(self):
"""Use of non-types as template arguments"""
@@ -90,15 +105,13 @@
assert type(ggsr(vector['int']([5])).m_retval) == float
assert ggsr(vector['int']([5])).m_retval == 5.
# float in, int out
- # TODO: this now matches the earlier overload
- #ggsr = cppyy.gbl.global_get_some_result['std::vector<float>, int']
- #assert type(ggsr(vector['float']([0.3])).m_retval) == int
- #assert ggsr(vector['float']([0.3])).m_retval == 0
+ ggsr = cppyy.gbl.global_get_some_result['std::vector<float>, int']
+ assert type(ggsr(vector['float']([0.3])).m_retval) == int
+ assert ggsr(vector['float']([0.3])).m_retval == 0
# int in, int out
- # TODO: same as above, matches earlier overload
- #ggsr = cppyy.gbl.global_get_some_result['std::vector<int>, int']
- #assert type(ggsr(vector['int']([5])).m_retval) == int
- #assert ggsr(vector['int']([5])).m_retval == 5
+ ggsr = cppyy.gbl.global_get_some_result['std::vector<int>, int']
+ assert type(ggsr(vector['int']([5])).m_retval) == int
+ assert ggsr(vector['int']([5])).m_retval == 5
def test04_variadic_function(self):
"""Call a variadic function"""
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit