diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-03-25 11:53:08 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-09 19:09:58 -0300 |
commit | afc91022a1ef73ecc47fc04fe9a49862b5052605 (patch) | |
tree | ac91c8270d0c28554292aff2d83a2e921add7bb2 /tests/testabstractmetaclass.cpp | |
parent | b721351c714cbfa71467bc56b53f2912b56c0646 (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/testabstractmetaclass.cpp')
-rw-r--r-- | tests/testabstractmetaclass.cpp | 23 |
1 files changed, 23 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) |