diff options
Diffstat (limited to 'sources/shiboken6/ApiExtractor/tests/testresolvetype.cpp')
-rw-r--r-- | sources/shiboken6/ApiExtractor/tests/testresolvetype.cpp | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/sources/shiboken6/ApiExtractor/tests/testresolvetype.cpp b/sources/shiboken6/ApiExtractor/tests/testresolvetype.cpp index a798c4339..67ebcc606 100644 --- a/sources/shiboken6/ApiExtractor/tests/testresolvetype.cpp +++ b/sources/shiboken6/ApiExtractor/tests/testresolvetype.cpp @@ -4,10 +4,12 @@ #include "testresolvetype.h" #include "testutil.h" #include <abstractmetaargument.h> +#include <abstractmetaenum.h> #include <abstractmetafunction.h> #include <abstractmetalang.h> #include <abstractmetatype.h> #include <complextypeentry.h> +#include <enumtypeentry.h> #include <primitivetypeentry.h> #include <typedatabase.h> @@ -45,12 +47,12 @@ void TestResolveType::testResolveReturnTypeFromParentScope() </namespace-type> </typesystem>)XML"; QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); - QVERIFY(!builder.isNull()); + QVERIFY(builder); AbstractMetaClassList classes = builder->classes(); - const AbstractMetaClass *classD = AbstractMetaClass::findClass(classes, u"A::D"); + const auto classD = AbstractMetaClass::findClass(classes, "A::D"); QVERIFY(classD); - const auto meth = classD->findFunction(u"method"); - QVERIFY(!meth.isNull()); + const auto meth = classD->findFunction("method"); + QVERIFY(meth); QVERIFY(meth); } @@ -60,13 +62,14 @@ void TestResolveType::testResolveReturnTypeFromParentScope() struct DefaultValuesFixture { - QSharedPointer<AbstractMetaBuilder> builder; + std::shared_ptr<AbstractMetaBuilder> builder; AbstractMetaType intType; AbstractMetaType stringType; AbstractMetaType classType; AbstractMetaType listType; - const AbstractMetaClass *klass{}; + AbstractMetaType enumType; + AbstractMetaClassCPtr klass{}; }; Q_DECLARE_METATYPE(DefaultValuesFixture) @@ -91,6 +94,7 @@ public: static const int INT_FIELD_1 = 42; static const char *CHAR_FIELD_1; + static const Enum DefaultValue = enumValue1; }; } // Namespace )"; @@ -106,7 +110,7 @@ public: )"; fixture->builder.reset(TestUtil::parse(cppCode, xmlCode, false)); - if (fixture->builder.isNull()) + if (!fixture->builder) return -1; for (const auto &klass : fixture->builder->classes()) { @@ -121,7 +125,7 @@ public: fixture->classType = AbstractMetaType(fixture->klass->typeEntry()); fixture->classType.decideUsagePattern(); - for (const auto &f : fixture->klass->findFunctions(u"Test"_s)) { + for (const auto &f : fixture->klass->findFunctions("Test")) { if (f->functionType() == AbstractMetaFunction::ConstructorFunction && f->arguments().size() == 1) { const auto type = f->arguments().constFirst().type(); @@ -134,11 +138,14 @@ public: if (fixture->intType.isVoid() || fixture->stringType.isVoid()) return -3; - auto listFunc = fixture->klass->findFunction(u"listFunc"_s); - if (listFunc.isNull() || listFunc->arguments().size() != 1) + auto listFunc = fixture->klass->findFunction("listFunc"); + if (!listFunc || listFunc->arguments().size() != 1) return -3; fixture->listType = listFunc->arguments().constFirst().type(); + fixture->enumType = AbstractMetaType(fixture->klass->enums().constFirst().typeEntry()); + fixture->enumType.decideUsagePattern(); + return 0; } @@ -213,6 +220,11 @@ void TestResolveType::testFixDefaultArguments_data() QTest::newRow("self from enum") << fixture << setupOk << fixture.classType << "Test(enumValue1)" << expected; + + // Don't qualify fields to "Test::Enum::DefaultValue" + QTest::newRow("enum from static field") + << fixture << setupOk << fixture.enumType + << "DefaultValue" << u"Namespace::Test::DefaultValue"_s; } void TestResolveType::testFixDefaultArguments() @@ -251,16 +263,16 @@ public: )"; QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); - QVERIFY(!builder.isNull()); + QVERIFY(builder); AbstractMetaClassList classes = builder->classes(); - const AbstractMetaClass *testClass = AbstractMetaClass::findClass(classes, u"Test"); + const auto testClass = AbstractMetaClass::findClass(classes, "Test"); QVERIFY(testClass); auto *tdb = TypeDatabase::instance(); auto int32TEntry = tdb->findType(u"int32_t"_s); - QVERIFY2(!int32TEntry.isNull(), "int32_t not found"); + QVERIFY2(int32TEntry, "int32_t not found"); QVERIFY(int32TEntry->isPrimitive()); - auto int32T = qSharedPointerCast<const PrimitiveTypeEntry>(int32TEntry); + auto int32T = std::static_pointer_cast<const PrimitiveTypeEntry>(int32TEntry); auto basicType = basicReferencedTypeEntry(int32T); QVERIFY2(basicType != int32T, "Typedef for int32_t not found. Check the system include paths."); |