From 509769c4d96752265f652ce2cc0f5931ebfae42b Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Mon, 28 Jun 2010 10:43:23 -0300 Subject: Added test for type resolution order. Methods or functions signatures using any type from the library being wrapped must be processed after all the library types or else the function/method will be rejected. --- tests/CMakeLists.txt | 5 ++-- tests/testresolvetype.cpp | 58 +++++++++++++++++++++++++++++++++++++++++++++++ tests/testresolvetype.h | 36 +++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 tests/testresolvetype.cpp create mode 100644 tests/testresolvetype.h diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c9f27f399..1bdff337b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -16,6 +16,7 @@ declare_test(testconversionruletag) declare_test(testctorinformation) declare_test(testdtorinformation) declare_test(testenum) +declare_test(testfunctiontag) declare_test(testimplicitconversions) declare_test(testmodifydocumentation) declare_test(testmodifyfunction) @@ -24,8 +25,8 @@ declare_test(testprimitivetypetag) declare_test(testrefcounttag) declare_test(testreferencetopointer) declare_test(testremoveimplconv) +declare_test(testresolvetype) declare_test(testreverseoperators) +declare_test(testtemplates) declare_test(testtoposort) -declare_test(testfunctiontag) declare_test(testvoidarg) -declare_test(testtemplates) diff --git a/tests/testresolvetype.cpp b/tests/testresolvetype.cpp new file mode 100644 index 000000000..11880e1b1 --- /dev/null +++ b/tests/testresolvetype.cpp @@ -0,0 +1,58 @@ +/* +* This file is part of the API Extractor 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 General Public License +* version 2 as published by the Free Software Foundation. +* +* 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 +* General Public License for more details. +* +* You should have received a copy of the GNU 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 +* +*/ + +#include "testresolvetype.h" +#include +#include "testutil.h" + +void TestResolveType::testResolveReturnTypeFromParentScope() +{ + const char* cppCode = "\ + namespace A {\ + struct B {\ + struct C {};\ + };\ + struct D : public B::C {\ + C* foo = 0;\ + C* method();\ + };\ + };"; + const char* xmlCode = "\ + \ + \ + \ + \ + \ + "; + TestUtil t(cppCode, xmlCode, false); + AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClass* classD = classes.findClass("A::D"); + QVERIFY(classD); + const AbstractMetaFunction* meth = classD->findFunction("method"); + QVERIFY(meth); +} + +QTEST_APPLESS_MAIN(TestResolveType) + +#include "testresolvetype.moc" + diff --git a/tests/testresolvetype.h b/tests/testresolvetype.h new file mode 100644 index 000000000..8dc1c0a01 --- /dev/null +++ b/tests/testresolvetype.h @@ -0,0 +1,36 @@ +/* +* This file is part of the API Extractor 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 General Public License +* version 2 as published by the Free Software Foundation. +* +* 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 +* General Public License for more details. +* +* You should have received a copy of the GNU 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 +* +*/ + +#ifndef TESTRESOLVETYPE_H +#define TESTRESOLVETYPE_H + +#include + +class TestResolveType : public QObject +{ + Q_OBJECT + private slots: + void testResolveReturnTypeFromParentScope(); +}; + +#endif -- cgit v1.2.3