diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2011-02-16 08:22:04 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-09 19:10:15 -0300 |
commit | 6fda7c1130e1ca7512ea2936ce2336722381fe07 (patch) | |
tree | 7c8240502fde9a37df15adae1cfc23be711c28a0 | |
parent | eab5d72e3f7727f5726fa49267985cfcbd8e2c07 (diff) |
Added a test for dropped type system entries.
Also updated the TestUtil class to deal with dropped entries.
-rw-r--r-- | tests/CMakeLists.txt | 1 | ||||
-rw-r--r-- | tests/testdroptypeentries.cpp | 110 | ||||
-rw-r--r-- | tests/testdroptypeentries.h | 37 | ||||
-rw-r--r-- | tests/testutil.h | 6 |
4 files changed, 153 insertions, 1 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8660ff1c1..ab5d289b3 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -21,6 +21,7 @@ declare_test(testcontainer) declare_test(testconversionoperator) declare_test(testconversionruletag) declare_test(testctorinformation) +declare_test(testdroptypeentries) declare_test(testdtorinformation) declare_test(testenum) declare_test(testfunctiontag) diff --git a/tests/testdroptypeentries.cpp b/tests/testdroptypeentries.cpp new file mode 100644 index 000000000..159bb67a9 --- /dev/null +++ b/tests/testdroptypeentries.cpp @@ -0,0 +1,110 @@ +/* +* This file is part of the API Extractor project. +* +* Copyright (C) 2011 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 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 "testdroptypeentries.h" +#include <QtTest/QTest> +#include "testutil.h" + +static const char* cppCode ="\ + struct ValueA {};\ + struct ValueB {};\ + struct ObjectA {};\ + struct ObjectB {};\ + namespace NamespaceA {\ + struct InnerClassA {};\ + namespace InnerNamespaceA {}\ + }\ + namespace NamespaceB {}\ + enum EnumA { Value0 };\ + enum EnumB { Value1 };\ + void funcA();\ + void funcB();\ +"; + +static const char* xmlCode = "\ +<typesystem package='Foo'>\ + <value-type name='ValueA' />\ + <value-type name='ValueB' />\ + <object-type name='ObjectA' />\ + <object-type name='ObjectB' />\ + <namespace-type name='NamespaceA'>\ + <value-type name='InnerClassA' />\ + <namespace-type name='InnerNamespaceA' />\ + </namespace-type>\ + <namespace-type name='NamespaceB' />\ + <enum-type name='EnumA' />\ + <enum-type name='EnumB' />\ + <function signature='funcA()' />\ + <function signature='funcB()' />\ +</typesystem>"; + +void TestDropTypeEntries::testDropEntries() +{ + QStringList droppedEntries("Foo.ValueB"); + droppedEntries << "Foo.ObjectB" << "Foo.NamespaceA.InnerClassA"; + droppedEntries << "Foo.NamespaceB" << "Foo.EnumB" << "Foo.funcB()"; + droppedEntries << "Foo.NamespaceA.InnerNamespaceA"; + TestUtil t(cppCode, xmlCode, false, 0, droppedEntries); + + AbstractMetaClassList classes = t.builder()->classes(); + QVERIFY(classes.findClass("ValueA")); + QVERIFY(!classes.findClass("ValueB")); + QVERIFY(classes.findClass("ObjectA")); + QVERIFY(!classes.findClass("ObjectB")); + QVERIFY(classes.findClass("NamespaceA")); + QVERIFY(!classes.findClass("NamespaceA::InnerClassA")); + QVERIFY(!classes.findClass("NamespaceB")); + + AbstractMetaEnumList globalEnums = t.builder()->globalEnums(); + QCOMPARE(globalEnums.count(), 1); + QCOMPARE(globalEnums.first()->name(), QString("EnumA")); + + TypeDatabase* td = TypeDatabase::instance(); + QVERIFY(td->findType("funcA")); + QVERIFY(!td->findType("funcB")); +} + +void TestDropTypeEntries::testDontDropEntries() +{ + TestUtil t(cppCode, xmlCode, false); + + AbstractMetaClassList classes = t.builder()->classes(); + QVERIFY(classes.findClass("ValueA")); + QVERIFY(classes.findClass("ValueB")); + QVERIFY(classes.findClass("ObjectA")); + QVERIFY(classes.findClass("ObjectB")); + QVERIFY(classes.findClass("NamespaceA")); + QVERIFY(classes.findClass("NamespaceA::InnerClassA")); + QVERIFY(classes.findClass("NamespaceB")); + + QCOMPARE(t.builder()->globalEnums().size(), 2); + + TypeDatabase* td = TypeDatabase::instance(); + QVERIFY(td->findType("funcA")); + QVERIFY(td->findType("funcB")); +} + +QTEST_APPLESS_MAIN(TestDropTypeEntries) + +#include "testdroptypeentries.moc" + diff --git a/tests/testdroptypeentries.h b/tests/testdroptypeentries.h new file mode 100644 index 000000000..d03f82742 --- /dev/null +++ b/tests/testdroptypeentries.h @@ -0,0 +1,37 @@ +/* +* This file is part of the API Extractor project. +* +* Copyright (C) 2011 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 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 TESTDROPTYPEENTRIES_H +#define TESTDROPTYPEENTRIES_H + +#include <QObject> + +class TestDropTypeEntries : public QObject +{ + Q_OBJECT + private slots: + void testDropEntries(); + void testDontDropEntries(); +}; + +#endif diff --git a/tests/testutil.h b/tests/testutil.h index 640a9f78a..775f3a1c9 100644 --- a/tests/testutil.h +++ b/tests/testutil.h @@ -31,12 +31,16 @@ class TestUtil { public: - TestUtil(const char* cppCode, const char* xmlCode, bool silent = true, double apiVersion = 0) : m_builder(0) + TestUtil(const char* cppCode, const char* xmlCode, + bool silent = true, double apiVersion = 0, + QStringList dropTypeEntries = QStringList()) + : m_builder(0) { ReportHandler::setSilent(silent); m_builder = new AbstractMetaBuilder; TypeDatabase* td = TypeDatabase::instance(true); td->setApiVersion(apiVersion); + td->setDropTypeEntries(dropTypeEntries); QBuffer buffer; // parse typesystem buffer.setData(xmlCode); |