diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2009-12-16 18:30:17 -0300 |
---|---|---|
committer | Marcelo Lira <marcelo.lira@openbossa.org> | 2009-12-16 18:42:37 -0300 |
commit | 0a740ad90f467ccdf00cb674eb80310ddb115b50 (patch) | |
tree | 39f8d5d241311d3ab1f07ec9241fa1541bc7b9d7 /tests/testaddfunction.cpp | |
parent | f2fd366c90dd64a37f48e5ea554b8aebf00b6de5 (diff) |
Adds support for varargs in AbstractMetaArgument, AbstractMetaType and VarargsTypeEntry.
Reviewed by Hugo Parente <hugo.lima@openbossa.org>
Diffstat (limited to 'tests/testaddfunction.cpp')
-rw-r--r-- | tests/testaddfunction.cpp | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/tests/testaddfunction.cpp b/tests/testaddfunction.cpp index 3188ca23d..5cdb74ecc 100644 --- a/tests/testaddfunction.cpp +++ b/tests/testaddfunction.cpp @@ -194,7 +194,6 @@ void TestAddFunction::testAddFunctionWithoutParenteses() QVERIFY(addedFunc); QVERIFY(addedFunc->hasInjectedCode()); QCOMPARE(addedFunc->injectedCodeSnips(CodeSnip::Any, TypeSystem::TargetLangCode).count(), 1); - } void TestAddFunction::testAddFunctionWithDefaultArgs() @@ -260,6 +259,36 @@ void TestAddFunction::testAddFunctionAtModuleLevel() QCOMPARE(snip.code(), QString("custom_code();")); } +void TestAddFunction::testAddFunctionWithVarargs() +{ + const char sig1[] = "func(int,char,...)"; + AddedFunction f1(sig1, "void"); + + QCOMPARE(f1.name(), QString("func")); + QCOMPARE(f1.arguments().count(), 3); + QVERIFY(!f1.isConstant()); + + const char cppCode[] = "struct A {};"; + const char xmlCode[] = "\ + <typesystem package=\"Foo\">\ + <primitive-type name='int'/> \ + <primitive-type name='char'/> \ + <value-type name='A'>\ + <add-function signature='func(int,char,...)'/>\ + </value-type>\ + </typesystem>"; + + TestUtil t(cppCode, xmlCode, false); + AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClass* classA = classes.findClass("A"); + QVERIFY(classA); + const AbstractMetaFunction* addedFunc = classA->findFunction("func"); + QVERIFY(addedFunc); + const AbstractMetaArgument* arg = addedFunc->arguments().last(); + QVERIFY(arg->type()->isVarargs()); + QVERIFY(arg->type()->typeEntry()->isVarargs()); +} + QTEST_APPLESS_MAIN(TestAddFunction) #include "testaddfunction.moc" |