summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@digia.com>2013-12-30 19:44:42 +0100
committerNikolai Kosjar <nikolai.kosjar@digia.com>2014-01-07 14:19:33 +0100
commit0bd59178679ea1f573b484e5f2baf178352c44ef (patch)
tree5d4a19d2556c9d41bc2a1d4f42510c92a5107d66 /src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp
parentc7f3ac407394d3c4d7fe817a6a913cd3256c37e5 (diff)
downloadqt-creator-0bd59178679ea1f573b484e5f2baf178352c44ef.tar.gz
CppEditor/CppTools: Don't continue in test function on failure
QVERIFY/QCOMPARE are meant to be called in the test function so that on failure they just can "return" and thus skip subsequent code. Since we use reusable test code in the test functions (the *TestCase classes), we need to ensure that on failure no further test code is executed. This mostly inlines the run function of the test classes into the constructor. Change-Id: I320ee032bdde0174ddfe3fdf3f9e18e19abf1d7f Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp')
-rw-r--r--src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp121
1 files changed, 53 insertions, 68 deletions
diff --git a/src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp b/src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp
index 45e87f2523..ffbffd7122 100644
--- a/src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp
+++ b/src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp
@@ -70,8 +70,13 @@ QString stripCursor(const QString &source)
class PointerDeclarationFormatterTestCase : public CppTools::Tests::TestCase
{
public:
- PointerDeclarationFormatterTestCase(const QByteArray &source, Document::ParseMode parseMode)
+ PointerDeclarationFormatterTestCase(const QByteArray &source,
+ const QString &expectedSource,
+ Document::ParseMode parseMode,
+ PointerDeclarationFormatter::CursorHandling cursorHandling)
{
+ QVERIFY(succeededSoFar());
+
// Find cursor position and remove cursor marker '@'
int cursorPosition = 0;
QString sourceWithoutCursorMarker = QLatin1String(source);
@@ -83,58 +88,53 @@ public:
// Write source to temprorary file
const QString filePath = QDir::tempPath() + QLatin1String("/file.h");
- m_document = Document::create(filePath);
- QVERIFY(writeFile(m_document->fileName(), sourceWithoutCursorMarker.toLatin1()));
+ Document::Ptr document = Document::create(filePath);
+ QVERIFY(writeFile(document->fileName(), sourceWithoutCursorMarker.toLatin1()));
// Preprocess source
- Preprocessor preprocess(0, &m_env);
+ Environment env;
+ Preprocessor preprocess(0, &env);
const QByteArray preprocessedSource = preprocess.run(filePath, sourceWithoutCursorMarker);
- m_document->setUtf8Source(preprocessedSource);
- m_document->parse(parseMode);
- m_document->check();
- m_translationUnit = m_document->translationUnit();
- m_snapshot.insert(m_document);
- m_editor = new TextEditor::PlainTextEditorWidget(0);
+ document->setUtf8Source(preprocessedSource);
+ document->parse(parseMode);
+ document->check();
+ AST *ast = document->translationUnit()->ast();
+ QVERIFY(ast);
+
+ // Open file
+ QScopedPointer<TextEditor::BaseTextEditorWidget> editorWidget(
+ new TextEditor::PlainTextEditorWidget(0));
QString error;
- m_editor->open(&error, m_document->fileName(), m_document->fileName());
+ editorWidget->open(&error, document->fileName(), document->fileName());
+ QVERIFY(error.isEmpty());
// Set cursor position
- QTextCursor cursor = m_editor->textCursor();
+ QTextCursor cursor = editorWidget->textCursor();
cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::MoveAnchor, cursorPosition);
- m_editor->setTextCursor(cursor);
+ editorWidget->setTextCursor(cursor);
- m_textDocument = m_editor->document();
- m_cppRefactoringFile = CppRefactoringChanges::file(m_editor, m_document);
- }
+ QTextDocument *textDocument = editorWidget->document();
+ CppRefactoringFilePtr cppRefactoringFile
+ = CppRefactoringChanges::file(editorWidget.data(), document);
- void applyFormatting(AST *ast, PointerDeclarationFormatter::CursorHandling cursorHandling)
- {
+ // Prepare for formatting
Overview overview;
overview.showReturnTypes = true;
overview.showArgumentNames = true;
overview.starBindFlags = Overview::StarBindFlags(0);
// Run the formatter
- PointerDeclarationFormatter formatter(m_cppRefactoringFile, overview, cursorHandling);
+ PointerDeclarationFormatter formatter(cppRefactoringFile, overview, cursorHandling);
ChangeSet change = formatter.format(ast); // ChangeSet may be empty.
// Apply change
- QTextCursor cursor(m_textDocument);
- change.apply(&cursor);
- }
+ QTextCursor changeCursor(textDocument);
+ change.apply(&changeCursor);
-public:
- QTextDocument *m_textDocument;
- TranslationUnit *m_translationUnit;
-
-private:
- QByteArray m_source;
- Snapshot m_snapshot;
- CppRefactoringFilePtr m_cppRefactoringFile;
- TextEditor::BaseTextEditorWidget *m_editor;
- Document::Ptr m_document;
- Environment m_env;
+ // Compare
+ QCOMPARE(textDocument->toPlainText(), expectedSource);
+ }
};
} // anonymous namespace
@@ -144,13 +144,10 @@ void CppToolsPlugin::test_format_pointerdeclaration_in_simpledeclarations()
QFETCH(QString, source);
QFETCH(QString, reformattedSource);
- PointerDeclarationFormatterTestCase test(source.toLatin1(), Document::ParseDeclaration);
- AST *ast = test.m_translationUnit->ast();
- QVERIFY(ast);
-
- test.applyFormatting(ast, PointerDeclarationFormatter::RespectCursor);
-
- QCOMPARE(test.m_textDocument->toPlainText(), reformattedSource);
+ PointerDeclarationFormatterTestCase(source.toLatin1(),
+ reformattedSource,
+ Document::ParseDeclaration,
+ PointerDeclarationFormatter::RespectCursor);
}
void CppToolsPlugin::test_format_pointerdeclaration_in_simpledeclarations_data()
@@ -371,13 +368,10 @@ void CppToolsPlugin::test_format_pointerdeclaration_in_controlflowstatements()
QFETCH(QString, source);
QFETCH(QString, reformattedSource);
- PointerDeclarationFormatterTestCase test(source.toLatin1(), Document::ParseStatement);
- AST *ast = test.m_translationUnit->ast();
- QVERIFY(ast);
-
- test.applyFormatting(ast, PointerDeclarationFormatter::RespectCursor);
-
- QCOMPARE(test.m_textDocument->toPlainText(), reformattedSource);
+ PointerDeclarationFormatterTestCase(source.toLatin1(),
+ reformattedSource,
+ Document::ParseStatement,
+ PointerDeclarationFormatter::RespectCursor);
}
void CppToolsPlugin::test_format_pointerdeclaration_in_controlflowstatements_data()
@@ -449,13 +443,10 @@ void CppToolsPlugin::test_format_pointerdeclaration_multiple_declarators()
QFETCH(QString, source);
QFETCH(QString, reformattedSource);
- PointerDeclarationFormatterTestCase test(source.toLatin1(), Document::ParseDeclaration);
- AST *ast = test.m_translationUnit->ast();
- QVERIFY(ast);
-
- test.applyFormatting(ast, PointerDeclarationFormatter::RespectCursor);
-
- QCOMPARE(test.m_textDocument->toPlainText(), reformattedSource);
+ PointerDeclarationFormatterTestCase(source.toLatin1(),
+ reformattedSource,
+ Document::ParseDeclaration,
+ PointerDeclarationFormatter::RespectCursor);
}
void CppToolsPlugin::test_format_pointerdeclaration_multiple_declarators_data()
@@ -507,13 +498,10 @@ void CppToolsPlugin::test_format_pointerdeclaration_multiple_matches()
QFETCH(QString, source);
QFETCH(QString, reformattedSource);
- PointerDeclarationFormatterTestCase test(source.toLatin1(), Document::ParseTranlationUnit);
- AST *ast = test.m_translationUnit->ast();
- QVERIFY(ast);
-
- test.applyFormatting(ast, PointerDeclarationFormatter::IgnoreCursor);
-
- QCOMPARE(test.m_textDocument->toPlainText(), reformattedSource);
+ PointerDeclarationFormatterTestCase(source.toLatin1(),
+ reformattedSource,
+ Document::ParseTranlationUnit,
+ PointerDeclarationFormatter::IgnoreCursor);
}
void CppToolsPlugin::test_format_pointerdeclaration_multiple_matches_data()
@@ -593,13 +581,10 @@ void CppToolsPlugin::test_format_pointerdeclaration_macros()
QFETCH(QString, source);
QFETCH(QString, reformattedSource);
- PointerDeclarationFormatterTestCase test(source.toLatin1(), Document::ParseTranlationUnit);
- AST *ast = test.m_translationUnit->ast();
- QVERIFY(ast);
-
- test.applyFormatting(ast, PointerDeclarationFormatter::RespectCursor);
-
- QCOMPARE(test.m_textDocument->toPlainText(), reformattedSource);
+ PointerDeclarationFormatterTestCase(source.toLatin1(),
+ reformattedSource,
+ Document::ParseTranlationUnit,
+ PointerDeclarationFormatter::RespectCursor);
}
void CppToolsPlugin::test_format_pointerdeclaration_macros_data()