diff options
author | renatofilho <renato.filho@openbossa.org> | 2010-10-15 13:36:08 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:07:21 -0300 |
commit | b4d648d09c293816a6f15ffdc2bdc7b0ec0792fb (patch) | |
tree | e0abf184f9669801845a75872c0dd2441e5f238e /tests | |
parent | c8892e123c0f4512e7ecd78b85d499b02b31e1e4 (diff) |
Created unit test for unknown class holder.
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Marcelo Lira <marcelo.lira@openbossa.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/libsample/handle.h | 55 | ||||
-rw-r--r-- | tests/samplebinding/CMakeLists.txt | 1 | ||||
-rw-r--r-- | tests/samplebinding/global.h | 1 | ||||
-rw-r--r-- | tests/samplebinding/handle_conversions.h | 39 | ||||
-rw-r--r-- | tests/samplebinding/handleholder_test.py | 48 | ||||
-rw-r--r-- | tests/samplebinding/typesystem_sample.xml | 7 |
6 files changed, 151 insertions, 0 deletions
diff --git a/tests/libsample/handle.h b/tests/libsample/handle.h new file mode 100644 index 000000000..f76277f5a --- /dev/null +++ b/tests/libsample/handle.h @@ -0,0 +1,55 @@ +/* + * This file is part of the Shiboken Python Binding Generator project. + * + * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). + * + * Contact: PySide team <contact@pyside.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef HANDLE_H +#define HANDLE_H + +#include "libsamplemacros.h" + +class OBJ +{ +}; + +typedef OBJ* HANDLE; + +class HandleHolder +{ +public: + explicit HandleHolder(HANDLE ptr = 0) : m_handle(ptr) {} + void set(HANDLE ptr) { m_handle = m_handle; } + HANDLE get() { return m_handle; } + + static HANDLE createHandle() + { + return (HANDLE) new OBJ; + } + + bool compare(HandleHolder* other) + { + return other->m_handle == m_handle; + } +private: + HANDLE m_handle; +}; + +#endif // HANDLE_H + diff --git a/tests/samplebinding/CMakeLists.txt b/tests/samplebinding/CMakeLists.txt index 04be3040f..c47ab96a3 100644 --- a/tests/samplebinding/CMakeLists.txt +++ b/tests/samplebinding/CMakeLists.txt @@ -21,6 +21,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/sample/derived_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/sample/derived_someinnerclass_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/sample/echo_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/sample/event_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/sample/handleholder_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/sample/implicitconv_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/sample/implicitbase_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/sample/implicittarget_wrapper.cpp diff --git a/tests/samplebinding/global.h b/tests/samplebinding/global.h index 2b8b811ef..4677b814f 100644 --- a/tests/samplebinding/global.h +++ b/tests/samplebinding/global.h @@ -9,6 +9,7 @@ #include "functions.h" #include "implicitconv.h" #include "overloadsort.h" +#include "handle.h" #include "injectcode.h" #include "list.h" #include "listuser.h" diff --git a/tests/samplebinding/handle_conversions.h b/tests/samplebinding/handle_conversions.h new file mode 100644 index 000000000..2c6008077 --- /dev/null +++ b/tests/samplebinding/handle_conversions.h @@ -0,0 +1,39 @@ +#ifndef _HANDLE_CONVERSION_H_ +#define _HANDLE_CONVERSION_H_ + + +namespace Shiboken { +template<> +struct Converter<HANDLE> +{ + static inline bool checkType(PyObject* pyObj) + { + return false; + } + + static inline bool isConvertible(PyObject* pyObj) + { + return PyCObject_Check(pyObj); + } + + static inline PyObject* toPython(void* cppobj) + { + assert(true); + return 0; + } + + static inline PyObject* toPython(HANDLE cppobj) + { + return PyCObject_FromVoidPtr(cppobj, 0); + } + + static inline HANDLE toCpp(PyObject* pyobj) + { + + return (HANDLE) PyCObject_AsVoidPtr(pyobj); + } +}; +} + + +#endif diff --git a/tests/samplebinding/handleholder_test.py b/tests/samplebinding/handleholder_test.py new file mode 100644 index 000000000..e1969dff3 --- /dev/null +++ b/tests/samplebinding/handleholder_test.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# This file is part of the Shiboken Python Bindings Generator project. +# +# Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +# +# Contact: PySide team <contact@pyside.org> +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public License +# version 2.1 as published by the Free Software Foundation. Please +# review the following information to ensure the GNU Lesser General +# Public License version 2.1 requirements will be met: +# http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +# # +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA + +'''Test case for a class that holds a unknown handle object.''' + +import unittest + +from sample import HandleHolder + +class HandleHolderTest(unittest.TestCase): + + def testCreation(self): + holder = HandleHolder(HandleHolder.createHandle()) + holder2 = HandleHolder(HandleHolder.createHandle()) + self.assertEquals(holder.compare(holder2), False) + + def testTransfer(self): + holder = HandleHolder() + holder2 = HandleHolder(holder.get()) + self.assert_(holder.compare(holder2)) + + +if __name__ == '__main__': + unittest.main() + diff --git a/tests/samplebinding/typesystem_sample.xml b/tests/samplebinding/typesystem_sample.xml index 84396c060..82684fe88 100644 --- a/tests/samplebinding/typesystem_sample.xml +++ b/tests/samplebinding/typesystem_sample.xml @@ -22,6 +22,11 @@ <include file-name="null.h" location="global"/> </primitive-type> + <primitive-type name="HANDLE"> + <conversion-rule file="handle_conversions.h"/> + <include file-name="handle.h" location="local"/> + </primitive-type> + <primitive-type name="OddBool" target-lang-api-name="PyBool"> <conversion-rule file="oddbool_conversions.h"/> <include file-name="oddbool.h" location="global"/> @@ -1161,6 +1166,8 @@ <conversion-rule class="target" file="date_conversions.h"/> </value-type> + <object-type name="HandleHolder" /> + <rejection class="ListUser" function-name="createList()"/> <rejection class="ListUser" function-name="callCreateList()"/> <rejection class="ListUser" function-name="createComplexList(Complex, Complex)"/> |