From b7169ca7fe92c5874076ff47f9b4ec7954acc480 Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Thu, 18 Aug 2011 13:12:09 -0300 Subject: Added a test case for a bit-field structure member. Also moved a couple of tests from samplebindings to otherbindings. --- tests/libsample/abstract.cpp | 1 + tests/libsample/abstract.h | 4 +- tests/otherbinding/module_reload_test.py | 25 ++++++++++++ tests/otherbinding/test_module_template.py | 12 ++++++ tests/otherbinding/typediscovery_test.py | 59 ++++++++++++++++++++++++++++ tests/samplebinding/class_fields_test.py | 19 +++++++++ tests/samplebinding/module_reload_test.py | 29 -------------- tests/samplebinding/test_module_template.py | 12 ------ tests/samplebinding/typediscovery_test.py | 60 ----------------------------- 9 files changed, 119 insertions(+), 102 deletions(-) create mode 100644 tests/otherbinding/module_reload_test.py create mode 100644 tests/otherbinding/test_module_template.py create mode 100644 tests/otherbinding/typediscovery_test.py delete mode 100644 tests/samplebinding/module_reload_test.py delete mode 100644 tests/samplebinding/test_module_template.py delete mode 100644 tests/samplebinding/typediscovery_test.py (limited to 'tests') diff --git a/tests/libsample/abstract.cpp b/tests/libsample/abstract.cpp index 26c342352..d1ca4f3cf 100644 --- a/tests/libsample/abstract.cpp +++ b/tests/libsample/abstract.cpp @@ -33,6 +33,7 @@ Abstract::Abstract(int id) : m_id(id) primitiveField = 123; valueTypeField = Point(12, 34); objectTypeField = 0; + bitField = 0; } Abstract::~Abstract() diff --git a/tests/libsample/abstract.h b/tests/libsample/abstract.h index 95c1c3a0d..feeec980e 100644 --- a/tests/libsample/abstract.h +++ b/tests/libsample/abstract.h @@ -92,8 +92,10 @@ public: protected: virtual const char* className() { return "Abstract"; } + // Protected bit-field structure member. + unsigned int bitField: 1; + private: int m_id; }; #endif // ABSTRACT_H - diff --git a/tests/otherbinding/module_reload_test.py b/tests/otherbinding/module_reload_test.py new file mode 100644 index 000000000..1863fc989 --- /dev/null +++ b/tests/otherbinding/module_reload_test.py @@ -0,0 +1,25 @@ +import os +import sys +import shutil +import unittest + +orig_path = os.path.join(os.path.dirname(__file__)) +workdir = os.getcwd() +src = os.path.join(orig_path, 'test_module_template.py') +dst = os.path.join(workdir, 'test_module.py') +shutil.copyfile(src, dst) +sys.path.append(workdir) + +class TestModuleReloading(unittest.TestCase): + + def testModuleReloading(self): + '''Test module reloading with on-the-fly modifications.''' + import test_module + for i in range(3): + oldObject = test_module.obj + self.assertTrue(oldObject is test_module.obj) + reload(test_module) + self.assertFalse(oldObject is test_module.obj) + +if __name__ == "__main__": + unittest.main() diff --git a/tests/otherbinding/test_module_template.py b/tests/otherbinding/test_module_template.py new file mode 100644 index 000000000..b6cfb8389 --- /dev/null +++ b/tests/otherbinding/test_module_template.py @@ -0,0 +1,12 @@ +from other import * +from sample import * + + +class MyObjectType(ObjectType): + pass + +class MyOtherObjectType(OtherObjectType): + value = 10 + + +obj = MyObjectType() diff --git a/tests/otherbinding/typediscovery_test.py b/tests/otherbinding/typediscovery_test.py new file mode 100644 index 000000000..aab768049 --- /dev/null +++ b/tests/otherbinding/typediscovery_test.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# This file is part of the Shiboken Python Bindings Generator project. +# +# Copyright (C) 2009 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 type discovery''' + +import unittest + +from sample import Abstract, Base1, Derived, MDerived1, MDerived3, SonOfMDerived1 +from other import OtherMultipleDerived + +class TypeDiscoveryTest(unittest.TestCase): + + def testPureVirtualsOfImpossibleTypeDiscovery(self): + a = Derived.triggerImpossibleTypeDiscovery() + self.assertEqual(type(a), Abstract) + # call some pure virtual method + a.pureVirtual() + + def testAnotherImpossibleTypeDiscovery(self): + a = Derived.triggerAnotherImpossibleTypeDiscovery() + self.assertEqual(type(a), Derived) + + def testMultipleInheritance(self): + obj = OtherMultipleDerived.createObject("Base1"); + self.assertEqual(type(obj), Base1) + obj = OtherMultipleDerived.createObject("MDerived1"); + self.assertEqual(type(obj), MDerived1) + obj = OtherMultipleDerived.createObject("SonOfMDerived1"); + self.assertEqual(type(obj), SonOfMDerived1) + obj = OtherMultipleDerived.createObject("MDerived3"); + self.assertEqual(type(obj), MDerived3) + obj = OtherMultipleDerived.createObject("OtherMultipleDerived"); + self.assertEqual(type(obj), OtherMultipleDerived) + +if __name__ == '__main__': + unittest.main() diff --git a/tests/samplebinding/class_fields_test.py b/tests/samplebinding/class_fields_test.py index eab138f4a..bee4cca87 100644 --- a/tests/samplebinding/class_fields_test.py +++ b/tests/samplebinding/class_fields_test.py @@ -140,5 +140,24 @@ class TestAccessingCppFields(unittest.TestCase): def testStaticField(self): self.assertEqual(Derived.staticPrimitiveField, 0) + def testAccessingUnsignedIntBitField(self): + d = Derived() + + # attribution + old_value = d.bitField + new_value = 1 + d.bitField= new_value + self.assertEqual(d.bitField, new_value) + self.assertNotEqual(d.bitField, old_value) + + # attribution with a convertible type + value = 1.2 + d.bitField = value + self.assertEqual(d.bitField, int(value)) + + # attribution with invalid type + self.assertRaises(TypeError, lambda : setattr(d, 'bitField', None)) + + if __name__ == '__main__': unittest.main() diff --git a/tests/samplebinding/module_reload_test.py b/tests/samplebinding/module_reload_test.py deleted file mode 100644 index 48d6d9572..000000000 --- a/tests/samplebinding/module_reload_test.py +++ /dev/null @@ -1,29 +0,0 @@ -import os -import sys -import shutil -import unittest - -orig_path = os.path.join(os.path.dirname(__file__)) -workdir = os.getcwd() -src = os.path.join(orig_path, 'test_module_template.py') -dst = os.path.join(workdir, 'test_module.py') -shutil.copyfile(src, dst) -sys.path.append(workdir) - -class TestModuleReloading(unittest.TestCase): - - def testModuleReloading(self): - '''Test module reloading with on-the-fly modifications.''' - - import test_module - - for i in range(3): - oldObject = test_module.obj - self.assertTrue(oldObject is test_module.obj) - reload(test_module) - self.assertFalse(oldObject is test_module.obj) - -if __name__ == "__main__": - unittest.main() - - diff --git a/tests/samplebinding/test_module_template.py b/tests/samplebinding/test_module_template.py deleted file mode 100644 index b6cfb8389..000000000 --- a/tests/samplebinding/test_module_template.py +++ /dev/null @@ -1,12 +0,0 @@ -from other import * -from sample import * - - -class MyObjectType(ObjectType): - pass - -class MyOtherObjectType(OtherObjectType): - value = 10 - - -obj = MyObjectType() diff --git a/tests/samplebinding/typediscovery_test.py b/tests/samplebinding/typediscovery_test.py deleted file mode 100644 index f7d5433ce..000000000 --- a/tests/samplebinding/typediscovery_test.py +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# -# This file is part of the Shiboken Python Bindings Generator project. -# -# Copyright (C) 2009 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 type discovery''' - -import unittest - -from sample import * -from other import * - -class TypeDiscoveryTest(unittest.TestCase): - - def testPureVirtualsOfImpossibleTypeDiscovery(self): - a = Derived.triggerImpossibleTypeDiscovery() - self.assertEqual(type(a), Abstract) - # call some pure virtual method - a.pureVirtual() - - def testAnotherImpossibleTypeDiscovery(self): - a = Derived.triggerAnotherImpossibleTypeDiscovery() - self.assertEqual(type(a), Derived) - - def testMultipleInheritance(self): - obj = OtherMultipleDerived.createObject("Base1"); - self.assertEqual(type(obj), Base1) - obj = OtherMultipleDerived.createObject("MDerived1"); - self.assertEqual(type(obj), MDerived1) - obj = OtherMultipleDerived.createObject("SonOfMDerived1"); - self.assertEqual(type(obj), SonOfMDerived1) - obj = OtherMultipleDerived.createObject("MDerived3"); - self.assertEqual(type(obj), MDerived3) - obj = OtherMultipleDerived.createObject("OtherMultipleDerived"); - self.assertEqual(type(obj), OtherMultipleDerived) - -if __name__ == '__main__': - unittest.main() - -- cgit v1.2.3