aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/ApiExtractor/tests/testaddfunction.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken6/ApiExtractor/tests/testaddfunction.cpp')
-rw-r--r--sources/shiboken6/ApiExtractor/tests/testaddfunction.cpp107
1 files changed, 68 insertions, 39 deletions
diff --git a/sources/shiboken6/ApiExtractor/tests/testaddfunction.cpp b/sources/shiboken6/ApiExtractor/tests/testaddfunction.cpp
index ca10cbfc6..20ca3ae6f 100644
--- a/sources/shiboken6/ApiExtractor/tests/testaddfunction.cpp
+++ b/sources/shiboken6/ApiExtractor/tests/testaddfunction.cpp
@@ -38,41 +38,64 @@ void TestAddFunction::testParsingFuncNameAndConstness()
{
// generic test...
const char sig1[] = "func(type1, const type2, const type3* const)";
- AddedFunction f1(QLatin1String(sig1), QLatin1String("void"));
- QCOMPARE(f1.name(), QLatin1String("func"));
- QCOMPARE(f1.arguments().count(), 3);
- AddedFunction::TypeInfo retval = f1.returnType();
- QCOMPARE(retval.name, QLatin1String("void"));
- QCOMPARE(retval.indirections, 0);
- QCOMPARE(retval.isConstant, false);
- QCOMPARE(retval.isReference, false);
+ QString errorMessage;
+ auto f1 = AddedFunction::createAddedFunction(QLatin1String(sig1), QLatin1String("void"),
+ &errorMessage);
+ QVERIFY2(!f1.isNull(), qPrintable(errorMessage));
+ QCOMPARE(f1->name(), QLatin1String("func"));
+ QCOMPARE(f1->arguments().count(), 3);
+ TypeInfo retval = f1->returnType();
+ QCOMPARE(retval.qualifiedName(), QStringList{QLatin1String("void")});
+ QCOMPARE(retval.indirections(), 0);
+ QCOMPARE(retval.isConstant(), false);
+ QCOMPARE(retval.referenceType(), NoReference);
// test with a ugly template as argument and other ugly stuff
const char sig2[] = " _fu__nc_ ( type1, const type2, const Abc<int& , C<char*> * > * *@my_name@, const type3* const ) const ";
- AddedFunction f2(QLatin1String(sig2), QLatin1String("const Abc<int& , C<char*> * > * *"));
- QCOMPARE(f2.name(), QLatin1String("_fu__nc_"));
- const auto &args = f2.arguments();
+ auto f2 = AddedFunction::createAddedFunction(QLatin1String(sig2),
+ QLatin1String("const Abc<int& , C<char*> * > * *"),
+ &errorMessage);
+ QVERIFY2(!f2.isNull(), qPrintable(errorMessage));
+ QCOMPARE(f2->name(), QLatin1String("_fu__nc_"));
+ const auto &args = f2->arguments();
QCOMPARE(args.count(), 4);
- retval = f2.returnType();
- QCOMPARE(retval.name, QLatin1String("Abc<int& , C<char*> * >"));
- QCOMPARE(retval.indirections, 2);
- QCOMPARE(retval.isConstant, true);
- QCOMPARE(retval.isReference, false);
- retval = args.at(2).typeInfo;
+ retval = f2->returnType();
+ QCOMPARE(retval.qualifiedName(), QStringList{QLatin1String("Abc")});
+ QCOMPARE(retval.instantiations().size(), 2);
+ QCOMPARE(retval.toString(), QLatin1String("const Abc<int&, C<char*>*>**"));
+ QCOMPARE(retval.indirections(), 2);
+ QCOMPARE(retval.isConstant(), true);
+ QCOMPARE(retval.referenceType(), NoReference);
QVERIFY(args.at(0).name.isEmpty());
QVERIFY(args.at(1).name.isEmpty());
+
QCOMPARE(args.at(2).name, QLatin1String("my_name"));
+ auto arg2Type = args.at(2).typeInfo;
+ QCOMPARE(arg2Type.qualifiedName(), QStringList{QLatin1String("Abc")});
+ QCOMPARE(arg2Type.instantiations().size(), 2);
+ QCOMPARE(arg2Type.toString(), QLatin1String("const Abc<int&, C<char*>*>**"));
+ QCOMPARE(arg2Type.indirections(), 2);
+ QCOMPARE(arg2Type.isConstant(), true);
+ QCOMPARE(arg2Type.referenceType(), NoReference);
+
QVERIFY(args.at(3).name.isEmpty());
- QCOMPARE(retval.name, QLatin1String("Abc<int& , C<char*> * >"));
- QCOMPARE(retval.indirections, 2);
- QCOMPARE(retval.isConstant, true);
- QCOMPARE(retval.isReference, false);
// function with no args.
const char sig3[] = "func()";
- AddedFunction f3(QLatin1String(sig3), QLatin1String("void"));
- QCOMPARE(f3.name(), QLatin1String("func"));
- QCOMPARE(f3.arguments().count(), 0);
+ auto f3 = AddedFunction::createAddedFunction(QLatin1String(sig3), QLatin1String("void"),
+ &errorMessage);
+ QVERIFY2(!f3.isNull(), qPrintable(errorMessage));
+ QCOMPARE(f3->name(), QLatin1String("func"));
+ QCOMPARE(f3->arguments().count(), 0);
+
+ // const call operator
+ const char sig4[] = "operator()(int)const";
+ auto f4 = AddedFunction::createAddedFunction(QLatin1String(sig4), QLatin1String("int"),
+ &errorMessage);
+ QVERIFY2(!f4.isNull(), qPrintable(errorMessage));
+ QCOMPARE(f4->name(), QLatin1String("operator()"));
+ QCOMPARE(f4->arguments().count(), 1);
+ QVERIFY(f4->isConstant());
}
void TestAddFunction::testAddFunction()
@@ -196,11 +219,13 @@ void TestAddFunction::testAddFunctionCodeSnippets()
void TestAddFunction::testAddFunctionWithoutParenteses()
{
const char sig1[] = "func";
- AddedFunction f1(QLatin1String(sig1), QLatin1String("void"));
-
- QCOMPARE(f1.name(), QLatin1String("func"));
- QCOMPARE(f1.arguments().count(), 0);
- QCOMPARE(f1.isConstant(), false);
+ QString errorMessage;
+ auto f1 = AddedFunction::createAddedFunction(QLatin1String(sig1), QLatin1String("void"),
+ &errorMessage);
+ QVERIFY2(!f1.isNull(), qPrintable(errorMessage));
+ QCOMPARE(f1->name(), QLatin1String("func"));
+ QCOMPARE(f1->arguments().count(), 0);
+ QCOMPARE(f1->isConstant(), false);
const char cppCode[] = "struct A {};\n";
const char xmlCode[] = "\
@@ -226,11 +251,13 @@ void TestAddFunction::testAddFunctionWithoutParenteses()
void TestAddFunction::testAddFunctionWithDefaultArgs()
{
const char sig1[] = "func";
- AddedFunction f1(QLatin1String(sig1), QLatin1String("void"));
-
- QCOMPARE(f1.name(), QLatin1String("func"));
- QCOMPARE(f1.arguments().count(), 0);
- QCOMPARE(f1.isConstant(), false);
+ QString errorMessage;
+ auto f1 = AddedFunction::createAddedFunction(QLatin1String(sig1), QLatin1String("void"),
+ &errorMessage);
+ QVERIFY2(!f1.isNull(), qPrintable(errorMessage));
+ QCOMPARE(f1->name(), QLatin1String("func"));
+ QCOMPARE(f1->arguments().count(), 0);
+ QCOMPARE(f1->isConstant(), false);
const char cppCode[] = "struct A { };\n";
const char xmlCode[] = "\
@@ -291,11 +318,13 @@ void TestAddFunction::testAddFunctionAtModuleLevel()
void TestAddFunction::testAddFunctionWithVarargs()
{
const char sig1[] = "func(int,char,...)";
- AddedFunction f1( QLatin1String(sig1), QLatin1String("void"));
-
- QCOMPARE(f1.name(), QLatin1String("func"));
- QCOMPARE(f1.arguments().count(), 3);
- QVERIFY(!f1.isConstant());
+ QString errorMessage;
+ auto f1 = AddedFunction::createAddedFunction(QLatin1String(sig1), QLatin1String("void"),
+ &errorMessage);
+ QVERIFY2(!f1.isNull(), qPrintable(errorMessage));
+ QCOMPARE(f1->name(), QLatin1String("func"));
+ QCOMPARE(f1->arguments().count(), 3);
+ QVERIFY(!f1->isConstant());
const char cppCode[] = "struct A {};\n";
const char xmlCode[] = "\