diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/testabstractmetatype.cpp | 30 | ||||
-rw-r--r-- | tests/testabstractmetatype.h | 1 |
2 files changed, 31 insertions, 0 deletions
diff --git a/tests/testabstractmetatype.cpp b/tests/testabstractmetatype.cpp index ed39ebc3b..1e9ce81eb 100644 --- a/tests/testabstractmetatype.cpp +++ b/tests/testabstractmetatype.cpp @@ -171,6 +171,36 @@ void TestAbstractMetaType::testTypedefWithTemplates() QCOMPARE(metaType->cppSignature(), QString("A<B >")); } + +void TestAbstractMetaType::testObjectTypeUsedAsValue() +{ + const char* cppCode ="\ + class A {\ + void method(A);\ + };\ + "; + const char* xmlCode = "<typesystem package='Foo'>\ + <object-type name='A' />\ + </typesystem>"; + TestUtil t(cppCode, xmlCode); + + AbstractMetaClassList classes = t.builder()->classes(); + QCOMPARE(classes.size(), 1); + AbstractMetaClass* classA = classes.findClass("A"); + QVERIFY(classA); + AbstractMetaFunctionList overloads = classA->queryFunctionsByName("method"); + QCOMPARE(overloads.count(), 1); + AbstractMetaFunction* method = overloads.first(); + QVERIFY(method); + AbstractMetaArgumentList args = method->arguments(); + QCOMPARE(args.count(), 1); + AbstractMetaArgument* arg = args.first(); + AbstractMetaType* metaType = arg->type(); + QCOMPARE(metaType->cppSignature(), QString("A")); + QVERIFY(metaType->isValue()); + QVERIFY(metaType->typeEntry()->isObject()); +} + QTEST_APPLESS_MAIN(TestAbstractMetaType) #include "testabstractmetatype.moc" diff --git a/tests/testabstractmetatype.h b/tests/testabstractmetatype.h index e62e05107..f543172cc 100644 --- a/tests/testabstractmetatype.h +++ b/tests/testabstractmetatype.h @@ -36,6 +36,7 @@ private slots: void testTypedefWithTemplates(); void testApiVersionSupported(); void testApiVersionNotSupported(); + void testObjectTypeUsedAsValue(); }; #endif |