// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "testnamespace.h" #include "testutil.h" #include #include #include #include #include using namespace Qt::StringLiterals; void NamespaceTest::testNamespaceMembers() { const char* cppCode = "\ namespace Namespace\n\ {\n\ enum Option {\n\ OpZero,\n\ OpOne\n\ };\n\ void foo(Option opt);\n\ };\n"; const char* xmlCode = "\ \n\ \n\ \n\ \n\ \n"; QScopedPointer builder(TestUtil::parse(cppCode, xmlCode, false)); QVERIFY(!builder.isNull()); AbstractMetaClassList classes = builder->classes(); AbstractMetaClass *ns = AbstractMetaClass::findClass(classes, u"Namespace"); QVERIFY(ns); auto metaEnum = ns->findEnum(u"Option"_s); QVERIFY(metaEnum.has_value()); const auto func = ns->findFunction(u"foo"); QVERIFY(!func.isNull()); } void NamespaceTest::testNamespaceInnerClassMembers() { const char* cppCode = "\ namespace OuterNamespace\n\ {\n\ namespace InnerNamespace {\n\ struct SomeClass {\n\ void method();\n\ };\n\ };\n\ };\n"; const char* xmlCode = "\ \n\ \n\ \n\ \n\ \n\ \n\ \n"; QScopedPointer builder(TestUtil::parse(cppCode, xmlCode, false)); QVERIFY(!builder.isNull()); AbstractMetaClassList classes = builder->classes(); const AbstractMetaClass *ons = AbstractMetaClass::findClass(classes, u"OuterNamespace"); QVERIFY(ons); const AbstractMetaClass *ins = AbstractMetaClass::findClass(classes, u"OuterNamespace::InnerNamespace"); QVERIFY(ins); const AbstractMetaClass *sc = AbstractMetaClass::findClass(classes, u"OuterNamespace::InnerNamespace::SomeClass"); QVERIFY(sc); const auto meth = sc->findFunction(u"method"); QVERIFY(!meth.isNull()); } QTEST_APPLESS_MAIN(NamespaceTest)