aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorHugo Lima <hugo.lima@openbossa.org>2009-09-18 15:00:54 -0300
committerHugo Lima <hugo.lima@openbossa.org>2009-09-18 15:00:54 -0300
commitbe5fb84cf7a20d7fe446ef8fdb3b03914fca8526 (patch)
tree29ab621b40dec366e973adce8d001ec594efa2b2 /tests
parent31bf15c779fc5c66c0ed37b557d288dd7911dfa3 (diff)
Add tests for defaultValue and originalDefaultValue methods.
Diffstat (limited to 'tests')
-rw-r--r--tests/testabstractmetaclass.cpp53
-rw-r--r--tests/testabstractmetaclass.h2
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