From afc91022a1ef73ecc47fc04fe9a49862b5052605 Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Thu, 25 Mar 2010 11:53:08 -0300 Subject: An inner class should not be polymorphic just because his enclosing class is. This commit adds a test for that situation. --- tests/testabstractmetaclass.cpp | 23 +++++++++++++++++++++++ tests/testabstractmetaclass.h | 1 + 2 files changed, 24 insertions(+) (limited to 'tests') diff --git a/tests/testabstractmetaclass.cpp b/tests/testabstractmetaclass.cpp index 244caa0c4..1248ee318 100644 --- a/tests/testabstractmetaclass.cpp +++ b/tests/testabstractmetaclass.cpp @@ -197,6 +197,29 @@ void TestAbstractMetaClass::testModifiedDefaultValues() QCOMPARE(arg->originalDefaultValueExpression(), QString("A::B()")); } +void TestAbstractMetaClass::testInnerClassOfAPolymorphicOne() +{ + const char* cppCode ="\ + struct A {\ + class B {};\ + virtual void method();\ + };\ + "; + const char* xmlCode = "\ + \ + \ + \ + "; + TestUtil t(cppCode, xmlCode); + AbstractMetaClassList classes = t.builder()->classes(); + QCOMPARE(classes.count(), 2); + AbstractMetaClass* classA = classes.findClass("A"); + QVERIFY(classA); + QVERIFY(classA->isPolymorphic()); + AbstractMetaClass* classB = classes.findClass("A::B"); + QVERIFY(classB); + QVERIFY(!classB->isPolymorphic()); +} QTEST_APPLESS_MAIN(TestAbstractMetaClass) diff --git a/tests/testabstractmetaclass.h b/tests/testabstractmetaclass.h index c89cbc5d1..ef41c2fce 100644 --- a/tests/testabstractmetaclass.h +++ b/tests/testabstractmetaclass.h @@ -37,6 +37,7 @@ private slots: void testVirtualMethods(); void testDefaultValues(); void testModifiedDefaultValues(); + void testInnerClassOfAPolymorphicOne(); }; #endif // TESTABSTRACTMETACLASS_H -- cgit v1.2.3