diff options
Diffstat (limited to 'tests/testtemplates.cpp')
-rw-r--r-- | tests/testtemplates.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/testtemplates.cpp b/tests/testtemplates.cpp index d52eed15a..19bc32eca 100644 --- a/tests/testtemplates.cpp +++ b/tests/testtemplates.cpp @@ -23,8 +23,51 @@ #include "testtemplates.h" #include <QtTest/QTest> +#include <QTemporaryFile> #include "testutil.h" +void TestTemplates::testTemplateWithNamespace() +{ + const char cppCode[] = "\ + struct Url {\ + void name();\ + };\ + namespace Internet {\ + struct Url{};\ + struct Bookmarks {\ + QList<Url> list();\ + };\ + }"; + const char xmlCode0[] = "\ + <typesystem package='Pakcage.Network'>\ + <value-type name='Url' />\ + </typesystem>"; + + QTemporaryFile file; + QVERIFY(file.open()); + file.write(xmlCode0); + file.close(); + + QString xmlCode1 = QString("\ + <typesystem package='Package.Internet'>\ + <load-typesystem name='%1' generate='no'/>\ + <container-type name='QList' type='list'/> \ + <namespace-type name='Internet' generate='no' />\ + <value-type name='Internet::Url'/>\ + <value-type name='Internet::Bookmarks'/>\ + </typesystem>").arg(file.fileName()); + + TestUtil t(cppCode, qPrintable(xmlCode1), false); + AbstractMetaClassList classes = t.builder()->classes(); + + AbstractMetaClass* classB = classes.findClass("Bookmarks"); + QVERIFY(classB); + const AbstractMetaFunction* func = classB->findFunction("list"); + AbstractMetaType* funcType = func->type(); + QVERIFY(funcType); + QCOMPARE(funcType->cppSignature(), QString("QList<Internet::Url >")); +} + void TestTemplates::testTemplateOnContainers() { const char cppCode[] = "\ |