diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2009-11-24 15:00:11 -0300 |
---|---|---|
committer | Marcelo Lira <marcelo.lira@openbossa.org> | 2009-11-24 15:20:30 -0300 |
commit | 5c8637fd719e9dfd0415173128d0d8ea916b7d9b (patch) | |
tree | 6936d28579d1761a2dde4954734e7f6542547bb2 /tests/testaddfunction.cpp | |
parent | 139e84644ea0088e16678e8b8c17b9e5b4fd6269 (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.cpp | 29 |
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 {};"; |