forked from qt-creator/qt-creator
C++: Move codegen test into the CppTools plugin.
Change-Id: I4c70a9dbd5445188c3d202427da96e1c6ff90b63 Reviewed-by: Bill King <bill.king@nokia.com>
This commit is contained in:
committed by
Bill King
parent
e93d685a9e
commit
bc1b724476
@@ -30,6 +30,8 @@
|
|||||||
**
|
**
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
|
#include "cpptoolsplugin.h"
|
||||||
|
|
||||||
#include <AST.h>
|
#include <AST.h>
|
||||||
#include <Control.h>
|
#include <Control.h>
|
||||||
#include <CppDocument.h>
|
#include <CppDocument.h>
|
||||||
@@ -50,62 +52,18 @@
|
|||||||
#include <QTextDocument>
|
#include <QTextDocument>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
|
||||||
//TESTED_COMPONENT=src/libs/cplusplus
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Tests for various parts of the code generation. Well, okay, currently it only
|
Tests for various parts of the code generation. Well, okay, currently it only
|
||||||
tests the InsertionPointLocator.
|
tests the InsertionPointLocator.
|
||||||
*/
|
*/
|
||||||
using namespace CPlusPlus;
|
using namespace CPlusPlus;
|
||||||
using namespace CppTools;
|
using namespace CppTools;
|
||||||
|
using namespace CppTools::Internal;
|
||||||
|
|
||||||
class tst_Codegen: public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void initTestCase();
|
|
||||||
void cleanupTestCase();
|
|
||||||
void public_in_empty_class();
|
|
||||||
void public_in_nonempty_class();
|
|
||||||
void public_before_protected();
|
|
||||||
void private_after_protected();
|
|
||||||
void protected_in_nonempty_class();
|
|
||||||
void protected_betwee_public_and_private();
|
|
||||||
void qtdesigner_integration();
|
|
||||||
void definition_empty_class();
|
|
||||||
void definition_first_member();
|
|
||||||
void definition_last_member();
|
|
||||||
void definition_middle_member();
|
|
||||||
|
|
||||||
private:
|
|
||||||
ExtensionSystem::PluginManager *pluginManager;
|
|
||||||
QString tempPath;
|
|
||||||
};
|
|
||||||
|
|
||||||
void tst_Codegen::initTestCase()
|
|
||||||
{
|
|
||||||
pluginManager = new ExtensionSystem::PluginManager;
|
|
||||||
QSettings *settings = new QSettings(QSettings::IniFormat, QSettings::UserScope,
|
|
||||||
QLatin1String("Nokia"), QLatin1String("QtCreator"));
|
|
||||||
pluginManager->setSettings(settings);
|
|
||||||
pluginManager->setFileExtension(QLatin1String("pluginspec"));
|
|
||||||
pluginManager->setPluginPaths(QStringList() << QLatin1String(Q_PLUGIN_PATH));
|
|
||||||
pluginManager->loadPlugins();
|
|
||||||
|
|
||||||
tempPath = QDir::tempPath();
|
|
||||||
}
|
|
||||||
|
|
||||||
void tst_Codegen::cleanupTestCase()
|
|
||||||
{
|
|
||||||
// gives me a qFatal...
|
|
||||||
// pluginManager->shutdown();
|
|
||||||
// delete pluginManager;
|
|
||||||
}
|
|
||||||
/*!
|
/*!
|
||||||
Should insert at line 3, column 1, with "public:\n" as prefix and without suffix.
|
Should insert at line 3, column 1, with "public:\n" as prefix and without suffix.
|
||||||
*/
|
*/
|
||||||
void tst_Codegen::public_in_empty_class()
|
void CppToolsPlugin::test_codegen_public_in_empty_class()
|
||||||
{
|
{
|
||||||
const QByteArray src = "\n"
|
const QByteArray src = "\n"
|
||||||
"class Foo\n" // line 1
|
"class Foo\n" // line 1
|
||||||
@@ -144,7 +102,7 @@ void tst_Codegen::public_in_empty_class()
|
|||||||
/*!
|
/*!
|
||||||
Should insert at line 3, column 1, without prefix and without suffix.
|
Should insert at line 3, column 1, without prefix and without suffix.
|
||||||
*/
|
*/
|
||||||
void tst_Codegen::public_in_nonempty_class()
|
void CppToolsPlugin::test_codegen_public_in_nonempty_class()
|
||||||
{
|
{
|
||||||
const QByteArray src = "\n"
|
const QByteArray src = "\n"
|
||||||
"class Foo\n" // line 1
|
"class Foo\n" // line 1
|
||||||
@@ -184,7 +142,7 @@ void tst_Codegen::public_in_nonempty_class()
|
|||||||
/*!
|
/*!
|
||||||
Should insert at line 3, column 1, with "public:\n" as prefix and "\n suffix.
|
Should insert at line 3, column 1, with "public:\n" as prefix and "\n suffix.
|
||||||
*/
|
*/
|
||||||
void tst_Codegen::public_before_protected()
|
void CppToolsPlugin::test_codegen_public_before_protected()
|
||||||
{
|
{
|
||||||
const QByteArray src = "\n"
|
const QByteArray src = "\n"
|
||||||
"class Foo\n" // line 1
|
"class Foo\n" // line 1
|
||||||
@@ -225,7 +183,7 @@ void tst_Codegen::public_before_protected()
|
|||||||
Should insert at line 4, column 1, with "private:\n" as prefix and without
|
Should insert at line 4, column 1, with "private:\n" as prefix and without
|
||||||
suffix.
|
suffix.
|
||||||
*/
|
*/
|
||||||
void tst_Codegen::private_after_protected()
|
void CppToolsPlugin::test_codegen_private_after_protected()
|
||||||
{
|
{
|
||||||
const QByteArray src = "\n"
|
const QByteArray src = "\n"
|
||||||
"class Foo\n" // line 1
|
"class Foo\n" // line 1
|
||||||
@@ -266,7 +224,7 @@ void tst_Codegen::private_after_protected()
|
|||||||
Should insert at line 4, column 1, with "protected:\n" as prefix and without
|
Should insert at line 4, column 1, with "protected:\n" as prefix and without
|
||||||
suffix.
|
suffix.
|
||||||
*/
|
*/
|
||||||
void tst_Codegen::protected_in_nonempty_class()
|
void CppToolsPlugin::test_codegen_protected_in_nonempty_class()
|
||||||
{
|
{
|
||||||
const QByteArray src = "\n"
|
const QByteArray src = "\n"
|
||||||
"class Foo\n" // line 1
|
"class Foo\n" // line 1
|
||||||
@@ -306,7 +264,7 @@ void tst_Codegen::protected_in_nonempty_class()
|
|||||||
/*!
|
/*!
|
||||||
Should insert at line 4, column 1, with "protected\n" as prefix and "\n" suffix.
|
Should insert at line 4, column 1, with "protected\n" as prefix and "\n" suffix.
|
||||||
*/
|
*/
|
||||||
void tst_Codegen::protected_betwee_public_and_private()
|
void CppToolsPlugin::test_codegen_protected_between_public_and_private()
|
||||||
{
|
{
|
||||||
const QByteArray src = "\n"
|
const QByteArray src = "\n"
|
||||||
"class Foo\n" // line 1
|
"class Foo\n" // line 1
|
||||||
@@ -351,7 +309,7 @@ void tst_Codegen::protected_betwee_public_and_private()
|
|||||||
This is the typical Qt Designer case, with test-input like what the integration
|
This is the typical Qt Designer case, with test-input like what the integration
|
||||||
generates.
|
generates.
|
||||||
*/
|
*/
|
||||||
void tst_Codegen::qtdesigner_integration()
|
void CppToolsPlugin::test_codegen_qtdesigner_integration()
|
||||||
{
|
{
|
||||||
const QByteArray src = "/**** Some long (C)opyright notice ****/\n"
|
const QByteArray src = "/**** Some long (C)opyright notice ****/\n"
|
||||||
"#ifndef MAINWINDOW_H\n"
|
"#ifndef MAINWINDOW_H\n"
|
||||||
@@ -405,7 +363,7 @@ void tst_Codegen::qtdesigner_integration()
|
|||||||
QCOMPARE(loc.column(), 1U);
|
QCOMPARE(loc.column(), 1U);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_Codegen::definition_empty_class()
|
void CppToolsPlugin::test_codegen_definition_empty_class()
|
||||||
{
|
{
|
||||||
const QByteArray srcText = "\n"
|
const QByteArray srcText = "\n"
|
||||||
"class Foo\n" // line 1
|
"class Foo\n" // line 1
|
||||||
@@ -418,7 +376,7 @@ void tst_Codegen::definition_empty_class()
|
|||||||
"int x;\n" // line 1
|
"int x;\n" // line 1
|
||||||
"\n";
|
"\n";
|
||||||
|
|
||||||
Document::Ptr src = Document::create(tempPath + QLatin1String("/file.h"));
|
Document::Ptr src = Document::create(QDir::tempPath() + QLatin1String("/file.h"));
|
||||||
Utils::FileSaver srcSaver(src->fileName());
|
Utils::FileSaver srcSaver(src->fileName());
|
||||||
srcSaver.write(srcText);
|
srcSaver.write(srcText);
|
||||||
srcSaver.finalize();
|
srcSaver.finalize();
|
||||||
@@ -428,7 +386,7 @@ void tst_Codegen::definition_empty_class()
|
|||||||
QCOMPARE(src->diagnosticMessages().size(), 0);
|
QCOMPARE(src->diagnosticMessages().size(), 0);
|
||||||
QCOMPARE(src->globalSymbolCount(), 1U);
|
QCOMPARE(src->globalSymbolCount(), 1U);
|
||||||
|
|
||||||
Document::Ptr dst = Document::create(tempPath + QLatin1String("/file.cpp"));
|
Document::Ptr dst = Document::create(QDir::tempPath() + QLatin1String("/file.cpp"));
|
||||||
Utils::FileSaver dstSaver(dst->fileName());
|
Utils::FileSaver dstSaver(dst->fileName());
|
||||||
dstSaver.write(dstText);
|
dstSaver.write(dstText);
|
||||||
dstSaver.finalize();
|
dstSaver.finalize();
|
||||||
@@ -464,7 +422,7 @@ void tst_Codegen::definition_empty_class()
|
|||||||
QCOMPARE(loc.column(), 7U);
|
QCOMPARE(loc.column(), 7U);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_Codegen::definition_first_member()
|
void CppToolsPlugin::test_codegen_definition_first_member()
|
||||||
{
|
{
|
||||||
const QByteArray srcText = "\n"
|
const QByteArray srcText = "\n"
|
||||||
"class Foo\n" // line 1
|
"class Foo\n" // line 1
|
||||||
@@ -484,9 +442,9 @@ void tst_Codegen::definition_first_member()
|
|||||||
"\n"
|
"\n"
|
||||||
"}\n"
|
"}\n"
|
||||||
"\n"
|
"\n"
|
||||||
"int y;\n").arg(tempPath).toLatin1();
|
"int y;\n").arg(QDir::tempPath()).toLatin1();
|
||||||
|
|
||||||
Document::Ptr src = Document::create(tempPath + QLatin1String("/file.h"));
|
Document::Ptr src = Document::create(QDir::tempPath() + QLatin1String("/file.h"));
|
||||||
Utils::FileSaver srcSaver(src->fileName());
|
Utils::FileSaver srcSaver(src->fileName());
|
||||||
srcSaver.write(srcText);
|
srcSaver.write(srcText);
|
||||||
srcSaver.finalize();
|
srcSaver.finalize();
|
||||||
@@ -496,7 +454,7 @@ void tst_Codegen::definition_first_member()
|
|||||||
QCOMPARE(src->diagnosticMessages().size(), 0);
|
QCOMPARE(src->diagnosticMessages().size(), 0);
|
||||||
QCOMPARE(src->globalSymbolCount(), 1U);
|
QCOMPARE(src->globalSymbolCount(), 1U);
|
||||||
|
|
||||||
Document::Ptr dst = Document::create(tempPath + QLatin1String("/file.cpp"));
|
Document::Ptr dst = Document::create(QDir::tempPath() + QLatin1String("/file.cpp"));
|
||||||
dst->addIncludeFile(src->fileName(), 1);
|
dst->addIncludeFile(src->fileName(), 1);
|
||||||
Utils::FileSaver dstSaver(dst->fileName());
|
Utils::FileSaver dstSaver(dst->fileName());
|
||||||
dstSaver.write(dstText);
|
dstSaver.write(dstText);
|
||||||
@@ -533,7 +491,7 @@ void tst_Codegen::definition_first_member()
|
|||||||
QCOMPARE(loc.prefix(), QString());
|
QCOMPARE(loc.prefix(), QString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_Codegen::definition_last_member()
|
void CppToolsPlugin::test_codegen_definition_last_member()
|
||||||
{
|
{
|
||||||
const QByteArray srcText = "\n"
|
const QByteArray srcText = "\n"
|
||||||
"class Foo\n" // line 1
|
"class Foo\n" // line 1
|
||||||
@@ -553,9 +511,9 @@ void tst_Codegen::definition_last_member()
|
|||||||
"\n"
|
"\n"
|
||||||
"}\n" // line 7
|
"}\n" // line 7
|
||||||
"\n"
|
"\n"
|
||||||
"int y;\n").arg(tempPath).toLatin1();
|
"int y;\n").arg(QDir::tempPath()).toLatin1();
|
||||||
|
|
||||||
Document::Ptr src = Document::create(tempPath + QLatin1String("/file.h"));
|
Document::Ptr src = Document::create(QDir::tempPath() + QLatin1String("/file.h"));
|
||||||
Utils::FileSaver srcSaver(src->fileName());
|
Utils::FileSaver srcSaver(src->fileName());
|
||||||
srcSaver.write(srcText);
|
srcSaver.write(srcText);
|
||||||
srcSaver.finalize();
|
srcSaver.finalize();
|
||||||
@@ -565,7 +523,7 @@ void tst_Codegen::definition_last_member()
|
|||||||
QCOMPARE(src->diagnosticMessages().size(), 0);
|
QCOMPARE(src->diagnosticMessages().size(), 0);
|
||||||
QCOMPARE(src->globalSymbolCount(), 1U);
|
QCOMPARE(src->globalSymbolCount(), 1U);
|
||||||
|
|
||||||
Document::Ptr dst = Document::create(tempPath + QLatin1String("/file.cpp"));
|
Document::Ptr dst = Document::create(QDir::tempPath() + QLatin1String("/file.cpp"));
|
||||||
dst->addIncludeFile(src->fileName(), 1);
|
dst->addIncludeFile(src->fileName(), 1);
|
||||||
Utils::FileSaver dstSaver(dst->fileName());
|
Utils::FileSaver dstSaver(dst->fileName());
|
||||||
dstSaver.write(dstText);
|
dstSaver.write(dstText);
|
||||||
@@ -602,7 +560,7 @@ void tst_Codegen::definition_last_member()
|
|||||||
QCOMPARE(loc.suffix(), QString());
|
QCOMPARE(loc.suffix(), QString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_Codegen::definition_middle_member()
|
void CppToolsPlugin::test_codegen_definition_middle_member()
|
||||||
{
|
{
|
||||||
const QByteArray srcText = "\n"
|
const QByteArray srcText = "\n"
|
||||||
"class Foo\n" // line 1
|
"class Foo\n" // line 1
|
||||||
@@ -628,9 +586,9 @@ void tst_Codegen::definition_middle_member()
|
|||||||
"\n"
|
"\n"
|
||||||
"}\n"
|
"}\n"
|
||||||
"\n"
|
"\n"
|
||||||
"int y;\n").arg(tempPath).toLatin1();
|
"int y;\n").arg(QDir::tempPath()).toLatin1();
|
||||||
|
|
||||||
Document::Ptr src = Document::create(tempPath + QLatin1String("/file.h"));
|
Document::Ptr src = Document::create(QDir::tempPath() + QLatin1String("/file.h"));
|
||||||
Utils::FileSaver srcSaver(src->fileName());
|
Utils::FileSaver srcSaver(src->fileName());
|
||||||
srcSaver.write(srcText);
|
srcSaver.write(srcText);
|
||||||
srcSaver.finalize();
|
srcSaver.finalize();
|
||||||
@@ -640,7 +598,7 @@ void tst_Codegen::definition_middle_member()
|
|||||||
QCOMPARE(src->diagnosticMessages().size(), 0);
|
QCOMPARE(src->diagnosticMessages().size(), 0);
|
||||||
QCOMPARE(src->globalSymbolCount(), 1U);
|
QCOMPARE(src->globalSymbolCount(), 1U);
|
||||||
|
|
||||||
Document::Ptr dst = Document::create(tempPath + QLatin1String("/file.cpp"));
|
Document::Ptr dst = Document::create(QDir::tempPath() + QLatin1String("/file.cpp"));
|
||||||
dst->addIncludeFile(src->fileName(), 1);
|
dst->addIncludeFile(src->fileName(), 1);
|
||||||
Utils::FileSaver dstSaver(dst->fileName());
|
Utils::FileSaver dstSaver(dst->fileName());
|
||||||
dstSaver.write(dstText);
|
dstSaver.write(dstText);
|
||||||
@@ -676,6 +634,3 @@ void tst_Codegen::definition_middle_member()
|
|||||||
QCOMPARE(loc.prefix(), QLatin1String("\n\n"));
|
QCOMPARE(loc.prefix(), QLatin1String("\n\n"));
|
||||||
QCOMPARE(loc.suffix(), QString());
|
QCOMPARE(loc.suffix(), QString());
|
||||||
}
|
}
|
||||||
|
|
||||||
QTEST_MAIN(tst_Codegen)
|
|
||||||
#include "tst_codegen.moc"
|
|
@@ -67,3 +67,8 @@ SOURCES += completionsettingspage.cpp \
|
|||||||
FORMS += completionsettingspage.ui \
|
FORMS += completionsettingspage.ui \
|
||||||
cppfilesettingspage.ui \
|
cppfilesettingspage.ui \
|
||||||
cppcodestylesettingspage.ui
|
cppcodestylesettingspage.ui
|
||||||
|
|
||||||
|
equals(TEST, 1) {
|
||||||
|
SOURCES += \
|
||||||
|
cppcodegen_test.cpp
|
||||||
|
}
|
||||||
|
@@ -76,6 +76,21 @@ public:
|
|||||||
private slots:
|
private slots:
|
||||||
void switchHeaderSource();
|
void switchHeaderSource();
|
||||||
|
|
||||||
|
#ifdef WITH_TESTS
|
||||||
|
// codegen tests
|
||||||
|
void test_codegen_public_in_empty_class();
|
||||||
|
void test_codegen_public_in_nonempty_class();
|
||||||
|
void test_codegen_public_before_protected();
|
||||||
|
void test_codegen_private_after_protected();
|
||||||
|
void test_codegen_protected_in_nonempty_class();
|
||||||
|
void test_codegen_protected_between_public_and_private();
|
||||||
|
void test_codegen_qtdesigner_integration();
|
||||||
|
void test_codegen_definition_empty_class();
|
||||||
|
void test_codegen_definition_first_member();
|
||||||
|
void test_codegen_definition_last_member();
|
||||||
|
void test_codegen_definition_middle_member();
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString correspondingHeaderOrSourceI(const QString &fileName) const;
|
QString correspondingHeaderOrSourceI(const QString &fileName) const;
|
||||||
|
|
||||||
|
@@ -1,5 +0,0 @@
|
|||||||
include(../../qttest.pri)
|
|
||||||
include(../shared/shared.pri)
|
|
||||||
INCLUDEPATH += $$IDE_SOURCE_TREE/src/plugins
|
|
||||||
SOURCES += tst_codegen.cpp
|
|
||||||
|
|
@@ -4,7 +4,6 @@ CONFIG += ordered
|
|||||||
SUBDIRS = \
|
SUBDIRS = \
|
||||||
ast \
|
ast \
|
||||||
codeformatter \
|
codeformatter \
|
||||||
codegen \
|
|
||||||
findusages \
|
findusages \
|
||||||
lookup \
|
lookup \
|
||||||
preprocessor \
|
preprocessor \
|
||||||
|
Reference in New Issue
Block a user