From 6d660aee32805af4af23d17381398c3f3503c7cf Mon Sep 17 00:00:00 2001 From: renatofilho Date: Fri, 1 Oct 2010 16:49:35 -0300 Subject: Unit test to target conversion. Reviewer: Luciano Wolf Marcelo Lira --- tests/libsample/sbkdate.h | 44 +++++++++++++++++++++++++ tests/samplebinding/CMakeLists.txt | 1 + tests/samplebinding/date_conversions.h | 35 ++++++++++++++++++++ tests/samplebinding/date_test.py | 53 +++++++++++++++++++++++++++++++ tests/samplebinding/global.h | 1 + tests/samplebinding/typesystem_sample.xml | 7 ++++ 6 files changed, 141 insertions(+) create mode 100644 tests/libsample/sbkdate.h create mode 100644 tests/samplebinding/date_conversions.h create mode 100644 tests/samplebinding/date_test.py (limited to 'tests') 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 + * + * 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 +{ + 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 +# +# 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 @@ + + + + + + + -- cgit v1.2.3