diff options
author | Hugo Lima <hugo.lima@openbossa.org> | 2009-09-18 15:00:54 -0300 |
---|---|---|
committer | Hugo Lima <hugo.lima@openbossa.org> | 2009-09-18 15:00:54 -0300 |
commit | be5fb84cf7a20d7fe446ef8fdb3b03914fca8526 (patch) | |
tree | 29ab621b40dec366e973adce8d001ec594efa2b2 /tests | |
parent | 31bf15c779fc5c66c0ed37b557d288dd7911dfa3 (diff) |
Add tests for defaultValue and originalDefaultValue methods.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/testabstractmetaclass.cpp | 53 | ||||
-rw-r--r-- | tests/testabstractmetaclass.h | 2 |
2 files changed, 55 insertions, 0 deletions
diff --git a/tests/testabstractmetaclass.cpp b/tests/testabstractmetaclass.cpp index 2050fca20..283956612 100644 --- a/tests/testabstractmetaclass.cpp +++ b/tests/testabstractmetaclass.cpp @@ -137,6 +137,59 @@ void TestAbstractMetaClass::testVirtualMethods() QCOMPARE(funcC->implementingClass(), c); } +void TestAbstractMetaClass::testDefaultValues() +{ + const char* cppCode ="\ + struct A {\ + class B {};\ + void method(B b = B());\ + };\ + "; + const char* xmlCode = "\ + <typesystem package=\"Foo\"> \ + <value-type name='A'/> \ + <value-type name='A::B'/> \ + </typesystem>"; + TestUtil t(cppCode, xmlCode); + AbstractMetaClassList classes = t.builder()->classes(); + QCOMPARE(classes.count(), 2); + AbstractMetaClass* classA = classes.findClass("A"); + QCOMPARE(classA->queryFunctionsByName("method").count(), 1); + AbstractMetaFunction* method = classA->queryFunctionsByName("method").first(); + AbstractMetaArgument* arg = method->arguments().first(); + QCOMPARE(arg->defaultValueExpression(), arg->originalDefaultValueExpression()); +} + +void TestAbstractMetaClass::testModifiedDefaultValues() +{ + const char* cppCode ="\ + struct A {\ + class B {};\ + void method(B b = B());\ + };\ + "; + const char* xmlCode = "\ + <typesystem package=\"Foo\"> \ + <value-type name='A'> \ + <modify-function signature='method(A::B)'>\ + <modify-argument index='1'>\ + <replace-default-expression with='Hello'/>\ + </modify-argument>\ + </modify-function>\ + </value-type>\ + <value-type name='A::B'/> \ + </typesystem>"; + TestUtil t(cppCode, xmlCode); + AbstractMetaClassList classes = t.builder()->classes(); + QCOMPARE(classes.count(), 2); + AbstractMetaClass* classA = classes.findClass("A"); + QCOMPARE(classA->queryFunctionsByName("method").count(), 1); + AbstractMetaFunction* method = classA->queryFunctionsByName("method").first(); + AbstractMetaArgument* arg = method->arguments().first(); + QCOMPARE(arg->defaultValueExpression(), QString("Hello")); + QCOMPARE(arg->originalDefaultValueExpression(), QString("A::B()")); +} + QTEST_APPLESS_MAIN(TestAbstractMetaClass) diff --git a/tests/testabstractmetaclass.h b/tests/testabstractmetaclass.h index 54336e7bf..c89cbc5d1 100644 --- a/tests/testabstractmetaclass.h +++ b/tests/testabstractmetaclass.h @@ -35,6 +35,8 @@ private slots: void testClassName(); void testClassNameUnderNamespace(); void testVirtualMethods(); + void testDefaultValues(); + void testModifiedDefaultValues(); }; #endif // TESTABSTRACTMETACLASS_H |