aboutsummaryrefslogtreecommitdiffstats
path: root/tests/testaddfunction.cpp
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2009-11-24 15:00:11 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2009-11-24 15:20:30 -0300
commit5c8637fd719e9dfd0415173128d0d8ea916b7d9b (patch)
tree6936d28579d1761a2dde4954734e7f6542547bb2 /tests/testaddfunction.cpp
parent139e84644ea0088e16678e8b8c17b9e5b4fd6269 (diff)
Modified the AbstractMetaFunction class to have a separated flag to
indicate that it was added by the user or not, instead of using the AbstractMetaFunction::UserAddedFunction enum value. The old way prevented the function to be an UserAddedFunction and a ConstructorFunction at the same time, since this information was stored as an enum of the AbstractMetaFunction::FunctionType type. A test case was also added. Reviewed by Hugo Parente <hugo.lima@openbossa.org>
Diffstat (limited to 'tests/testaddfunction.cpp')
-rw-r--r--tests/testaddfunction.cpp29
1 files changed, 26 insertions, 3 deletions
diff --git a/tests/testaddfunction.cpp b/tests/testaddfunction.cpp
index 456b9888c..113fbf47c 100644
--- a/tests/testaddfunction.cpp
+++ b/tests/testaddfunction.cpp
@@ -85,7 +85,8 @@ void TestAddFunction::testAddFunction()
AbstractMetaFunction* addedFunc = classA->functions().last();
QCOMPARE(addedFunc->visibility(), uint(AbstractMetaFunction::Protected));
- QCOMPARE(addedFunc->functionType(), AbstractMetaFunction::UserAddedFunction);
+ QCOMPARE(addedFunc->functionType(), AbstractMetaFunction::NormalFunction);
+ QVERIFY(addedFunc->isUserAdded());
QCOMPARE(addedFunc->ownerClass(), classA);
QCOMPARE(addedFunc->implementingClass(), classA);
QCOMPARE(addedFunc->declaringClass(), classA);
@@ -103,6 +104,28 @@ void TestAddFunction::testAddFunction()
QCOMPARE(args[2]->type()->typeEntry(), typeDb->findType("B"));
}
+void TestAddFunction::testAddFunctionConstructor()
+{
+ const char cppCode[] = "struct A { A() {} };";
+ const char xmlCode[] = "\
+ <typesystem package=\"Foo\">\
+ <value-type name='A'>\
+ <add-function signature='A(int)' />\
+ </value-type>\
+ </typesystem>";
+ TestUtil t(cppCode, xmlCode);
+ AbstractMetaClassList classes = t.builder()->classes();
+ AbstractMetaClass* classA = classes.findClass("A");
+ QVERIFY(classA);
+ QCOMPARE(classA->functions().count(), 2); // default and added ctors
+ AbstractMetaFunction* addedFunc = classA->functions().last();
+ QCOMPARE(addedFunc->visibility(), uint(AbstractMetaFunction::Public));
+ QCOMPARE(addedFunc->functionType(), AbstractMetaFunction::ConstructorFunction);
+ QCOMPARE(addedFunc->arguments().size(), 1);
+ QVERIFY(addedFunc->isUserAdded());
+ QVERIFY(!addedFunc->type());
+}
+
void TestAddFunction::testAddFunctionTagDefaultValues()
{
const char cppCode[] = "struct A {};";
@@ -119,11 +142,11 @@ void TestAddFunction::testAddFunctionTagDefaultValues()
QCOMPARE(classA->functions().count(), 2); // default ctor and the added function
AbstractMetaFunction* addedFunc = classA->functions().last();
QCOMPARE(addedFunc->visibility(), uint(AbstractMetaFunction::Public));
- QCOMPARE(addedFunc->functionType(), AbstractMetaFunction::UserAddedFunction);
+ QCOMPARE(addedFunc->functionType(), AbstractMetaFunction::NormalFunction);
+ QVERIFY(addedFunc->isUserAdded());
QVERIFY(!addedFunc->type());
}
-
void TestAddFunction::testAddFunctionCodeSnippets()
{
const char cppCode[] = "struct A {};";