diff options
Diffstat (limited to 'src/plugins/cpptools/cppmodelmanager_test.cpp')
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager_test.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppmodelmanager_test.cpp b/src/plugins/cpptools/cppmodelmanager_test.cpp index 51cc82f5ed..bc786e8bdb 100644 --- a/src/plugins/cpptools/cppmodelmanager_test.cpp +++ b/src/plugins/cpptools/cppmodelmanager_test.cpp @@ -28,6 +28,7 @@ ****************************************************************************/ #include "cpptoolsplugin.h" +#include "CppDocument.h" #include "cppmodelmanager.h" #include "modelmanagertesthelper.h" @@ -36,6 +37,7 @@ using namespace CppTools::Internal; +typedef CPlusPlus::Document Document; typedef CPlusPlus::CppModelManagerInterface::ProjectInfo ProjectInfo; typedef CPlusPlus::CppModelManagerInterface::ProjectPart ProjectPart; typedef ProjectExplorer::Project Project; @@ -61,6 +63,11 @@ QString testFrameworksDir(bool cleaned = true) { return testDataDir(QLatin1String("frameworks"), cleaned); } + +QString testSource(const QString &fileName) +{ + return testDataDir(QLatin1String("sources")) + fileName; +} } // anonymous namespace void CppToolsPlugin::test_modelmanager_paths() @@ -90,3 +97,42 @@ void CppToolsPlugin::test_modelmanager_paths() QCOMPARE(frameworkPaths.size(), 1); QVERIFY(frameworkPaths.contains(testFrameworksDir())); } + +void CppToolsPlugin::test_modelmanager_framework_headers() +{ + ModelManagerTestHelper helper; + CppModelManager *mm = CppModelManager::instance(); + + Project *project = helper.createProject(QLatin1String("test_modelmanager_framework_headers")); + ProjectInfo pi = mm->projectInfo(project); + QCOMPARE(pi.project().data(), project); + + ProjectPart::Ptr part(new ProjectPart); + pi.appendProjectPart(part); + part->language = ProjectPart::CXX; + part->qtVersion = ProjectPart::Qt5; + part->defines = QByteArray("#define OH_BEHAVE -1\n"); + part->includePaths << testIncludeDir(); + part->frameworkPaths << testFrameworksDir(); + part->sourceFiles << testSource(QLatin1String("test_modelmanager_framework_headers.cpp")); + + mm->updateProjectInfo(pi); + mm->updateSourceFiles(part->sourceFiles).waitForFinished(); + QCoreApplication::processEvents(); + + QVERIFY(mm->snapshot().contains(part->sourceFiles.first())); + Document::Ptr doc = mm->snapshot().document(part->sourceFiles.first()); + QVERIFY(!doc.isNull()); + CPlusPlus::Namespace *ns = doc->globalNamespace(); + QVERIFY(ns); + QVERIFY(ns->memberCount() > 0); + for (unsigned i = 0, ei = ns->memberCount(); i < ei; ++i) { + CPlusPlus::Symbol *s = ns->memberAt(i); + QVERIFY(s); + QVERIFY(s->name()); + const CPlusPlus::Identifier *id = s->name()->asNameId(); + QVERIFY(id); + QByteArray chars = id->chars(); + QVERIFY(chars.startsWith("success")); + } +} |