aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/testabstractmetatype.cpp30
-rw-r--r--tests/testabstractmetatype.h1
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