aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2010-03-25 11:53:08 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-09 19:09:58 -0300
commitafc91022a1ef73ecc47fc04fe9a49862b5052605 (patch)
treeac91c8270d0c28554292aff2d83a2e921add7bb2 /tests
parentb721351c714cbfa71467bc56b53f2912b56c0646 (diff)
An inner class should not be polymorphic just because his enclosing class is.
This commit adds a test for that situation.
Diffstat (limited to 'tests')
-rw-r--r--tests/testabstractmetaclass.cpp23
-rw-r--r--tests/testabstractmetaclass.h1
2 files changed, 24 insertions, 0 deletions
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 = "\
+ <typesystem package=\"Foo\"> \
+ <object-type name='A' /> \
+ <value-type name='A::B' /> \
+ </typesystem>";
+ 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