From b55c812e620e4c31c0b4658534c74930124995a4 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Mon, 30 Aug 2010 15:44:46 -0300 Subject: If a class have a non final method doesn't mean that class is polymorphic. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer: Luciano Wolf Renato Araújo --- tests/testabstractmetaclass.cpp | 32 ++++++++++++++++++++++++++++++++ tests/testabstractmetaclass.h | 1 + 2 files changed, 33 insertions(+) (limited to 'tests') diff --git a/tests/testabstractmetaclass.cpp b/tests/testabstractmetaclass.cpp index f412b19ca..11e17d989 100644 --- a/tests/testabstractmetaclass.cpp +++ b/tests/testabstractmetaclass.cpp @@ -408,6 +408,38 @@ void TestAbstractMetaClass::testObjectTypesMustNotHaveCopyConstructors() QCOMPARE(ctors.first()->minimalSignature(), QString("A()")); } +void TestAbstractMetaClass::testIsPolymorphic() +{ + const char* cppCode = "\ + class A\ + {\ + public:\ + A();\ + inline bool abc() const {}\ + };\ + \ + class B : public A\ + {\ + public:\ + B();\ + inline bool abc() const {}\ + };"; + const char* xmlCode = "\ + \ + \ + \ + \ + "; + + TestUtil t(cppCode, xmlCode); + AbstractMetaClassList classes = t.builder()->classes(); + QCOMPARE(classes.count(), 2); + AbstractMetaClass* b = classes.findClass("A"); + + QVERIFY(!b->isPolymorphic()); + AbstractMetaClass* a = classes.findClass("B"); + QVERIFY(!a->isPolymorphic()); +} QTEST_APPLESS_MAIN(TestAbstractMetaClass) diff --git a/tests/testabstractmetaclass.h b/tests/testabstractmetaclass.h index 03b5721a3..d725c46ed 100644 --- a/tests/testabstractmetaclass.h +++ b/tests/testabstractmetaclass.h @@ -42,6 +42,7 @@ private slots: void testClassInheritedDefaultConstructors(); void testAbstractClassDefaultConstructors(); void testObjectTypesMustNotHaveCopyConstructors(); + void testIsPolymorphic(); }; #endif // TESTABSTRACTMETACLASS_H -- cgit v1.2.3