diff options
author | renatofilho <renato.filho@openbossa.org> | 2010-10-01 16:49:35 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:07:20 -0300 |
commit | 6d660aee32805af4af23d17381398c3f3503c7cf (patch) | |
tree | 43c630d08bc8c906ecac1d0968633f7eb8a982f8 | |
parent | 871a08552d72b49f39761a6b99cce12a0765f3cd (diff) |
Unit test to target conversion.
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Marcelo Lira <marcelo.lira@openbossa.org>
-rw-r--r-- | tests/libsample/sbkdate.h | 44 | ||||
-rw-r--r-- | tests/samplebinding/CMakeLists.txt | 1 | ||||
-rw-r--r-- | tests/samplebinding/date_conversions.h | 35 | ||||
-rw-r--r-- | tests/samplebinding/date_test.py | 53 | ||||
-rw-r--r-- | tests/samplebinding/global.h | 1 | ||||
-rw-r--r-- | tests/samplebinding/typesystem_sample.xml | 7 |
6 files changed, 141 insertions, 0 deletions
diff --git a/tests/libsample/sbkdate.h b/tests/libsample/sbkdate.h new file mode 100644 index 000000000..e41ed1fe6 --- /dev/null +++ b/tests/libsample/sbkdate.h @@ -0,0 +1,44 @@ +/* + * 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 SBKDATE_H +#define SBKDATE_H + +#include "libsamplemacros.h" + +class LIBSAMPLE_API SbkDate +{ +public: + SbkDate(int d, int m, int y) : m_d(d), m_m(m), m_y(y) {} + + inline int day() const { return m_d; } + inline int month() const { return m_m; } + inline int year() const { return m_y; } + +private: + int m_d; + int m_m; + int m_y; +}; + +#endif // SBKDATE_H + diff --git a/tests/samplebinding/CMakeLists.txt b/tests/samplebinding/CMakeLists.txt index 2de6deea3..04be3040f 100644 --- a/tests/samplebinding/CMakeLists.txt +++ b/tests/samplebinding/CMakeLists.txt @@ -16,6 +16,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/sample/base6_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/sample/blackbox_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/sample/bucket_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/sample/collector_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/sample/sbkdate_wrapper.cpp ${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 diff --git a/tests/samplebinding/date_conversions.h b/tests/samplebinding/date_conversions.h new file mode 100644 index 000000000..ef459114a --- /dev/null +++ b/tests/samplebinding/date_conversions.h @@ -0,0 +1,35 @@ +namespace Shiboken { +template <> +struct PythonConverter<SbkDate> +{ + static bool isPythonConvertible(PyObject* pyObj) + { + if (!PyDateTimeAPI) + PyDateTime_IMPORT; + + return PyDate_Check(pyObj); + } + + static SbkDate* transformFromPython(PyObject* obj) + { + if (isPythonConvertible(obj)) { + int day = PyDateTime_GET_DAY(obj); + int month = PyDateTime_GET_MONTH(obj); + int year = PyDateTime_GET_YEAR(obj); + return new SbkDate(day, month, year); + } + return 0; + } + + static PyObject* transformToPython(SbkDate* d) + { + if (d) { + if (!PyDateTimeAPI) + PyDateTime_IMPORT; + + return PyDate_FromDate(d->day(), d->month(), d->year()); + } + return 0; + } +}; +} diff --git a/tests/samplebinding/date_test.py b/tests/samplebinding/date_test.py new file mode 100644 index 000000000..830e8c052 --- /dev/null +++ b/tests/samplebinding/date_test.py @@ -0,0 +1,53 @@ +#!/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 cases for python conversions types ''' + +import sys +import unittest +from datetime import date + +from sample import SbkDate + +class DateConversionTest(unittest.TestCase): + + def testConstructorWithDateObject(self): + pyDate = date(2010, 12, 12) + cDate = SbkDate(pyDate) + self.assert_(cDate.day(), pyDate.day) + self.assert_(cDate.month(), pyDate.month) + self.assert_(cDate.year(), pyDate.year) + + def testToPythonFunction(self): + cDate = SbkDate(2010, 12, 12) + pyDate = cDate.toPython() + self.assert_(cDate.day(), pyDate.day) + self.assert_(cDate.month(), pyDate.month) + self.assert_(cDate.year(), pyDate.year) + +if __name__ == '__main__': + unittest.main() + diff --git a/tests/samplebinding/global.h b/tests/samplebinding/global.h index 2e06bce5b..2b8b811ef 100644 --- a/tests/samplebinding/global.h +++ b/tests/samplebinding/global.h @@ -3,6 +3,7 @@ #include "bucket.h" #include "collector.h" #include "complex.h" +#include "sbkdate.h" #include "derived.h" #include "echo.h" #include "functions.h" diff --git a/tests/samplebinding/typesystem_sample.xml b/tests/samplebinding/typesystem_sample.xml index ccf9c512b..4816b8246 100644 --- a/tests/samplebinding/typesystem_sample.xml +++ b/tests/samplebinding/typesystem_sample.xml @@ -1143,6 +1143,13 @@ </inject-code> </add-function> + <value-type name="SbkDate"> + <extra-includes> + <include file-name="datetime.h" location="global"/> + </extra-includes> + <conversion-rule class="target" file="date_conversions.h"/> + </value-type> + <rejection class="ListUser" function-name="createList()"/> <rejection class="ListUser" function-name="callCreateList()"/> <rejection class="ListUser" function-name="createComplexList(Complex, Complex)"/> |