static ProjectInfo setupProject(const QByteArray &projectFile, const QByteArray &mainFile,
                                ProjectExplorerHelper &pHelper)
{
    CppModelManagerHelper cppHelper;
    Project *project = pHelper.openProject(projectFilePath(_(projectFile)));
    if (!project)
        return ProjectInfo();

    // Wait only for a single file: we don't really care if the file is refreshed or not, but at
    // this point we know that the C++ model manager got notified of all project parts and we can
    // retrieve them for inspection.
    cppHelper.waitForSourceFilesRefreshed(projectFilePath(_(mainFile)));

    CppModelManagerInterface *mm = cppHelper.cppModelManager();
    return mm->projectInfo(project);
}
void GenericProjectPlugin::test_simple()
{
    CppModelManagerHelper cppHelper;

    QString projectFile = _("testdata_simpleproject/simpleproject.creator");
    ProjectExplorerHelper pHelper;
    Project *project = pHelper.openProject(projectFilePath(projectFile));
    QVERIFY(project);

    QString mainFile = projectFilePath(_("testdata_simpleproject/main.cpp"));
    cppHelper.waitForSourceFilesRefreshed(mainFile);

    CppModelManagerInterface *mm = cppHelper.cppModelManager();
    CppModelManagerInterface::ProjectInfo pInfo = mm->projectInfo(project);

    QCOMPARE(pInfo.projectParts().size(), 1);

    ProjectPart::Ptr pPart = pInfo.projectParts().first();
    QVERIFY(pPart);
    QCOMPARE(pPart->files.size(), 1);
    QCOMPARE(pPart->files.first().path, mainFile);
    QCOMPARE(pPart->files.first().kind, ProjectFile::CXXSource);
}