Author: Wim Lavrijsen <wlavrij...@lbl.gov> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit