diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2011-09-16 19:43:38 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-09 19:10:19 -0300 |
commit | 6b0d3bae3a0c015c3341a6d615a6b6d799322d8a (patch) | |
tree | e4bc27dc492b588a29736b9b63f4d494637b157e /tests/testmodifyfunction.cpp | |
parent | 35ab8b8e722b73a3a3ed9312379f6ab849252e19 (diff) |
Fixed modifications to global functions.sb-0.10.7
Also added unit test.
Reviewed by Luciano Wolf <luciano.wolf@openbossa.org>
Reviewed by Renato Araújo <renato.filho@openbossa.org>
Diffstat (limited to 'tests/testmodifyfunction.cpp')
-rw-r--r-- | tests/testmodifyfunction.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/testmodifyfunction.cpp b/tests/testmodifyfunction.cpp index 245a3e169..93dae7536 100644 --- a/tests/testmodifyfunction.cpp +++ b/tests/testmodifyfunction.cpp @@ -201,6 +201,43 @@ void TestModifyFunction::testWithApiVersion() QVERIFY(func->ownership(func->ownerClass(), TypeSystem::TargetLangCode, 0) != TypeSystem::CppOwnership); } +void TestModifyFunction::testGlobalFunctionModification() +{ + const char* cppCode ="\ + struct A {};\ + void function(A* a = 0);\ + "; + const char* xmlCode = "\ + <typesystem package='Foo'> \ + <primitive-type name='A'/>\ + <function signature='function(A*)'>\ + <modify-function signature='function(A*)'>\ + <modify-argument index='1'>\ + <replace-type modified-type='A'/>\ + <replace-default-expression with='A()'/>\ + </modify-argument>\ + </modify-function>\ + </function>\ + </typesystem>"; + + TestUtil t(cppCode, xmlCode, false); + QCOMPARE(t.builder()->globalFunctions().size(), 1); + + FunctionModificationList mods = TypeDatabase::instance()->functionModifications("function(A*)"); + QCOMPARE(mods.count(), 1); + QList<ArgumentModification> argMods = mods.first().argument_mods; + QCOMPARE(argMods.count(), 1); + ArgumentModification argMod = argMods.first(); + QCOMPARE(argMod.replacedDefaultExpression, QString("A()")); + + const AbstractMetaFunction* func = t.builder()->globalFunctions().first(); + QVERIFY(func); + QCOMPARE(func->arguments().count(), 1); + const AbstractMetaArgument* arg = func->arguments().first(); + QCOMPARE(arg->type()->cppSignature(), QString("A *")); + QCOMPARE(arg->originalDefaultValueExpression(), QString("0")); + QCOMPARE(arg->defaultValueExpression(), QString("A()")); +} QTEST_APPLESS_MAIN(TestModifyFunction) |