diff options
author | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2014-05-16 15:51:04 -0400 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2014-06-04 16:28:35 +0200 |
commit | ec97d967e63e4c66e0147625b09a658a3f99896c (patch) | |
tree | 77c44744474915153d08b550dcf2b4bedd3f3516 /src/plugins/cpptools/cpppreprocessor_test.cpp | |
parent | 43895b038f1712d4c98b8f81d7248b44f42f27cd (diff) | |
download | qt-creator-ec97d967e63e4c66e0147625b09a658a3f99896c.tar.gz |
CppTools: Rename CppPreprocessor to CppSourceProcessor
...since it does quite a bit more than only preprocessing, as the name
suggests. We use that class to process source files in general. The
output is not a preprocessed source, but a set of CPlusPlus::Documents
with symbols.
Change-Id: I787d0f22f9f042ddf0c99e8c2f0bdb9aa7001735
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'src/plugins/cpptools/cpppreprocessor_test.cpp')
-rw-r--r-- | src/plugins/cpptools/cpppreprocessor_test.cpp | 204 |
1 files changed, 0 insertions, 204 deletions
diff --git a/src/plugins/cpptools/cpppreprocessor_test.cpp b/src/plugins/cpptools/cpppreprocessor_test.cpp deleted file mode 100644 index 398c694687..0000000000 --- a/src/plugins/cpptools/cpppreprocessor_test.cpp +++ /dev/null @@ -1,204 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -****************************************************************************/ - -#include "cpptoolsplugin.h" - -#include "cppmodelmanager.h" -#include "cpppreprocessertesthelper.h" -#include "cpppreprocessor.h" -#include "cppsnapshotupdater.h" -#include "cpptoolseditorsupport.h" -#include "cpptoolstestcase.h" - -#include <texteditor/basetexteditor.h> - -#include <cplusplus/CppDocument.h> -#include <utils/fileutils.h> - -#include <QFile> -#include <QFileInfo> -#include <QtTest> - -using namespace CPlusPlus; -using namespace CppTools; -using namespace CppTools::Tests; -using namespace CppTools::Internal; - -typedef Document::Include Include; - -class SourcePreprocessor -{ -public: - SourcePreprocessor() - : m_cmm(CppModelManager::instance()) - { - cleanUp(); - } - - Document::Ptr run(const QByteArray &source) - { - const QString fileName = TestIncludePaths::testFilePath(); - if (QFileInfo(fileName).exists()) - return Document::Ptr(); // Test file was not removed. - - TestCase::writeFile(fileName, source); - - CppPreprocessor pp((QPointer<CppModelManager>(m_cmm))); - pp.setIncludePaths(QStringList(TestIncludePaths::directoryOfTestFile())); - pp.run(fileName); - - Document::Ptr document = m_cmm->document(fileName); - QFile(fileName).remove(); - return document; - } - - ~SourcePreprocessor() - { - cleanUp(); - } - -private: - void cleanUp() - { - m_cmm->GC(); - QVERIFY(m_cmm->snapshot().isEmpty()); - } - -private: - CppModelManager *m_cmm; -}; - -/// Check: Resolved and unresolved includes are properly tracked. -void CppToolsPlugin::test_cpppreprocessor_includes_resolvedUnresolved() -{ - QByteArray source = - "#include \"header.h\"\n" - "#include \"notresolvable.h\"\n" - "\n" - ; - - SourcePreprocessor processor; - Document::Ptr document = processor.run(source); - QVERIFY(document); - - const QList<Document::Include> resolvedIncludes = document->resolvedIncludes(); - QCOMPARE(resolvedIncludes.size(), 1); - QCOMPARE(resolvedIncludes.at(0).type(), Client::IncludeLocal); - QCOMPARE(resolvedIncludes.at(0).unresolvedFileName(), QLatin1String("header.h")); - const QString expectedResolvedFileName - = TestIncludePaths::testFilePath(QLatin1String("header.h")); - QCOMPARE(resolvedIncludes.at(0).resolvedFileName(), expectedResolvedFileName); - - const QList<Document::Include> unresolvedIncludes = document->unresolvedIncludes(); - QCOMPARE(unresolvedIncludes.size(), 1); - QCOMPARE(unresolvedIncludes.at(0).type(), Client::IncludeLocal); - QCOMPARE(unresolvedIncludes.at(0).unresolvedFileName(), QLatin1String("notresolvable.h")); - QVERIFY(unresolvedIncludes.at(0).resolvedFileName().isEmpty()); -} - -/// Check: Avoid self-include entries due to cyclic includes. -void CppToolsPlugin::test_cpppreprocessor_includes_cyclic() -{ - const QString fileName1 = TestIncludePaths::testFilePath(QLatin1String("cyclic1.h")); - const QString fileName2 = TestIncludePaths::testFilePath(QLatin1String("cyclic2.h")); - const QStringList sourceFiles = QStringList() << fileName1 << fileName2; - - // Create global snapshot (needed in SnapshotUpdater) - TestCase testCase; - testCase.parseFiles(sourceFiles); - - // Open editor - TextEditor::BaseTextEditor *editor; - QVERIFY(testCase.openBaseTextEditor(fileName1, &editor)); - testCase.closeEditorAtEndOfTestCase(editor); - - // Get editor snapshot - CppEditorSupport *cppEditorSupport = CppModelManagerInterface::instance() - ->cppEditorSupport(editor); - QVERIFY(cppEditorSupport); - QSharedPointer<SnapshotUpdater> snapshotUpdater = cppEditorSupport->snapshotUpdater(); - QVERIFY(snapshotUpdater); - Snapshot snapshot = snapshotUpdater->snapshot(); - QCOMPARE(snapshot.size(), 3); // Configuration file included - - // Check includes - Document::Ptr doc1 = snapshot.document(fileName1); - QVERIFY(doc1); - Document::Ptr doc2 = snapshot.document(fileName2); - QVERIFY(doc2); - - QCOMPARE(doc1->unresolvedIncludes().size(), 0); - QCOMPARE(doc1->resolvedIncludes().size(), 1); - QCOMPARE(doc1->resolvedIncludes().first().resolvedFileName(), fileName2); - - QCOMPARE(doc2->unresolvedIncludes().size(), 0); - QCOMPARE(doc2->resolvedIncludes().size(), 1); - QCOMPARE(doc2->resolvedIncludes().first().resolvedFileName(), fileName1); -} - -/// Check: All include errors are reported as diagnostic messages. -void CppToolsPlugin::test_cpppreprocessor_includes_allDiagnostics() -{ - QByteArray source = - "#include <NotResolvable1>\n" - "#include <NotResolvable2>\n" - "#include \"/some/nonexisting/file123.h\"\n" - "\n" - ; - - SourcePreprocessor processor; - Document::Ptr document = processor.run(source); - QVERIFY(document); - - QCOMPARE(document->resolvedIncludes().size(), 0); - QCOMPARE(document->unresolvedIncludes().size(), 3); - QCOMPARE(document->diagnosticMessages().size(), 3); -} - -void CppToolsPlugin::test_cpppreprocessor_macroUses() -{ - QByteArray source = - "#define SOMEDEFINE 1\n" - "#if SOMEDEFINE == 1\n" - " int someNumber;\n" - "#endif\n" - ; - - SourcePreprocessor processor; - Document::Ptr document = processor.run(source); - QVERIFY(document); - const QList<Document::MacroUse> macroUses = document->macroUses(); - QCOMPARE(macroUses.size(), 1); - const Document::MacroUse macroUse = macroUses.at(0); - QCOMPARE(macroUse.bytesBegin(), 25U); - QCOMPARE(macroUse.bytesEnd(), 35U); - QCOMPARE(macroUse.utf16charsBegin(), 25U); - QCOMPARE(macroUse.utf16charsEnd(), 35U); - QCOMPARE(macroUse.beginLine(), 2U); -} |