From 59d2f96cf84e971155c255332afc663963fc6c51 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 25 Aug 2021 17:34:11 +0200 Subject: [PATCH] CppEditor: Use test objects to group related test functions Change-Id: I65089f2a00d8d168f123becf160f82bfcca4c68c Reviewed-by: Christian Stenger --- src/plugins/cppeditor/CMakeLists.txt | 9 +- src/plugins/cppeditor/cppautocompleter.cpp | 59 ++-- src/plugins/cppeditor/cppautocompleter.h | 21 ++ src/plugins/cppeditor/cppeditor.pro | 7 +- src/plugins/cppeditor/cppeditor.qbs | 4 + src/plugins/cppeditor/cppeditorplugin.cpp | 23 +- src/plugins/cppeditor/cppeditorplugin.h | 235 --------------- src/plugins/cppeditor/cppeditortestcase.cpp | 14 +- src/plugins/cppeditor/cppeditortestcase.h | 6 - .../cppeditor/cppincludehierarchy_test.cpp | 13 +- .../cppeditor/cppincludehierarchy_test.h | 41 +++ .../cppeditor/cppinsertvirtualmethods.cpp | 25 +- .../cppeditor/cppinsertvirtualmethods.h | 15 + src/plugins/cppeditor/cppquickfix_test.cpp | 271 +++++++++--------- src/plugins/cppeditor/cppquickfix_test.h | 165 +++++++++-- .../cppeditor/cppuseselections_test.cpp | 14 +- src/plugins/cppeditor/cppuseselections_test.h | 44 +++ .../cppeditor/fileandtokenactions_test.cpp | 30 +- .../cppeditor/fileandtokenactions_test.h | 60 ++++ .../followsymbol_switchmethoddecldef_test.cpp | 85 +++--- .../followsymbol_switchmethoddecldef_test.h | 74 +++++ 21 files changed, 701 insertions(+), 514 deletions(-) create mode 100644 src/plugins/cppeditor/cppincludehierarchy_test.h create mode 100644 src/plugins/cppeditor/cppuseselections_test.h create mode 100644 src/plugins/cppeditor/fileandtokenactions_test.h create mode 100644 src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.h diff --git a/src/plugins/cppeditor/CMakeLists.txt b/src/plugins/cppeditor/CMakeLists.txt index 4b4bdd4c156..551c705c2d0 100644 --- a/src/plugins/cppeditor/CMakeLists.txt +++ b/src/plugins/cppeditor/CMakeLists.txt @@ -46,11 +46,12 @@ extend_qtc_plugin(CppEditor SOURCES cppdoxygen_test.cpp cppdoxygen_test.h cppeditortestcase.cpp cppeditortestcase.h - cppincludehierarchy_test.cpp + cppincludehierarchy_test.cpp cppincludehierarchy_test.h cppquickfix_test.cpp cppquickfix_test.h - cppuseselections_test.cpp - fileandtokenactions_test.cpp - followsymbol_switchmethoddecldef_test.cpp + cppuseselections_test.cpp cppuseselections_test.h + fileandtokenactions_test.cpp fileandtokenactions_test.h + followsymbol_switchmethoddecldef_test.cpp followsymbol_switchmethoddecldef_test.h EXPLICIT_MOC cppdoxygen_test.h + cppquickfix_test.h ) diff --git a/src/plugins/cppeditor/cppautocompleter.cpp b/src/plugins/cppeditor/cppautocompleter.cpp index 6bc60d2093a..b1553a8abf2 100644 --- a/src/plugins/cppeditor/cppautocompleter.cpp +++ b/src/plugins/cppeditor/cppautocompleter.cpp @@ -32,8 +32,23 @@ #include #include -using namespace CppEditor; -using namespace Internal; +#ifdef WITH_TESTS +#include "cppeditor.h" +#include "cppeditorconstants.h" +#include "cppeditorplugin.h" +#include "cppeditorwidget.h" + +#include +#include +#include +#include +#include + +#include + +#endif // WITH_TESTS + +namespace CppEditor::Internal { bool CppAutoCompleter::contextAllowsAutoBrackets(const QTextCursor &cursor, const QString &textToInsert) const @@ -84,22 +99,7 @@ QString CppAutoCompleter::insertParagraphSeparator(const QTextCursor &cursor) co } #ifdef WITH_TESTS - -#include "cppeditor.h" -#include "cppeditorwidget.h" -#include "cppeditorconstants.h" -#include "cppeditorplugin.h" - -#include - -#include -#include -#include -#include - -#include - -#include +namespace Tests { enum FileContent { EmptyFile, @@ -204,7 +204,6 @@ static QChar closingChar(QChar c) return QChar(); } -namespace CppEditor { // MSVC Workaround: error C2872: 'CppEditor': ambiguous symbol static QTextCursor openEditor(const QString &text) { QTextCursor tc; @@ -232,9 +231,8 @@ static QTextCursor openEditor(const QString &text) } return tc; } -} // namespace CppEditor -void CppEditorPlugin::test_autoComplete_data() +void AutoCompleterTest::testAutoComplete_data() { QTest::addColumn("text"); QTest::addColumn("textToInsert"); @@ -282,7 +280,7 @@ void CppEditorPlugin::test_autoComplete_data() } } -void CppEditorPlugin::test_autoComplete() +void AutoCompleterTest::testAutoComplete() { QFETCH(QString, text); QFETCH(QString, textToInsert); @@ -307,7 +305,7 @@ void CppEditorPlugin::test_autoComplete() QCOMPARE(skippedChars, expectedSkippedChars); } -void CppEditorPlugin::test_surroundWithSelection_data() +void AutoCompleterTest::testSurroundWithSelection_data() { QTest::addColumn("text"); QTest::addColumn("textToInsert"); @@ -344,7 +342,7 @@ void CppEditorPlugin::test_surroundWithSelection_data() + closingChar(c)); } -void CppEditorPlugin::test_surroundWithSelection() +void AutoCompleterTest::testSurroundWithSelection() { QFETCH(QString, text); QFETCH(QString, textToInsert); @@ -365,7 +363,7 @@ void CppEditorPlugin::test_surroundWithSelection() QCOMPARE(matchingText, expectedText); } -void CppEditorPlugin::test_autoBackspace_data() +void AutoCompleterTest::testAutoBackspace_data() { QTest::addColumn("text"); QTest::addColumn("expectedStopHandling"); @@ -380,7 +378,7 @@ void CppEditorPlugin::test_autoBackspace_data() } } -void CppEditorPlugin::test_autoBackspace() +void AutoCompleterTest::testAutoBackspace() { QFETCH(QString, text); QFETCH(bool, expectedStopHandling); @@ -399,7 +397,7 @@ void CppEditorPlugin::test_autoBackspace() QCOMPARE(stopHandling, expectedStopHandling); } -void CppEditorPlugin::test_insertParagraph_data() +void AutoCompleterTest::testInsertParagraph_data() { QTest::addColumn("text"); QTest::addColumn("expectedBlockCount"); @@ -422,7 +420,7 @@ void CppEditorPlugin::test_insertParagraph_data() << 1; } -void CppEditorPlugin::test_insertParagraph() +void AutoCompleterTest::testInsertParagraph() { QFETCH(QString, text); QFETCH(int, expectedBlockCount); @@ -444,4 +442,7 @@ void CppEditorPlugin::test_insertParagraph() QCOMPARE(blockCount, expectedBlockCount); } -#endif +} // namespace Tests +#endif // WITH_TESTS + +} // namespace CppEditor::Internal diff --git a/src/plugins/cppeditor/cppautocompleter.h b/src/plugins/cppeditor/cppautocompleter.h index eb90c15b48d..ec12ba8f879 100644 --- a/src/plugins/cppeditor/cppautocompleter.h +++ b/src/plugins/cppeditor/cppautocompleter.h @@ -27,6 +27,8 @@ #include +#include + namespace CppEditor { namespace Internal { @@ -53,5 +55,24 @@ public: QString insertParagraphSeparator(const QTextCursor &cursor) const override; }; +#ifdef WITH_TESTS +namespace Tests { +class AutoCompleterTest : public QObject +{ + Q_OBJECT + +private slots: + void testAutoComplete_data(); + void testAutoComplete(); + void testSurroundWithSelection_data(); + void testSurroundWithSelection(); + void testAutoBackspace_data(); + void testAutoBackspace(); + void testInsertParagraph_data(); + void testInsertParagraph(); +}; +} // namespace Tests +#endif // WITH_TESTS + } // Internal } // CppEditor diff --git a/src/plugins/cppeditor/cppeditor.pro b/src/plugins/cppeditor/cppeditor.pro index e0659bc9be7..f4ad82a5709 100644 --- a/src/plugins/cppeditor/cppeditor.pro +++ b/src/plugins/cppeditor/cppeditor.pro @@ -75,7 +75,12 @@ equals(TEST, 1) { HEADERS += \ cppeditortestcase.h \ cppdoxygen_test.h \ - cppquickfix_test.h + cppincludehierarchy_test.h \ + cppquickfix_test.h \ + cppuseselections_test.h \ + fileandtokenactions_test.h \ + followsymbol_switchmethoddecldef_test.h + SOURCES += \ cppdoxygen_test.cpp \ cppeditortestcase.cpp \ diff --git a/src/plugins/cppeditor/cppeditor.qbs b/src/plugins/cppeditor/cppeditor.qbs index e20f8245da3..0a41fa896a7 100644 --- a/src/plugins/cppeditor/cppeditor.qbs +++ b/src/plugins/cppeditor/cppeditor.qbs @@ -95,11 +95,15 @@ QtcPlugin { "cppeditortestcase.cpp", "cppeditortestcase.h", "cppincludehierarchy_test.cpp", + "cppincludehierarchy_test.h", "cppquickfix_test.cpp", "cppquickfix_test.h", "cppuseselections_test.cpp", + "cppuseselections_test.h", "fileandtokenactions_test.cpp", + "fileandtokenactions_test.h", "followsymbol_switchmethoddecldef_test.cpp", + "followsymbol_switchmethoddecldef_test.h", ] cpp.defines: outer.concat(['SRCDIR="' + FileInfo.path(filePath) + '"']) diff --git a/src/plugins/cppeditor/cppeditorplugin.cpp b/src/plugins/cppeditor/cppeditorplugin.cpp index ff919fd10ff..d325766666b 100644 --- a/src/plugins/cppeditor/cppeditorplugin.cpp +++ b/src/plugins/cppeditor/cppeditorplugin.cpp @@ -45,7 +45,13 @@ #include #ifdef WITH_TESTS -# include "cppdoxygen_test.h" +#include "cppdoxygen_test.h" +#include "cppincludehierarchy_test.h" +#include "cppinsertvirtualmethods.h" +#include "cppquickfix_test.h" +#include "cppuseselections_test.h" +#include "fileandtokenactions_test.h" +#include "followsymbol_switchmethoddecldef_test.h" #endif #include @@ -392,12 +398,21 @@ void CppEditorPluginPrivate::inspectCppCodeModel() } } -#ifdef WITH_TESTS QVector CppEditorPlugin::createTestObjects() const { - return {new Tests::DoxygenTest}; -} + return { +#ifdef WITH_TESTS + new FollowSymbolTest, + new Tests::AutoCompleterTest, + new Tests::DoxygenTest, + new Tests::FileAndTokenActionsTest, + new Tests::IncludeHierarchyTest, + new Tests::InsertVirtualMethodsTest, + new Tests::QuickfixTest, + new Tests::SelectionsTest, #endif + }; +} void CppEditorPlugin::openTypeHierarchy() { diff --git a/src/plugins/cppeditor/cppeditorplugin.h b/src/plugins/cppeditor/cppeditorplugin.h index 969cd002f12..7dc2026a5cd 100644 --- a/src/plugins/cppeditor/cppeditorplugin.h +++ b/src/plugins/cppeditor/cppeditorplugin.h @@ -27,10 +27,6 @@ #include -#ifdef WITH_TESTS -namespace ProjectExplorer { class Kit; } -#endif - namespace CppEditor { namespace Internal { @@ -53,10 +49,6 @@ public: CppQuickFixAssistProvider *quickFixProvider() const; -#ifdef WITH_TESTS - ProjectExplorer::Kit *m_testKit = nullptr; -#endif - signals: void outlineSortingChanged(bool sort); void typeHierarchyRequested(); @@ -70,236 +62,9 @@ public: void renameSymbolUnderCursor(); void switchDeclarationDefinition(); -#ifdef WITH_TESTS private: QVector createTestObjects() const override; -private slots: - void initTestCase(); - - // The following tests expect that no projects are loaded on start-up. - void test_SwitchMethodDeclarationDefinition_data(); - void test_SwitchMethodDeclarationDefinition(); - - void test_FollowSymbolUnderCursor_multipleDocuments_data(); - void test_FollowSymbolUnderCursor_multipleDocuments(); - - void test_FollowSymbolUnderCursor_data(); - void test_FollowSymbolUnderCursor(); - - void test_FollowSymbolUnderCursor_QTCREATORBUG7903_data(); - void test_FollowSymbolUnderCursor_QTCREATORBUG7903(); - - void test_FollowSymbolUnderCursor_followCall_data(); - void test_FollowSymbolUnderCursor_followCall(); - - void test_FollowSymbolUnderCursor_QObject_connect_data(); - void test_FollowSymbolUnderCursor_QObject_connect(); - void test_FollowSymbolUnderCursor_QObject_oldStyleConnect(); - - void test_FollowSymbolUnderCursor_classOperator_onOperatorToken_data(); - void test_FollowSymbolUnderCursor_classOperator_onOperatorToken(); - - void test_FollowSymbolUnderCursor_classOperator_data(); - void test_FollowSymbolUnderCursor_classOperator(); - - void test_FollowSymbolUnderCursor_classOperator_inOp_data(); - void test_FollowSymbolUnderCursor_classOperator_inOp(); - - void test_FollowSymbolUnderCursor_virtualFunctionCall_data(); - void test_FollowSymbolUnderCursor_virtualFunctionCall(); - void test_FollowSymbolUnderCursor_virtualFunctionCall_multipleDocuments(); - - void test_quickfix_data(); - void test_quickfix(); - - void test_quickfix_GenerateGetterSetter_namespaceHandlingCreate_data(); - void test_quickfix_GenerateGetterSetter_namespaceHandlingCreate(); - void test_quickfix_GenerateGetterSetter_namespaceHandlingAddUsing_data(); - void test_quickfix_GenerateGetterSetter_namespaceHandlingAddUsing(); - void test_quickfix_GenerateGetterSetter_namespaceHandlingFullyQualify_data(); - void test_quickfix_GenerateGetterSetter_namespaceHandlingFullyQualify(); - void test_quickfix_GenerateGetterSetter_customNames_data(); - void test_quickfix_GenerateGetterSetter_customNames(); - void test_quickfix_GenerateGetterSetter_valueTypes_data(); - void test_quickfix_GenerateGetterSetter_valueTypes(); - void test_quickfix_GenerateGetterSetter_customTemplate(); - void test_quickfix_GenerateGetterSetter_needThis(); - void test_quickfix_GenerateGetterSetter_offeredFixes_data(); - void test_quickfix_GenerateGetterSetter_offeredFixes(); - void test_quickfix_GenerateGetterSetter_generalTests_data(); - void test_quickfix_GenerateGetterSetter_generalTests(); - void test_quickfix_GenerateGetterSetter_onlyGetter(); - void test_quickfix_GenerateGetterSetter_onlySetter(); - void test_quickfix_GenerateGetterSetter_inlineInHeaderFile(); - void test_quickfix_GenerateGetterSetter_onlySetterHeaderFileWithIncludeGuard(); - void test_quickfix_GenerateGettersSetters_data(); - void test_quickfix_GenerateGettersSetters(); - - void test_quickfix_InsertQtPropertyMembers_data(); - void test_quickfix_InsertQtPropertyMembers(); - - void test_quickfix_InsertMemberFromInitialization_data(); - void test_quickfix_InsertMemberFromInitialization(); - - void test_quickfix_ConvertQt4Connect_connectOutOfClass(); - void test_quickfix_ConvertQt4Connect_connectWithinClass_data(); - void test_quickfix_ConvertQt4Connect_connectWithinClass(); - void test_quickfix_ConvertQt4Connect_differentNamespace(); - - void test_quickfix_InsertDefFromDecl_afterClass(); - void test_quickfix_InsertDefFromDecl_headerSource_basic1(); - void test_quickfix_InsertDefFromDecl_headerSource_basic2(); - void test_quickfix_InsertDefFromDecl_headerSource_basic3(); - void test_quickfix_InsertDefFromDecl_headerSource_namespace1(); - void test_quickfix_InsertDefFromDecl_headerSource_namespace2(); - void test_quickfix_InsertDefFromDecl_insideClass(); - void test_quickfix_InsertDefFromDecl_notTriggeringWhenDefinitionExists(); - void test_quickfix_InsertDefFromDecl_findRightImplementationFile(); - void test_quickfix_InsertDefFromDecl_ignoreSurroundingGeneratedDeclarations(); - void test_quickfix_InsertDefFromDecl_respectWsInOperatorNames1(); - void test_quickfix_InsertDefFromDecl_respectWsInOperatorNames2(); - void test_quickfix_InsertDefFromDecl_noexcept_specifier(); - void test_quickfix_InsertDefFromDecl_macroUsesAtEndOfFile1(); - void test_quickfix_InsertDefFromDecl_macroUsesAtEndOfFile2(); - void test_quickfix_InsertDefFromDecl_erroneousStatementAtEndOfFile(); - void test_quickfix_InsertDefFromDecl_rvalueReference(); - void test_quickfix_InsertDefFromDecl_functionTryBlock(); - void test_quickfix_InsertDefFromDecl_usingDecl(); - void test_quickfix_InsertDefFromDecl_findImplementationFile(); - void test_quickfix_InsertDefFromDecl_unicodeIdentifier(); - void test_quickfix_InsertDefFromDecl_templateClass(); - void test_quickfix_InsertDefFromDecl_templateClassWithValueParam(); - void test_quickfix_InsertDefFromDecl_templateFunction(); - void test_quickfix_InsertDefFromDecl_notTriggeredForFriendFunc(); - void test_quickfix_InsertDefFromDecl_minimalFunctionParameterType(); - void test_quickfix_InsertDefsFromDecls_data(); - void test_quickfix_InsertDefsFromDecls(); - - void test_quickfix_InsertDeclFromDef(); - void test_quickfix_InsertDeclFromDef_templateFuncTypename(); - void test_quickfix_InsertDeclFromDef_templateFuncInt(); - void test_quickfix_InsertDeclFromDef_notTriggeredForTemplateFunc(); - - void test_quickfix_AddIncludeForUndefinedIdentifier_data(); - void test_quickfix_AddIncludeForUndefinedIdentifier(); - void test_quickfix_AddIncludeForUndefinedIdentifier_noDoubleQtHeaderInclude(); - - void test_quickfix_AddForwardDeclForUndefinedIdentifier_data(); - void test_quickfix_AddForwardDeclForUndefinedIdentifier(); - - void test_quickfix_MoveFuncDefOutside_MemberFuncToCpp(); - void test_quickfix_MoveFuncDefOutside_MemberFuncToCppInsideNS(); - void test_quickfix_MoveFuncDefOutside_MemberFuncOutside1(); - void test_quickfix_MoveFuncDefOutside_MemberFuncOutside2(); - void test_quickfix_MoveFuncDefOutside_MemberFuncToCppNS(); - void test_quickfix_MoveFuncDefOutside_MemberFuncToCppNSUsing(); - void test_quickfix_MoveFuncDefOutside_MemberFuncOutsideWithNs(); - void test_quickfix_MoveFuncDefOutside_FreeFuncToCpp(); - void test_quickfix_MoveFuncDefOutside_FreeFuncToCppNS(); - void test_quickfix_MoveFuncDefOutside_CtorWithInitialization1(); - void test_quickfix_MoveFuncDefOutside_CtorWithInitialization2(); - void test_quickfix_MoveFuncDefOutside_afterClass(); - void test_quickfix_MoveFuncDefOutside_respectWsInOperatorNames1(); - void test_quickfix_MoveFuncDefOutside_respectWsInOperatorNames2(); - void test_quickfix_MoveFuncDefOutside_macroUses(); - void test_quickfix_MoveFuncDefOutside_template(); - void test_quickfix_MoveFuncDefOutside_template_specializedClass(); - void test_quickfix_MoveFuncDefOutside_unnamedTemplate(); - void test_quickfix_MoveFuncDefOutside_MemberFuncToCpp_Static(); - void test_quickfix_MoveFuncDefOutside_MemberFuncToCpp_WithInlinePartOfName(); - - void test_quickfix_MoveAllFuncDefOutside_MemberFuncToCpp(); - void test_quickfix_MoveAllFuncDefOutside_MemberFuncOutside(); - void test_quickfix_MoveAllFuncDefOutside_DoNotTriggerOnBaseClass(); - void test_quickfix_MoveAllFuncDefOutside_classWithBaseClass(); - void test_quickfix_MoveAllFuncDefOutside_ignoreMacroCode(); - - void test_quickfix_MoveFuncDefToDecl_MemberFunc(); - void test_quickfix_MoveFuncDefToDecl_MemberFuncOutside(); - void test_quickfix_MoveFuncDefToDecl_MemberFuncToCppNS(); - void test_quickfix_MoveFuncDefToDecl_MemberFuncToCppNSUsing(); - void test_quickfix_MoveFuncDefToDecl_MemberFuncOutsideWithNs(); - void test_quickfix_MoveFuncDefToDecl_FreeFuncToCpp(); - void test_quickfix_MoveFuncDefToDecl_FreeFuncToCppNS(); - void test_quickfix_MoveFuncDefToDecl_CtorWithInitialization(); - void test_quickfix_MoveFuncDefToDecl_structWithAssignedVariable(); - void test_quickfix_MoveFuncDefToDecl_macroUses(); - void test_quickfix_MoveFuncDefToDecl_override(); - void test_quickfix_MoveFuncDefToDecl_template(); - void test_quickfix_MoveFuncDefToDecl_templateFunction(); - - void test_quickfix_AssignToLocalVariable_templates(); - - void test_quickfix_ExtractFunction_data(); - void test_quickfix_ExtractFunction(); - - void test_quickfix_ExtractLiteralAsParameter_typeDeduction_data(); - void test_quickfix_ExtractLiteralAsParameter_typeDeduction(); - void test_quickfix_ExtractLiteralAsParameter_freeFunction_separateFiles(); - void test_quickfix_ExtractLiteralAsParameter_memberFunction_separateFiles(); - void test_quickfix_ExtractLiteralAsParameter_notTriggeringForInvalidCode(); - - void test_quickfix_addCurlyBraces(); - - void test_quickfix_removeUsingNamespace_data(); - void test_quickfix_removeUsingNamespace(); - void test_quickfix_removeUsingNamespace_simple_data(); - void test_quickfix_removeUsingNamespace_simple(); - void test_quickfix_removeUsingNamespace_differentSymbols(); - - void test_quickfix_generateConstructor_data(); - void test_quickfix_generateConstructor(); - - void test_quickfix_InsertVirtualMethods_data(); - void test_quickfix_InsertVirtualMethods(); - void test_quickfix_InsertVirtualMethods_implementationFile(); - void test_quickfix_InsertVirtualMethods_BaseClassInNamespace(); - - void test_useSelections_data(); - void test_useSelections(); - - void test_selectionFiltering_data(); - void test_selectionFiltering(); - - // tests for "Include Hierarchy" - void test_includehierarchy_data(); - void test_includehierarchy(); - - // The following tests operate on a project and require special invocation: - // - // Ensure that the project is properly configured for a given settings path: - // $ ./qtcreator -settingspath /your/settings/path /path/to/project - // - // ...and that it builds, which might prevent blocking dialogs for not - // existing files (e.g. ui_*.h). - // - // Run a test: - // $ export QTC_TEST_WAIT_FOR_LOADED_PROJECT=1 - // $ ./qtcreator -settingspath /your/settings/path -test CppEditor,test_openEachFile /path/to/project - void test_openEachFile(); - void test_switchHeaderSourceOnEachFile(); - void test_moveTokenWiseThroughEveryFile(); - void test_moveTokenWiseThroughEveryFileAndFollowSymbol(); - void test_moveTokenWiseThroughEveryFileAndSwitchDeclarationDefinition(); - void test_moveTokenWiseThroughEveryFileAndFindUsages(); - void test_moveTokenWiseThroughEveryFileAndRenameUsages(); - void test_moveTokenWiseThroughEveryFileAndOpenTypeHierarchy(); - void test_moveTokenWiseThroughEveryFileAndInvokeCompletion(); - void test_moveTokenWiseThroughEveryFileAndTriggerQuickFixes(); - - // CppAutoCompleter tests - void test_autoComplete_data(); - void test_autoComplete(); - void test_surroundWithSelection_data(); - void test_surroundWithSelection(); - void test_autoBackspace_data(); - void test_autoBackspace(); - void test_insertParagraph_data(); - void test_insertParagraph(); -#endif // WITH_TESTS - -private: CppEditorPluginPrivate *d = nullptr; }; diff --git a/src/plugins/cppeditor/cppeditortestcase.cpp b/src/plugins/cppeditor/cppeditortestcase.cpp index 6e42c519a42..847dcfca0f3 100644 --- a/src/plugins/cppeditor/cppeditortestcase.cpp +++ b/src/plugins/cppeditor/cppeditortestcase.cpp @@ -78,22 +78,10 @@ bool TestDocument::hasCursorMarker() const { return m_cursorPosition != -1; } bool TestDocument::hasAnchorMarker() const { return m_anchorPosition != -1; } TestCase::TestCase(bool runGarbageCollector) - : CppTools::Tests::TestCase(runGarbageCollector), - m_prevUseClangd(CppTools::ClangdSettings::instance().useClangd()) + : CppTools::Tests::TestCase(runGarbageCollector) { } -TestCase::~TestCase() -{ - CppTools::ClangdSettings::setUseClangd(m_prevUseClangd); -} - -void TestCase::setUseClangd() -{ - if (CppEditorPlugin::instance()->m_testKit) - CppTools::ClangdSettings::setUseClangd(true); -} - bool TestCase::openCppEditor(const QString &fileName, CppEditor **editor, CppEditorWidget **editorWidget) { if (CppEditor *e = dynamic_cast(Core::EditorManager::openEditor(fileName))) { diff --git a/src/plugins/cppeditor/cppeditortestcase.h b/src/plugins/cppeditor/cppeditortestcase.h index 519b7cbafd3..f1974f3792e 100644 --- a/src/plugins/cppeditor/cppeditortestcase.h +++ b/src/plugins/cppeditor/cppeditortestcase.h @@ -60,9 +60,6 @@ class TestCase : public CppTools::Tests::TestCase { public: TestCase(bool runGarbageCollector = true); - ~TestCase(); - - void setUseClangd(); static bool openCppEditor(const QString &fileName, CppEditor **editor, @@ -70,9 +67,6 @@ public: static CPlusPlus::Document::Ptr waitForRehighlightedSemanticDocument( CppEditorWidget *editorWidget); - -private: - const bool m_prevUseClangd; }; } // namespace Tests diff --git a/src/plugins/cppeditor/cppincludehierarchy_test.cpp b/src/plugins/cppeditor/cppincludehierarchy_test.cpp index 02dd165bc70..a558e635fa1 100644 --- a/src/plugins/cppeditor/cppincludehierarchy_test.cpp +++ b/src/plugins/cppeditor/cppincludehierarchy_test.cpp @@ -23,9 +23,10 @@ ** ****************************************************************************/ +#include "cppincludehierarchy_test.h" + #include "cppeditor.h" #include "cppeditorwidget.h" -#include "cppeditorplugin.h" #include "cppeditortestcase.h" #include "cppincludehierarchy.h" @@ -40,8 +41,7 @@ using namespace CPlusPlus; using namespace CppTools; -namespace CppEditor { -namespace Internal { +namespace CppEditor::Internal::Tests { namespace { @@ -111,7 +111,7 @@ public: } // anonymous namespace -void CppEditorPlugin::test_includehierarchy_data() +void IncludeHierarchyTest::test_data() { QTest::addColumn >("documents"); QTest::addColumn("expectedHierarchy"); @@ -177,7 +177,7 @@ void CppEditorPlugin::test_includehierarchy_data() ); } -void CppEditorPlugin::test_includehierarchy() +void IncludeHierarchyTest::test() { QFETCH(QList, documents); QFETCH(QString, expectedHierarchy); @@ -185,5 +185,4 @@ void CppEditorPlugin::test_includehierarchy() IncludeHierarchyTestCase(documents, expectedHierarchy); } -} // namespace CppEditor -} // namespace Internal +} // namespace CppEditor::Internal::Tests diff --git a/src/plugins/cppeditor/cppincludehierarchy_test.h b/src/plugins/cppeditor/cppincludehierarchy_test.h new file mode 100644 index 00000000000..c5a2ce908a3 --- /dev/null +++ b/src/plugins/cppeditor/cppincludehierarchy_test.h @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include + +namespace CppEditor::Internal::Tests { + +class IncludeHierarchyTest : public QObject +{ + Q_OBJECT + +private slots: + void test_data(); + void test(); +}; + +} // namespace CppEditor::Internal::Tests diff --git a/src/plugins/cppeditor/cppinsertvirtualmethods.cpp b/src/plugins/cppeditor/cppinsertvirtualmethods.cpp index fec36cad38c..d6d35d9c9cb 100644 --- a/src/plugins/cppeditor/cppinsertvirtualmethods.cpp +++ b/src/plugins/cppeditor/cppinsertvirtualmethods.cpp @@ -1299,15 +1299,7 @@ public: void saveSettings() { } }; -} // namespace Tests - -InsertVirtualMethods *InsertVirtualMethods::createTestFactory() -{ - return new InsertVirtualMethods(new Tests::InsertVirtualMethodsDialogTest( - InsertVirtualMethodsDialog::ModeOutsideClass, true, false)); -} - -void CppEditorPlugin::test_quickfix_InsertVirtualMethods_data() +void InsertVirtualMethodsTest::test_data() { QTest::addColumn("implementationMode"); QTest::addColumn("insertVirtualKeyword"); @@ -1882,7 +1874,7 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_data() "};\n"); } -void CppEditorPlugin::test_quickfix_InsertVirtualMethods() +void InsertVirtualMethodsTest::test() { QFETCH(InsertVirtualMethodsDialog::ImplementationMode, implementationMode); QFETCH(bool, insertVirtualKeyword); @@ -1898,7 +1890,7 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods() } /// Check: Insert in implementation file -void CppEditorPlugin::test_quickfix_InsertVirtualMethods_implementationFile() +void InsertVirtualMethodsTest::testImplementationFile() { QList testFiles; QByteArray original; @@ -1946,7 +1938,7 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_implementationFile() } /// Check: Qualified names. -void CppEditorPlugin::test_quickfix_InsertVirtualMethods_BaseClassInNamespace() +void InsertVirtualMethodsTest::testBaseClassInNamespace() { QList testFiles; QByteArray original; @@ -1998,6 +1990,15 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_BaseClassInNamespace() false)); Tests::QuickFixOperationTest(testFiles, &factory); } + +} // namespace Tests + +InsertVirtualMethods *InsertVirtualMethods::createTestFactory() +{ + return new InsertVirtualMethods(new Tests::InsertVirtualMethodsDialogTest( + InsertVirtualMethodsDialog::ModeOutsideClass, true, false)); +} + #endif // WITH_TESTS } // namespace Internal diff --git a/src/plugins/cppeditor/cppinsertvirtualmethods.h b/src/plugins/cppeditor/cppinsertvirtualmethods.h index c185ec90dd6..e2648ab84a3 100644 --- a/src/plugins/cppeditor/cppinsertvirtualmethods.h +++ b/src/plugins/cppeditor/cppinsertvirtualmethods.h @@ -47,5 +47,20 @@ private: InsertVirtualMethodsDialog *m_dialog; }; +#ifdef WITH_TESTS +namespace Tests { +class InsertVirtualMethodsTest : public QObject +{ + Q_OBJECT + +private slots: + void test_data(); + void test(); + void testImplementationFile(); + void testBaseClassInNamespace(); +}; +} // namespace Tests +#endif // WITH_TESTS + } // namespace Internal } // namespace CppEditor diff --git a/src/plugins/cppeditor/cppquickfix_test.cpp b/src/plugins/cppeditor/cppquickfix_test.cpp index 542c4972bb1..bbb26a5ca6a 100644 --- a/src/plugins/cppeditor/cppquickfix_test.cpp +++ b/src/plugins/cppeditor/cppquickfix_test.cpp @@ -48,16 +48,33 @@ */ using namespace Core; using namespace CPlusPlus; -using namespace CppEditor::Internal::Tests; using namespace CppTools; using namespace TextEditor; using CppTools::Tests::TestIncludePaths; +typedef QByteArray _; + +namespace CppEditor::Internal::Tests { +typedef QList QuickFixTestDocuments; +} +Q_DECLARE_METATYPE(CppEditor::Internal::Tests::QuickFixTestDocuments) + namespace CppEditor { namespace Internal { namespace Tests { +/// Tests the offered operations provided by a given CppQuickFixFactory +class QuickFixOfferedOperationsTest : public BaseQuickFixTestCase +{ +public: + QuickFixOfferedOperationsTest(const QList &testDocuments, + CppQuickFixFactory *factory, + const ProjectExplorer::HeaderPaths &headerPaths + = ProjectExplorer::HeaderPaths(), + const QStringList &expectedOperations = QStringList()); +}; + QuickFixTestDocument::Ptr QuickFixTestDocument::create(const QByteArray &fileName, const QByteArray &source, const QByteArray &expectedSource) @@ -341,8 +358,7 @@ typedef QSharedPointer CppQuickFixFactoryPtr; } // namespace CppEditor -namespace CppEditor { -namespace Internal { +namespace CppEditor::Internal::Tests { class QuickFixSettings { @@ -353,7 +369,7 @@ public: ~QuickFixSettings() { *CppQuickFixSettings::instance() = original; } }; -void CppEditorPlugin::test_quickfix_data() +void QuickfixTest::testGeneric_data() { QTest::addColumn("factory"); QTest::addColumn("original"); @@ -1774,7 +1790,7 @@ void CppEditorPlugin::test_quickfix_data() << _(R"(const char *str = "àf23бgб1";)"); } -void CppEditorPlugin::test_quickfix() +void QuickfixTest::testGeneric() { QFETCH(CppQuickFixFactoryPtr, factory); QFETCH(QByteArray, original); @@ -1783,7 +1799,7 @@ void CppEditorPlugin::test_quickfix() QuickFixOperationTest(singleDocument(original, expected), factory.data()); } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_namespaceHandlingCreate_data() +void QuickfixTest::testGenerateGetterSetterNamespaceHandlingCreate_data() { QTest::addColumn("headers"); QTest::addColumn("sources"); @@ -2039,7 +2055,7 @@ void CppEditorPlugin::test_quickfix_GenerateGetterSetter_namespaceHandlingCreate << QByteArrayList{originalSource, expectedSource}; } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_namespaceHandlingCreate() +void QuickfixTest::testGenerateGetterSetterNamespaceHandlingCreate() { QFETCH(QByteArrayList, headers); QFETCH(QByteArrayList, sources); @@ -2058,7 +2074,7 @@ void CppEditorPlugin::test_quickfix_GenerateGetterSetter_namespaceHandlingCreate QuickFixOperationTest(testDocuments, &factory, ProjectExplorer::HeaderPaths(), 2); } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_namespaceHandlingAddUsing_data() +void QuickfixTest::testGenerateGetterSetterNamespaceHandlingAddUsing_data() { QTest::addColumn("headers"); QTest::addColumn("sources"); @@ -2162,7 +2178,7 @@ void CppEditorPlugin::test_quickfix_GenerateGetterSetter_namespaceHandlingAddUsi << QByteArrayList{originalSource, expectedSource}; } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_namespaceHandlingAddUsing() +void QuickfixTest::testGenerateGetterSetterNamespaceHandlingAddUsing() { QFETCH(QByteArrayList, headers); QFETCH(QByteArrayList, sources); @@ -2182,7 +2198,7 @@ void CppEditorPlugin::test_quickfix_GenerateGetterSetter_namespaceHandlingAddUsi QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_namespaceHandlingFullyQualify_data() +void QuickfixTest::testGenerateGetterSetterNamespaceHandlingFullyQualify_data() { QTest::addColumn("headers"); QTest::addColumn("sources"); @@ -2294,7 +2310,7 @@ void CppEditorPlugin::test_quickfix_GenerateGetterSetter_namespaceHandlingFullyQ << QByteArrayList{originalSource, expectedSource}; } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_namespaceHandlingFullyQualify() +void QuickfixTest::testGenerateGetterSetterNamespaceHandlingFullyQualify() { QFETCH(QByteArrayList, headers); QFETCH(QByteArrayList, sources); @@ -2314,7 +2330,7 @@ void CppEditorPlugin::test_quickfix_GenerateGetterSetter_namespaceHandlingFullyQ QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_customNames_data() +void QuickfixTest::testGenerateGetterSetterCustomNames_data() { QTest::addColumn("headers"); QTest::addColumn("operation"); @@ -2482,7 +2498,7 @@ signals: << QByteArrayList{originalSource, expectedSource} << 0; } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_customNames() +void QuickfixTest::testGenerateGetterSetterCustomNames() { QFETCH(QByteArrayList, headers); QFETCH(int, operation); @@ -2508,7 +2524,7 @@ void CppEditorPlugin::test_quickfix_GenerateGetterSetter_customNames() } } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_valueTypes_data() +void QuickfixTest::testGenerateGetterSetterValueTypes_data() { QTest::addColumn("headers"); QTest::addColumn("operation"); @@ -2748,7 +2764,7 @@ public: QTest::addRow("value template class") << QByteArrayList{originalSource, expectedSource} << 1; } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_valueTypes() +void QuickfixTest::testGenerateGetterSetterValueTypes() { QFETCH(QByteArrayList, headers); QFETCH(int, operation); @@ -2767,7 +2783,7 @@ void CppEditorPlugin::test_quickfix_GenerateGetterSetter_valueTypes() } /// Checks: Use template for a custom type -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_customTemplate() +void QuickfixTest::testGenerateGetterSetterCustomTemplate() { QList testDocuments; QByteArray original; @@ -2846,7 +2862,7 @@ void Foo::setBar(const custom &newBar) } /// Checks: if the setter parameter name is the same as the member variable name, this-> is needed -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_needThis() +void QuickfixTest::testGenerateGetterSetterNeedThis() { QList testDocuments; @@ -2877,7 +2893,7 @@ public: QuickFixOperationTest(testDocuments, &factory, ProjectExplorer::HeaderPaths(), 0); } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_offeredFixes_data() +void QuickfixTest::testGenerateGetterSetterOfferedFixes_data() { QTest::addColumn("header"); QTest::addColumn("offered"); @@ -2985,7 +3001,7 @@ class Foo { QTest::addRow("existing Q_PROPERTY") << header << offered; } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_offeredFixes() +void QuickfixTest::testGenerateGetterSetterOfferedFixes() { QFETCH(QByteArray, header); QFETCH(QStringList, offered); @@ -2997,7 +3013,7 @@ void CppEditorPlugin::test_quickfix_GenerateGetterSetter_offeredFixes() QuickFixOfferedOperationsTest(testDocuments, &factory, ProjectExplorer::HeaderPaths(), offered); } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_generalTests_data() +void QuickfixTest::testGenerateGetterSetterGeneralTests_data() { QTest::addColumn("operation"); QTest::addColumn("original"); @@ -3201,7 +3217,7 @@ void CppEditorPlugin::test_quickfix_GenerateGetterSetter_generalTests_data() " mFoo = foo;\n" "}\n"); } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_generalTests() +void QuickfixTest::testGenerateGetterSetterGeneralTests() { QFETCH(int, operation); QFETCH(QByteArray, original); @@ -3219,7 +3235,7 @@ void CppEditorPlugin::test_quickfix_GenerateGetterSetter_generalTests() operation); } /// Checks: Only generate getter -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_onlyGetter() +void QuickfixTest::testGenerateGetterSetterOnlyGetter() { QList testDocuments; QByteArray original; @@ -3259,7 +3275,7 @@ void CppEditorPlugin::test_quickfix_GenerateGetterSetter_onlyGetter() } /// Checks: Only generate setter -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_onlySetter() +void QuickfixTest::testGenerateGetterSetterOnlySetter() { QList testDocuments; QByteArray original; @@ -3299,7 +3315,7 @@ void CppEditorPlugin::test_quickfix_GenerateGetterSetter_onlySetter() QuickFixOperationTest(testDocuments, &factory, ProjectExplorer::HeaderPaths(), 0); } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_inlineInHeaderFile() +void QuickfixTest::testGenerateGetterSetterInlineInHeaderFile() { QList testDocuments; const QByteArray original = R"-( @@ -3351,7 +3367,7 @@ inline void Foo::resetBar() QuickFixOperationTest(testDocuments, &factory, ProjectExplorer::HeaderPaths(), 4); } -void CppEditorPlugin::test_quickfix_GenerateGetterSetter_onlySetterHeaderFileWithIncludeGuard() +void QuickfixTest::testGenerateGetterSetterOnlySetterHeaderFileWithIncludeGuard() { QList testDocuments; const QByteArray original = @@ -3427,7 +3443,7 @@ CppCodeStyleSettings CppCodeStyleSettingsChanger::currentSettings() return preferences->currentDelegate()->value().value(); } -void CppEditorPlugin::test_quickfix_GenerateGettersSetters_data() +void QuickfixTest::testGenerateGettersSetters_data() { QTest::addColumn("original"); QTest::addColumn("expected"); @@ -3548,7 +3564,7 @@ inline void Foo::resetBar3() QTest::addRow("with candidates") << withCandidates << after; } -void CppEditorPlugin::test_quickfix_GenerateGettersSetters() +void QuickfixTest::testGenerateGettersSetters() { class TestFactory : public GenerateGettersSettersForClass { @@ -3569,7 +3585,7 @@ void CppEditorPlugin::test_quickfix_GenerateGettersSetters() QuickFixOperationTest({QuickFixTestDocument::create("file.h", original, expected)}, &factory); } -void CppEditorPlugin::test_quickfix_InsertQtPropertyMembers_data() +void QuickfixTest::testInsertQtPropertyMembers_data() { QTest::addColumn("original"); QTest::addColumn("expected"); @@ -3702,7 +3718,7 @@ void CppEditorPlugin::test_quickfix_InsertQtPropertyMembers_data() "}\n"); } -void CppEditorPlugin::test_quickfix_InsertQtPropertyMembers() +void QuickfixTest::testInsertQtPropertyMembers() { QFETCH(QByteArray, original); QFETCH(QByteArray, expected); @@ -3717,7 +3733,7 @@ void CppEditorPlugin::test_quickfix_InsertQtPropertyMembers() QuickFixOperationTest({QuickFixTestDocument::create("file.cpp", original, expected)}, &factory); } -void CppEditorPlugin::test_quickfix_InsertMemberFromInitialization_data() +void QuickfixTest::testInsertMemberFromInitialization_data() { QTest::addColumn("original"); QTest::addColumn("expected"); @@ -3791,7 +3807,7 @@ void CppEditorPlugin::test_quickfix_InsertMemberFromInitialization_data() QTest::addRow("initialization via function call") << original << expected; } -void CppEditorPlugin::test_quickfix_InsertMemberFromInitialization() +void QuickfixTest::testInsertMemberFromInitialization() { QFETCH(QByteArray, original); QFETCH(QByteArray, expected); @@ -3805,7 +3821,7 @@ void CppEditorPlugin::test_quickfix_InsertMemberFromInitialization() } /// Check if definition is inserted right after class for insert definition outside -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_afterClass() +void QuickfixTest::testInsertDefFromDeclAfterClass() { QList testDocuments; QByteArray original; @@ -3849,7 +3865,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_afterClass() /// Check from header file: If there is a source file, insert the definition in the source file. /// Case: Source file is empty. -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_headerSource_basic1() +void QuickfixTest::testInsertDefFromDeclHeaderSourceBasic1() { QList testDocuments; @@ -3881,7 +3897,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_headerSource_basic1() /// Check from header file: If there is a source file, insert the definition in the source file. /// Case: Source file is not empty. -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_headerSource_basic2() +void QuickfixTest::testInsertDefFromDeclHeaderSourceBasic2() { QList testDocuments; @@ -3916,7 +3932,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_headerSource_basic2() } /// Check from source file: Insert in source file, not header file. -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_headerSource_basic3() +void QuickfixTest::testInsertDefFromDeclHeaderSourceBasic3() { QList testDocuments; @@ -3946,7 +3962,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_headerSource_basic3() /// Check from header file: If the class is in a namespace, the added function definition /// name must be qualified accordingly. -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_headerSource_namespace1() +void QuickfixTest::testInsertDefFromDeclHeaderSourceNamespace1() { QList testDocuments; @@ -3980,7 +3996,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_headerSource_namespace1() /// Check from header file: If the class is in namespace N and the source file has a /// "using namespace N" line, the function definition name must be qualified accordingly. -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_headerSource_namespace2() +void QuickfixTest::testInsertDefFromDeclHeaderSourceNamespace2() { QList testDocuments; @@ -4016,7 +4032,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_headerSource_namespace2() } /// Check definition insert inside class -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_insideClass() +void QuickfixTest::testInsertDefFromDeclInsideClass() { const QByteArray original = "class Foo {\n" @@ -4035,7 +4051,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_insideClass() } /// Check not triggering when definition exists -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_notTriggeringWhenDefinitionExists() +void QuickfixTest::testInsertDefFromDeclNotTriggeringWhenDefinitionExists() { const QByteArray original = "class Foo {\n" @@ -4048,7 +4064,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_notTriggeringWhenDefinitio } /// Find right implementation file. -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_findRightImplementationFile() +void QuickfixTest::testInsertDefFromDeclFindRightImplementationFile() { QList testDocuments; @@ -4098,7 +4114,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_findRightImplementationFil /// Ignore generated functions declarations when looking at the surrounding /// functions declarations in order to find the right implementation file. -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_ignoreSurroundingGeneratedDeclarations() +void QuickfixTest::testInsertDefFromDeclIgnoreSurroundingGeneratedDeclarations() { QList testDocuments; @@ -4152,7 +4168,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_ignoreSurroundingGenerated } /// Check if whitespace is respected for operator functions -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_respectWsInOperatorNames1() +void QuickfixTest::testInsertDefFromDeclRespectWsInOperatorNames1() { QByteArray original = "class Foo\n" @@ -4175,7 +4191,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_respectWsInOperatorNames1( } /// Check if whitespace is respected for operator functions -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_respectWsInOperatorNames2() +void QuickfixTest::testInsertDefFromDeclRespectWsInOperatorNames2() { QByteArray original = "class Foo\n" @@ -4198,7 +4214,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_respectWsInOperatorNames2( } /// Check that the noexcept exception specifier is transferred -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_noexcept_specifier() +void QuickfixTest::testInsertDefFromDeclNoexceptSpecifier() { QByteArray original = "class Foo\n" @@ -4222,7 +4238,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_noexcept_specifier() /// Check if a function like macro use is not separated by the function to insert /// Case: Macro preceded by preproceesor directives and declaration. -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_macroUsesAtEndOfFile1() +void QuickfixTest::testInsertDefFromDeclMacroUsesAtEndOfFile1() { QList testDocuments; @@ -4264,7 +4280,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_macroUsesAtEndOfFile1() /// Check if a function like macro use is not separated by the function to insert /// Case: Marco preceded only by preprocessor directives. -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_macroUsesAtEndOfFile2() +void QuickfixTest::testInsertDefFromDeclMacroUsesAtEndOfFile2() { QList testDocuments; @@ -4303,7 +4319,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_macroUsesAtEndOfFile2() } /// Check if insertion happens before syntactically erroneous statements at end of file. -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_erroneousStatementAtEndOfFile() +void QuickfixTest::testInsertDefFromDeclErroneousStatementAtEndOfFile() { QList testDocuments; @@ -4340,7 +4356,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_erroneousStatementAtEndOfF } /// Check: Respect rvalue references -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_rvalueReference() +void QuickfixTest::testInsertDefFromDeclRvalueReference() { QList testDocuments; @@ -4367,7 +4383,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_rvalueReference() QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_functionTryBlock() +void QuickfixTest::testInsertDefFromDeclFunctionTryBlock() { QList testDocuments; @@ -4406,7 +4422,7 @@ void Foo::otherFunc() QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_usingDecl() +void QuickfixTest::testInsertDefFromDeclUsingDecl() { QList testDocuments; @@ -4495,7 +4511,7 @@ D::D() } /// Find right implementation file. (QTCREATORBUG-10728) -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_findImplementationFile() +void QuickfixTest::testInsertDefFromDeclFindImplementationFile() { QList testDocuments; @@ -4532,7 +4548,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_findImplementationFile() QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_unicodeIdentifier() +void QuickfixTest::testInsertDefFromDeclUnicodeIdentifier() { QList testDocuments; @@ -4575,7 +4591,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_unicodeIdentifier() QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_templateClass() +void QuickfixTest::testInsertDefFromDeclTemplateClass() { QByteArray original = "template\n" @@ -4605,7 +4621,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_templateClass() QuickFixOperationTest(singleDocument(original, expected), &factory); } -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_templateClassWithValueParam() +void QuickfixTest::testInsertDefFromDeclTemplateClassWithValueParam() { QList testDocuments; QByteArray original = @@ -4626,7 +4642,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_templateClassWithValuePara QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_templateFunction() +void QuickfixTest::testInsertDefFromDeclTemplateFunction() { QByteArray original = "class Foo\n" @@ -4651,7 +4667,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_templateFunction() QuickFixOperationTest(singleDocument(original, expected), &factory); } -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_notTriggeredForFriendFunc() +void QuickfixTest::testInsertDefFromDeclNotTriggeredForFriendFunc() { const QByteArray contents = "class Foo\n" @@ -4664,7 +4680,7 @@ void CppEditorPlugin::test_quickfix_InsertDefFromDecl_notTriggeredForFriendFunc( QuickFixOperationTest(singleDocument(contents, ""), &factory); } -void CppEditorPlugin::test_quickfix_InsertDefFromDecl_minimalFunctionParameterType() +void QuickfixTest::testInsertDefFromDeclMinimalFunctionParameterType() { QList testDocuments; @@ -4726,7 +4742,7 @@ N::S N::foo(const S &s) QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_InsertDefsFromDecls_data() +void QuickfixTest::testInsertDefsFromDecls_data() { QTest::addColumn("headers"); QTest::addColumn("sources"); @@ -4853,7 +4869,7 @@ void CppEditorPlugin::test_quickfix_InsertDefsFromDecls_data() << int(InsertDefsFromDecls::Mode::Alternating); } -void CppEditorPlugin::test_quickfix_InsertDefsFromDecls() +void QuickfixTest::testInsertDefsFromDecls() { QFETCH(QByteArrayList, headers); QFETCH(QByteArrayList, sources); @@ -4907,7 +4923,7 @@ void insertToSectionDeclFromDef(const QByteArray §ion, int sectionIndex) } /// Check from source file: Insert in header file. -void CppEditorPlugin::test_quickfix_InsertDeclFromDef() +void QuickfixTest::testInsertDeclFromDef() { insertToSectionDeclFromDef("public", 0); insertToSectionDeclFromDef("public slots", 1); @@ -4917,7 +4933,7 @@ void CppEditorPlugin::test_quickfix_InsertDeclFromDef() insertToSectionDeclFromDef("private slots", 5); } -void CppEditorPlugin::test_quickfix_InsertDeclFromDef_templateFuncTypename() +void QuickfixTest::testInsertDeclFromDefTemplateFuncTypename() { QByteArray original = "class Foo\n" @@ -4942,7 +4958,7 @@ void CppEditorPlugin::test_quickfix_InsertDeclFromDef_templateFuncTypename() QuickFixOperationTest(singleDocument(original, expected), &factory, {}, 0); } -void CppEditorPlugin::test_quickfix_InsertDeclFromDef_templateFuncInt() +void QuickfixTest::testInsertDeclFromDefTemplateFuncInt() { QByteArray original = "class Foo\n" @@ -4967,7 +4983,7 @@ void CppEditorPlugin::test_quickfix_InsertDeclFromDef_templateFuncInt() QuickFixOperationTest(singleDocument(original, expected), &factory, {}, 0); } -void CppEditorPlugin::test_quickfix_InsertDeclFromDef_notTriggeredForTemplateFunc() +void QuickfixTest::testInsertDeclFromDefNotTriggeredForTemplateFunc() { QByteArray contents = "class Foo\n" @@ -4983,7 +4999,7 @@ void CppEditorPlugin::test_quickfix_InsertDeclFromDef_notTriggeredForTemplateFun QuickFixOperationTest(singleDocument(contents, ""), &factory); } -void CppEditorPlugin::test_quickfix_AddIncludeForUndefinedIdentifier_data() +void QuickfixTest::testAddIncludeForUndefinedIdentifier_data() { QTest::addColumn("headerPath"); QTest::addColumn("testDocuments"); @@ -5735,7 +5751,7 @@ void CppEditorPlugin::test_quickfix_AddIncludeForUndefinedIdentifier_data() testDocuments.clear(); } -void CppEditorPlugin::test_quickfix_AddIncludeForUndefinedIdentifier() +void QuickfixTest::testAddIncludeForUndefinedIdentifier() { QFETCH(QString, headerPath); QFETCH(QuickFixTestDocuments, testDocuments); @@ -5757,7 +5773,7 @@ void CppEditorPlugin::test_quickfix_AddIncludeForUndefinedIdentifier() refactoringOperationIndex); } -void CppEditorPlugin::test_quickfix_AddIncludeForUndefinedIdentifier_noDoubleQtHeaderInclude() +void QuickfixTest::testAddIncludeForUndefinedIdentifierNoDoubleQtHeaderInclude() { CppTools::Tests::TemporaryDir temporaryDir; QVERIFY(temporaryDir.isValid()); @@ -5784,7 +5800,7 @@ void CppEditorPlugin::test_quickfix_AddIncludeForUndefinedIdentifier_noDoubleQtH QuickFixOfferedOperationsTest(testDocuments, &factory, headerPaths, expectedOperations); } -void CppEditorPlugin::test_quickfix_AddForwardDeclForUndefinedIdentifier_data() +void QuickfixTest::testAddForwardDeclForUndefinedIdentifier_data() { QTest::addColumn("testDocuments"); QTest::addColumn("symbol"); @@ -5934,7 +5950,7 @@ void CppEditorPlugin::test_quickfix_AddForwardDeclForUndefinedIdentifier_data() << "NS2::Blubb" << original.indexOf('@'); } -void CppEditorPlugin::test_quickfix_AddForwardDeclForUndefinedIdentifier() +void QuickfixTest::testAddForwardDeclForUndefinedIdentifier() { QFETCH(QuickFixTestDocuments, testDocuments); QFETCH(QString, symbol); @@ -5950,7 +5966,7 @@ void CppEditorPlugin::test_quickfix_AddForwardDeclForUndefinedIdentifier() } /// Check: Move definition from header to cpp. -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCpp() +void QuickfixTest::testMoveFuncDefOutsideMemberFuncToCpp() { QList testDocuments; QByteArray original; @@ -5991,7 +6007,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCpp() QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCpp_Static() +void QuickfixTest::testMoveFuncDefOutsideMemberFuncToCppStatic() { QList testDocuments; QByteArray original; @@ -6031,7 +6047,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCpp_Static() QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCpp_WithInlinePartOfName() +void QuickfixTest::testMoveFuncDefOutsideMemberFuncToCppWithInlinePartOfName() { QList testDocuments; QByteArray original; @@ -6071,7 +6087,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCpp_WithInlin QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCppInsideNS() +void QuickfixTest::testMoveFuncDefOutsideMemberFuncToCppInsideNS() { QList testDocuments; QByteArray original; @@ -6118,7 +6134,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCppInsideNS() } /// Check: Move definition outside class -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncOutside1() +void QuickfixTest::testMoveFuncDefOutsideMemberFuncOutside1() { QByteArray original = "class Foo {\n" @@ -6152,7 +6168,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncOutside1() } /// Check: Move definition outside class -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncOutside2() +void QuickfixTest::testMoveFuncDefOutsideMemberFuncOutside2() { QList testDocuments; QByteArray original; @@ -6194,7 +6210,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncOutside2() } /// Check: Move definition from header to cpp (with namespace). -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCppNS() +void QuickfixTest::testMoveFuncDefOutsideMemberFuncToCppNS() { QList testDocuments; QByteArray original; @@ -6235,7 +6251,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCppNS() } /// Check: Move definition from header to cpp (with namespace + using). -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCppNSUsing() +void QuickfixTest::testMoveFuncDefOutsideMemberFuncToCppNSUsing() { QList testDocuments; QByteArray original; @@ -6278,7 +6294,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCppNSUsing() } /// Check: Move definition outside class with Namespace -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncOutsideWithNs() +void QuickfixTest::testMoveFuncDefOutsideMemberFuncOutsideWithNs() { QByteArray original = "namespace MyNs {\n" @@ -6305,7 +6321,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncOutsideWithNs() } /// Check: Move free function from header to cpp. -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_FreeFuncToCpp() +void QuickfixTest::testMoveFuncDefOutsideFreeFuncToCpp() { QList testDocuments; QByteArray original; @@ -6339,7 +6355,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_FreeFuncToCpp() } /// Check: Move free function from header to cpp (with namespace). -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_FreeFuncToCppNS() +void QuickfixTest::testMoveFuncDefOutsideFreeFuncToCppNS() { QList testDocuments; QByteArray original; @@ -6376,7 +6392,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_FreeFuncToCppNS() } /// Check: Move Ctor with member initialization list (QTCREATORBUG-9157). -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_CtorWithInitialization1() +void QuickfixTest::testMoveFuncDefOutsideCtorWithInitialization1() { QList testDocuments; QByteArray original; @@ -6415,7 +6431,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_CtorWithInitialization1() } /// Check: Move Ctor with member initialization list (QTCREATORBUG-9462). -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_CtorWithInitialization2() +void QuickfixTest::testMoveFuncDefOutsideCtorWithInitialization2() { QList testDocuments; QByteArray original; @@ -6459,7 +6475,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_CtorWithInitialization2() } /// Check if definition is inserted right after class for move definition outside -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_afterClass() +void QuickfixTest::testMoveFuncDefOutsideAfterClass() { QList testDocuments; QByteArray original; @@ -6501,7 +6517,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_afterClass() } /// Check if whitespace is respected for operator functions -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_respectWsInOperatorNames1() +void QuickfixTest::testMoveFuncDefOutsideRespectWsInOperatorNames1() { QByteArray original = "class Foo\n" @@ -6522,7 +6538,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_respectWsInOperatorNames1 } /// Check if whitespace is respected for operator functions -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_respectWsInOperatorNames2() +void QuickfixTest::testMoveFuncDefOutsideRespectWsInOperatorNames2() { QByteArray original = "class Foo\n" @@ -6542,7 +6558,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_respectWsInOperatorNames2 QuickFixOperationTest(singleDocument(original, expected), &factory); } -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_macroUses() +void QuickfixTest::testMoveFuncDefOutsideMacroUses() { QByteArray original = "#define CONST const\n" @@ -6575,7 +6591,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_macroUses() ProjectExplorer::HeaderPaths(), 0, "QTCREATORBUG-12314"); } -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_template() +void QuickfixTest::testMoveFuncDefOutsideTemplate() { QByteArray original = "template\n" @@ -6592,7 +6608,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_template() QuickFixOperationTest(singleDocument(original, expected), &factory); } -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_template_specializedClass() +void QuickfixTest::testMoveFuncDefOutsideTemplateSpecializedClass() { QByteArray original = R"( template class base {}; @@ -6619,7 +6635,7 @@ void base::bar() {} QuickFixOperationTest(singleDocument(original, expected), &factory); } -void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_unnamedTemplate() +void QuickfixTest::testMoveFuncDefOutsideUnnamedTemplate() { QByteArray original = "template\n" @@ -6637,7 +6653,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_unnamedTemplate() } /// Check: revert test_quickfix_MoveFuncDefOutside_MemberFuncToCpp() -void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_MemberFunc() +void QuickfixTest::testMoveFuncDefToDeclMemberFunc() { QList testDocuments; QByteArray original; @@ -6669,7 +6685,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_MemberFunc() } /// Check: revert test_quickfix_MoveFuncDefOutside_MemberFuncOutside() -void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_MemberFuncOutside() +void QuickfixTest::testMoveFuncDefToDeclMemberFuncOutside() { QByteArray original = "class Foo {\n" @@ -6694,7 +6710,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_MemberFuncOutside() } /// Check: revert test_quickfix_MoveFuncDefOutside_MemberFuncToCppNS() -void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_MemberFuncToCppNS() +void QuickfixTest::testMoveFuncDefToDeclMemberFuncToCppNS() { QList testDocuments; QByteArray original; @@ -6734,7 +6750,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_MemberFuncToCppNS() } /// Check: revert test_quickfix_MoveFuncDefOutside_MemberFuncToCppNSUsing() -void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_MemberFuncToCppNSUsing() +void QuickfixTest::testMoveFuncDefToDeclMemberFuncToCppNSUsing() { QList testDocuments; QByteArray original; @@ -6778,7 +6794,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_MemberFuncToCppNSUsing() } /// Check: revert test_quickfix_MoveFuncDefOutside_MemberFuncOutsideWithNs() -void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_MemberFuncOutsideWithNs() +void QuickfixTest::testMoveFuncDefToDeclMemberFuncOutsideWithNs() { QByteArray original = "namespace MyNs {\n" @@ -6805,7 +6821,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_MemberFuncOutsideWithNs() } /// Check: revert test_quickfix_MoveFuncDefOutside_FreeFuncToCpp() -void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_FreeFuncToCpp() +void QuickfixTest::testMoveFuncDefToDeclFreeFuncToCpp() { QList testDocuments; QByteArray original; @@ -6837,7 +6853,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_FreeFuncToCpp() } /// Check: revert test_quickfix_MoveFuncDefOutside_FreeFuncToCppNS() -void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_FreeFuncToCppNS() +void QuickfixTest::testMoveFuncDefToDeclFreeFuncToCppNS() { QList testDocuments; QByteArray original; @@ -6875,7 +6891,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_FreeFuncToCppNS() } /// Check: revert test_quickfix_MoveFuncDefOutside_CtorWithInitialization() -void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_CtorWithInitialization() +void QuickfixTest::testMoveFuncDefToDeclCtorWithInitialization() { QList testDocuments; QByteArray original; @@ -6914,7 +6930,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_CtorWithInitialization() } /// Check: Definition should not be placed behind the variable. QTCREATORBUG-10303 -void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_structWithAssignedVariable() +void QuickfixTest::testMoveFuncDefToDeclStructWithAssignedVariable() { QByteArray original = "struct Foo\n" @@ -6939,7 +6955,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_structWithAssignedVariable QuickFixOperationTest(singleDocument(original, expected), &factory); } -void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_macroUses() +void QuickfixTest::testMoveFuncDefToDeclMacroUses() { QByteArray original = "#define CONST const\n" @@ -6970,7 +6986,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_macroUses() ProjectExplorer::HeaderPaths(), 0, "QTCREATORBUG-12314"); } -void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_override() +void QuickfixTest::testMoveFuncDefToDeclOverride() { QByteArray original = "struct Base {\n" @@ -7000,7 +7016,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_override() QuickFixOperationTest(singleDocument(original, expected), &factory); } -void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_template() +void QuickfixTest::testMoveFuncDefToDeclTemplate() { QByteArray original = "template\n" @@ -7017,7 +7033,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_template() QuickFixOperationTest(singleDocument(original, expected), &factory); } -void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_templateFunction() +void QuickfixTest::testMoveFuncDefToDeclTemplateFunction() { QByteArray original = "class Foo\n" @@ -7041,7 +7057,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefToDecl_templateFunction() } /// Check: Move all definitions from header to cpp. -void CppEditorPlugin::test_quickfix_MoveAllFuncDefOutside_MemberFuncToCpp() +void QuickfixTest::testMoveAllFuncDefOutsideMemberFuncToCpp() { QList testDocuments; QByteArray original; @@ -7089,7 +7105,7 @@ void CppEditorPlugin::test_quickfix_MoveAllFuncDefOutside_MemberFuncToCpp() } /// Check: Move all definition outside class -void CppEditorPlugin::test_quickfix_MoveAllFuncDefOutside_MemberFuncOutside() +void QuickfixTest::testMoveAllFuncDefOutsideMemberFuncOutside() { QByteArray original = "class F@oo {\n" @@ -7123,7 +7139,7 @@ void CppEditorPlugin::test_quickfix_MoveAllFuncDefOutside_MemberFuncOutside() } /// Check: Move all definition outside class -void CppEditorPlugin::test_quickfix_MoveAllFuncDefOutside_DoNotTriggerOnBaseClass() +void QuickfixTest::testMoveAllFuncDefOutsideDoNotTriggerOnBaseClass() { QByteArray original = "class Bar;\n" @@ -7139,7 +7155,7 @@ void CppEditorPlugin::test_quickfix_MoveAllFuncDefOutside_DoNotTriggerOnBaseClas } /// Check: Move all definition outside class -void CppEditorPlugin::test_quickfix_MoveAllFuncDefOutside_classWithBaseClass() +void QuickfixTest::testMoveAllFuncDefOutsideClassWithBaseClass() { QByteArray original = "class Bar;\n" @@ -7165,7 +7181,7 @@ void CppEditorPlugin::test_quickfix_MoveAllFuncDefOutside_classWithBaseClass() } /// Check: Do not take macro expanded code into account (QTCREATORBUG-13900) -void CppEditorPlugin::test_quickfix_MoveAllFuncDefOutside_ignoreMacroCode() +void QuickfixTest::testMoveAllFuncDefOutsideIgnoreMacroCode() { QByteArray original = "#define FAKE_Q_OBJECT int bar() {return 5;}\n" @@ -7192,7 +7208,7 @@ void CppEditorPlugin::test_quickfix_MoveAllFuncDefOutside_ignoreMacroCode() QuickFixOperationTest(singleDocument(original, expected), &factory); } -void CppEditorPlugin::test_quickfix_AssignToLocalVariable_templates() +void QuickfixTest::testAssignToLocalVariableTemplates() { QList testDocuments; @@ -7229,7 +7245,7 @@ void CppEditorPlugin::test_quickfix_AssignToLocalVariable_templates() QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_ExtractFunction_data() +void QuickfixTest::testExtractFunction_data() { QTest::addColumn("original"); QTest::addColumn("expected"); @@ -7324,7 +7340,7 @@ void CppEditorPlugin::test_quickfix_ExtractFunction_data() "}\n"); } -void CppEditorPlugin::test_quickfix_ExtractFunction() +void QuickfixTest::testExtractFunction() { QFETCH(QByteArray, original); QFETCH(QByteArray, expected); @@ -7336,7 +7352,7 @@ void CppEditorPlugin::test_quickfix_ExtractFunction() QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_ExtractLiteralAsParameter_typeDeduction_data() +void QuickfixTest::testExtractLiteralAsParameterTypeDeduction_data() { QTest::addColumn("typeString"); QTest::addColumn("literal"); @@ -7380,7 +7396,7 @@ void CppEditorPlugin::test_quickfix_ExtractLiteralAsParameter_typeDeduction_data << QByteArray("const char32_t *") << QByteArray("U\"narf\""); } -void CppEditorPlugin::test_quickfix_ExtractLiteralAsParameter_typeDeduction() +void QuickfixTest::testExtractLiteralAsParameterTypeDeduction() { QFETCH(QByteArray, typeString); QFETCH(QByteArray, literal); @@ -7400,7 +7416,7 @@ void CppEditorPlugin::test_quickfix_ExtractLiteralAsParameter_typeDeduction() QuickFixOperationTest(singleDocument(original, expected), &factory); } -void CppEditorPlugin::test_quickfix_ExtractLiteralAsParameter_freeFunction_separateFiles() +void QuickfixTest::testExtractLiteralAsParameterFreeFunctionSeparateFiles() { QList testDocuments; QByteArray original; @@ -7426,7 +7442,7 @@ void CppEditorPlugin::test_quickfix_ExtractLiteralAsParameter_freeFunction_separ QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_ExtractLiteralAsParameter_memberFunction_separateFiles() +void QuickfixTest::testExtractLiteralAsParameterMemberFunctionSeparateFiles() { QList testDocuments; QByteArray original; @@ -7460,7 +7476,7 @@ void CppEditorPlugin::test_quickfix_ExtractLiteralAsParameter_memberFunction_sep QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_ExtractLiteralAsParameter_notTriggeringForInvalidCode() +void QuickfixTest::testExtractLiteralAsParameterNotTriggeringForInvalidCode() { QList testDocuments; QByteArray original; @@ -7475,7 +7491,7 @@ void CppEditorPlugin::test_quickfix_ExtractLiteralAsParameter_notTriggeringForIn QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_addCurlyBraces() +void QuickfixTest::testAddCurlyBraces() { QList testDocuments; const QByteArray original = R"delim( @@ -7500,7 +7516,7 @@ void MyObject::f() } -void CppEditorPlugin::test_quickfix_ConvertQt4Connect_connectOutOfClass() +void QuickfixTest::testConvertQt4ConnectConnectOutOfClass() { QByteArray prefix = "class QObject {};\n" @@ -7533,7 +7549,7 @@ void CppEditorPlugin::test_quickfix_ConvertQt4Connect_connectOutOfClass() QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_ConvertQt4Connect_connectWithinClass_data() +void QuickfixTest::testConvertQt4ConnectConnectWithinClass_data() { QTest::addColumn("original"); QTest::addColumn("expected"); @@ -7563,7 +7579,7 @@ void CppEditorPlugin::test_quickfix_ConvertQt4Connect_connectWithinClass_data() "connect(p.data(), &TestClass::sigFoo, p.data(), &TestClass::setProp);"); } -void CppEditorPlugin::test_quickfix_ConvertQt4Connect_connectWithinClass() +void QuickfixTest::testConvertQt4ConnectConnectWithinClass() { QFETCH(QByteArray, original); QFETCH(QByteArray, expected); @@ -7599,7 +7615,7 @@ void CppEditorPlugin::test_quickfix_ConvertQt4Connect_connectWithinClass() QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_ConvertQt4Connect_differentNamespace() +void QuickfixTest::testConvertQt4ConnectDifferentNamespace() { const QByteArray prefix = "namespace NsA {\n" @@ -7632,7 +7648,7 @@ void CppEditorPlugin::test_quickfix_ConvertQt4Connect_differentNamespace() QuickFixOperationTest(testDocuments, &factory); } -void CppEditorPlugin::test_quickfix_removeUsingNamespace_data() +void QuickfixTest::testRemoveUsingNamespace_data() { QTest::addColumn("header1"); QTest::addColumn("header2"); @@ -7874,7 +7890,7 @@ void test::Foo::foo2(){}; << h1 << h2 << h3 << expected1 << expected2 << expected3 << 0; } -void CppEditorPlugin::test_quickfix_removeUsingNamespace() +void QuickfixTest::testRemoveUsingNamespace() { QFETCH(QByteArray, header1); QFETCH(QByteArray, header2); @@ -7893,7 +7909,7 @@ void CppEditorPlugin::test_quickfix_removeUsingNamespace() QuickFixOperationTest(testDocuments, &factory, ProjectExplorer::HeaderPaths(), operation); } -void CppEditorPlugin::test_quickfix_removeUsingNamespace_simple_data() +void QuickfixTest::testRemoveUsingNamespaceSimple_data() { QTest::addColumn("header"); QTest::addColumn("expected"); @@ -7924,7 +7940,7 @@ vec::iterator it; QTest::newRow("nested typedefs with Namespace") << header << expected; } -void CppEditorPlugin::test_quickfix_removeUsingNamespace_simple() +void QuickfixTest::testRemoveUsingNamespaceSimple() { QFETCH(QByteArray, header); QFETCH(QByteArray, expected); @@ -7936,7 +7952,7 @@ void CppEditorPlugin::test_quickfix_removeUsingNamespace_simple() QuickFixOperationTest(testDocuments, &factory, ProjectExplorer::HeaderPaths()); } -void CppEditorPlugin::test_quickfix_removeUsingNamespace_differentSymbols() +void QuickfixTest::testRemoveUsingNamespaceDifferentSymbols() { QByteArray header = "namespace test{\n" " struct foo{\n" @@ -7982,7 +7998,7 @@ void CppEditorPlugin::test_quickfix_removeUsingNamespace_differentSymbols() enum ConstructorLocation { Inside, Outside, CppGenNamespace, CppGenUsingDirective, CppRewriteType }; -void CppEditorPlugin::test_quickfix_generateConstructor_data() +void QuickfixTest::testGenerateConstructor_data() { QTest::addColumn("original_header"); QTest::addColumn("expected_header"); @@ -8330,7 +8346,7 @@ M::Foo::Foo(const N::vector &g, M::Foo::E e) : g(g), << header << expected << source << expected_source << CppRewriteType; } -void CppEditorPlugin::test_quickfix_generateConstructor() +void QuickfixTest::testGenerateConstructor() { class TestFactory : public GenerateConstructor { @@ -8374,5 +8390,4 @@ void CppEditorPlugin::test_quickfix_generateConstructor() QuickFixOperationTest(testDocuments, &factory); } -} // namespace Internal -} // namespace CppEditor +} // namespace CppEditor::Internal::Tests diff --git a/src/plugins/cppeditor/cppquickfix_test.h b/src/plugins/cppeditor/cppquickfix_test.h index 9ac1b191bca..259e57f3ce7 100644 --- a/src/plugins/cppeditor/cppquickfix_test.h +++ b/src/plugins/cppeditor/cppquickfix_test.h @@ -30,11 +30,10 @@ #include #include +#include #include #include -typedef QByteArray _; - namespace CppTools { class CppCodeStylePreferences; } namespace TextEditor { class QuickFixOperation; } @@ -69,8 +68,6 @@ public: QString m_expectedSource; }; -typedef QList QuickFixTestDocuments; - class BaseQuickFixTestCase : public TestCase { public: @@ -113,22 +110,156 @@ public: int operationIndex = 0); }; -/// Tests the offered operations provided by a given CppQuickFixFactory -class QuickFixOfferedOperationsTest : public BaseQuickFixTestCase -{ -public: - QuickFixOfferedOperationsTest(const QList &testDocuments, - CppQuickFixFactory *factory, - const ProjectExplorer::HeaderPaths &headerPaths - = ProjectExplorer::HeaderPaths(), - const QStringList &expectedOperations = QStringList()); -}; - QList singleDocument(const QByteArray &original, const QByteArray &expected); +class QuickfixTest : public QObject +{ + Q_OBJECT + +private slots: + void testGeneric_data(); + void testGeneric(); + + void testGenerateGetterSetterNamespaceHandlingCreate_data(); + void testGenerateGetterSetterNamespaceHandlingCreate(); + void testGenerateGetterSetterNamespaceHandlingAddUsing_data(); + void testGenerateGetterSetterNamespaceHandlingAddUsing(); + void testGenerateGetterSetterNamespaceHandlingFullyQualify_data(); + void testGenerateGetterSetterNamespaceHandlingFullyQualify(); + void testGenerateGetterSetterCustomNames_data(); + void testGenerateGetterSetterCustomNames(); + void testGenerateGetterSetterValueTypes_data(); + void testGenerateGetterSetterValueTypes(); + void testGenerateGetterSetterCustomTemplate(); + void testGenerateGetterSetterNeedThis(); + void testGenerateGetterSetterOfferedFixes_data(); + void testGenerateGetterSetterOfferedFixes(); + void testGenerateGetterSetterGeneralTests_data(); + void testGenerateGetterSetterGeneralTests(); + void testGenerateGetterSetterOnlyGetter(); + void testGenerateGetterSetterOnlySetter(); + void testGenerateGetterSetterInlineInHeaderFile(); + void testGenerateGetterSetterOnlySetterHeaderFileWithIncludeGuard(); + void testGenerateGettersSetters_data(); + void testGenerateGettersSetters(); + + void testInsertQtPropertyMembers_data(); + void testInsertQtPropertyMembers(); + + void testInsertMemberFromInitialization_data(); + void testInsertMemberFromInitialization(); + + void testConvertQt4ConnectConnectOutOfClass(); + void testConvertQt4ConnectConnectWithinClass_data(); + void testConvertQt4ConnectConnectWithinClass(); + void testConvertQt4ConnectDifferentNamespace(); + + void testInsertDefFromDeclAfterClass(); + void testInsertDefFromDeclHeaderSourceBasic1(); + void testInsertDefFromDeclHeaderSourceBasic2(); + void testInsertDefFromDeclHeaderSourceBasic3(); + void testInsertDefFromDeclHeaderSourceNamespace1(); + void testInsertDefFromDeclHeaderSourceNamespace2(); + void testInsertDefFromDeclInsideClass(); + void testInsertDefFromDeclNotTriggeringWhenDefinitionExists(); + void testInsertDefFromDeclFindRightImplementationFile(); + void testInsertDefFromDeclIgnoreSurroundingGeneratedDeclarations(); + void testInsertDefFromDeclRespectWsInOperatorNames1(); + void testInsertDefFromDeclRespectWsInOperatorNames2(); + void testInsertDefFromDeclNoexceptSpecifier(); + void testInsertDefFromDeclMacroUsesAtEndOfFile1(); + void testInsertDefFromDeclMacroUsesAtEndOfFile2(); + void testInsertDefFromDeclErroneousStatementAtEndOfFile(); + void testInsertDefFromDeclRvalueReference(); + void testInsertDefFromDeclFunctionTryBlock(); + void testInsertDefFromDeclUsingDecl(); + void testInsertDefFromDeclFindImplementationFile(); + void testInsertDefFromDeclUnicodeIdentifier(); + void testInsertDefFromDeclTemplateClass(); + void testInsertDefFromDeclTemplateClassWithValueParam(); + void testInsertDefFromDeclTemplateFunction(); + void testInsertDefFromDeclNotTriggeredForFriendFunc(); + void testInsertDefFromDeclMinimalFunctionParameterType(); + void testInsertDefsFromDecls_data(); + void testInsertDefsFromDecls(); + + void testInsertDeclFromDef(); + void testInsertDeclFromDefTemplateFuncTypename(); + void testInsertDeclFromDefTemplateFuncInt(); + void testInsertDeclFromDefNotTriggeredForTemplateFunc(); + + void testAddIncludeForUndefinedIdentifier_data(); + void testAddIncludeForUndefinedIdentifier(); + void testAddIncludeForUndefinedIdentifierNoDoubleQtHeaderInclude(); + + void testAddForwardDeclForUndefinedIdentifier_data(); + void testAddForwardDeclForUndefinedIdentifier(); + + void testMoveFuncDefOutsideMemberFuncToCpp(); + void testMoveFuncDefOutsideMemberFuncToCppInsideNS(); + void testMoveFuncDefOutsideMemberFuncOutside1(); + void testMoveFuncDefOutsideMemberFuncOutside2(); + void testMoveFuncDefOutsideMemberFuncToCppNS(); + void testMoveFuncDefOutsideMemberFuncToCppNSUsing(); + void testMoveFuncDefOutsideMemberFuncOutsideWithNs(); + void testMoveFuncDefOutsideFreeFuncToCpp(); + void testMoveFuncDefOutsideFreeFuncToCppNS(); + void testMoveFuncDefOutsideCtorWithInitialization1(); + void testMoveFuncDefOutsideCtorWithInitialization2(); + void testMoveFuncDefOutsideAfterClass(); + void testMoveFuncDefOutsideRespectWsInOperatorNames1(); + void testMoveFuncDefOutsideRespectWsInOperatorNames2(); + void testMoveFuncDefOutsideMacroUses(); + void testMoveFuncDefOutsideTemplate(); + void testMoveFuncDefOutsideTemplateSpecializedClass(); + void testMoveFuncDefOutsideUnnamedTemplate(); + void testMoveFuncDefOutsideMemberFuncToCppStatic(); + void testMoveFuncDefOutsideMemberFuncToCppWithInlinePartOfName(); + + void testMoveAllFuncDefOutsideMemberFuncToCpp(); + void testMoveAllFuncDefOutsideMemberFuncOutside(); + void testMoveAllFuncDefOutsideDoNotTriggerOnBaseClass(); + void testMoveAllFuncDefOutsideClassWithBaseClass(); + void testMoveAllFuncDefOutsideIgnoreMacroCode(); + + void testMoveFuncDefToDeclMemberFunc(); + void testMoveFuncDefToDeclMemberFuncOutside(); + void testMoveFuncDefToDeclMemberFuncToCppNS(); + void testMoveFuncDefToDeclMemberFuncToCppNSUsing(); + void testMoveFuncDefToDeclMemberFuncOutsideWithNs(); + void testMoveFuncDefToDeclFreeFuncToCpp(); + void testMoveFuncDefToDeclFreeFuncToCppNS(); + void testMoveFuncDefToDeclCtorWithInitialization(); + void testMoveFuncDefToDeclStructWithAssignedVariable(); + void testMoveFuncDefToDeclMacroUses(); + void testMoveFuncDefToDeclOverride(); + void testMoveFuncDefToDeclTemplate(); + void testMoveFuncDefToDeclTemplateFunction(); + + void testAssignToLocalVariableTemplates(); + + void testExtractFunction_data(); + void testExtractFunction(); + + void testExtractLiteralAsParameterTypeDeduction_data(); + void testExtractLiteralAsParameterTypeDeduction(); + void testExtractLiteralAsParameterFreeFunctionSeparateFiles(); + void testExtractLiteralAsParameterMemberFunctionSeparateFiles(); + void testExtractLiteralAsParameterNotTriggeringForInvalidCode(); + + void testAddCurlyBraces(); + + void testRemoveUsingNamespace_data(); + void testRemoveUsingNamespace(); + void testRemoveUsingNamespaceSimple_data(); + void testRemoveUsingNamespaceSimple(); + void testRemoveUsingNamespaceDifferentSymbols(); + + void testGenerateConstructor_data(); + void testGenerateConstructor(); +}; + } // namespace Tests } // namespace Internal } // namespace CppEditor - -Q_DECLARE_METATYPE(CppEditor::Internal::Tests::QuickFixTestDocuments) diff --git a/src/plugins/cppeditor/cppuseselections_test.cpp b/src/plugins/cppeditor/cppuseselections_test.cpp index 1bf53c37990..07fdab8083f 100644 --- a/src/plugins/cppeditor/cppuseselections_test.cpp +++ b/src/plugins/cppeditor/cppuseselections_test.cpp @@ -23,9 +23,10 @@ ** ****************************************************************************/ +#include "cppuseselections_test.h" + #include "cppeditor.h" #include "cppeditorwidget.h" -#include "cppeditorplugin.h" #include "cppeditortestcase.h" #include @@ -157,9 +158,7 @@ SelectionList UseSelectionsTestCase::waitForUseSelections(bool *hasTimedOut) con return toSelectionList(extraSelections); } -} // namespace Tests - -void CppEditorPlugin::test_useSelections_data() +void SelectionsTest::testUseSelections_data() { QTest::addColumn("source"); QTest::addColumn("expectedSelections"); @@ -249,7 +248,7 @@ void CppEditorPlugin::test_useSelections_data() << macroUseSelections; } -void CppEditorPlugin::test_useSelections() +void SelectionsTest::testUseSelections() { QFETCH(QByteArray, source); QFETCH(SelectionList, expectedSelections); @@ -258,7 +257,7 @@ void CppEditorPlugin::test_useSelections() Tests::UseSelectionsTestCase(testDocument, expectedSelections); } -void CppEditorPlugin::test_selectionFiltering_data() +void SelectionsTest::testSelectionFiltering_data() { QTest::addColumn("source"); QTest::addColumn("original"); @@ -284,7 +283,7 @@ void CppEditorPlugin::test_selectionFiltering_data() << SelectionList{{3, 4, 27}, {4, 8, 11}, {5, 4, 1}}; } -void CppEditorPlugin::test_selectionFiltering() +void SelectionsTest::testSelectionFiltering() { QFETCH(QString, source); QFETCH(SelectionList, original); @@ -323,5 +322,6 @@ void CppEditorPlugin::test_selectionFiltering() } } +} // namespace Tests } // namespace Internal } // namespace CppEditor diff --git a/src/plugins/cppeditor/cppuseselections_test.h b/src/plugins/cppeditor/cppuseselections_test.h new file mode 100644 index 00000000000..285504e9e2d --- /dev/null +++ b/src/plugins/cppeditor/cppuseselections_test.h @@ -0,0 +1,44 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include + +namespace CppEditor::Internal::Tests { + +class SelectionsTest : public QObject +{ + Q_OBJECT + +private slots: + void testUseSelections_data(); + void testUseSelections(); + + void testSelectionFiltering_data(); + void testSelectionFiltering(); +}; + +} // namespace CppEditor::Internal::Tests diff --git a/src/plugins/cppeditor/fileandtokenactions_test.cpp b/src/plugins/cppeditor/fileandtokenactions_test.cpp index 1792b756d93..8320597a4b3 100644 --- a/src/plugins/cppeditor/fileandtokenactions_test.cpp +++ b/src/plugins/cppeditor/fileandtokenactions_test.cpp @@ -23,10 +23,12 @@ ** ****************************************************************************/ +#include "fileandtokenactions_test.h" + #include "cppeditor.h" -#include "cppeditorwidget.h" #include "cppeditorplugin.h" #include "cppeditortestcase.h" +#include "cppeditorwidget.h" #include "cppquickfix.h" #include "cppquickfixassistant.h" #include "cppquickfixes.h" @@ -72,8 +74,7 @@ using namespace CPlusPlus; using namespace CppTools; using namespace TextEditor; -namespace CppEditor { -namespace Internal { +namespace CppEditor::Internal::Tests { namespace { @@ -493,56 +494,55 @@ void SwitchHeaderSourceFileAction::run(CppEditorWidget *) } // anonymous namespace -void CppEditorPlugin::test_openEachFile() +void FileAndTokenActionsTest::testOpenEachFile() { TestActionsTestCase(); } -void CppEditorPlugin::test_switchHeaderSourceOnEachFile() +void FileAndTokenActionsTest::testSwitchHeaderSourceOnEachFile() { TestActionsTestCase(Actions(), singleAction(ActionPointer(new SwitchHeaderSourceFileAction))); } -void CppEditorPlugin::test_moveTokenWiseThroughEveryFile() +void FileAndTokenActionsTest::testMoveTokenWiseThroughEveryFile() { TestActionsTestCase(singleAction(ActionPointer(new NoOpTokenAction))); } /// May block if file does not exist (e.g. a not generated ui_* file). -void CppEditorPlugin::test_moveTokenWiseThroughEveryFileAndFollowSymbol() +void FileAndTokenActionsTest::testMoveTokenWiseThroughEveryFileAndFollowSymbol() { TestActionsTestCase(singleAction(ActionPointer(new FollowSymbolUnderCursorTokenAction))); } -void CppEditorPlugin::test_moveTokenWiseThroughEveryFileAndSwitchDeclarationDefinition() +void FileAndTokenActionsTest::testMoveTokenWiseThroughEveryFileAndSwitchDeclarationDefinition() { TestActionsTestCase(singleAction(ActionPointer(new SwitchDeclarationDefinitionTokenAction))); } -void CppEditorPlugin::test_moveTokenWiseThroughEveryFileAndFindUsages() +void FileAndTokenActionsTest::testMoveTokenWiseThroughEveryFileAndFindUsages() { TestActionsTestCase(singleAction(ActionPointer(new FindUsagesTokenAction))); } -void CppEditorPlugin::test_moveTokenWiseThroughEveryFileAndRenameUsages() +void FileAndTokenActionsTest::testMoveTokenWiseThroughEveryFileAndRenameUsages() { TestActionsTestCase(singleAction(ActionPointer(new RenameSymbolUnderCursorTokenAction))); } -void CppEditorPlugin::test_moveTokenWiseThroughEveryFileAndOpenTypeHierarchy() +void FileAndTokenActionsTest::testMoveTokenWiseThroughEveryFileAndOpenTypeHierarchy() { TestActionsTestCase(singleAction(ActionPointer(new OpenTypeHierarchyTokenAction))); } -void CppEditorPlugin::test_moveTokenWiseThroughEveryFileAndInvokeCompletion() +void FileAndTokenActionsTest::testMoveTokenWiseThroughEveryFileAndInvokeCompletion() { TestActionsTestCase(singleAction(ActionPointer(new InvokeCompletionTokenAction))); } -void CppEditorPlugin::test_moveTokenWiseThroughEveryFileAndTriggerQuickFixes() +void FileAndTokenActionsTest::testMoveTokenWiseThroughEveryFileAndTriggerQuickFixes() { TestActionsTestCase(singleAction(ActionPointer(new RunAllQuickFixesTokenAction))); } -} // namespace Internal -} // namespace CppEditor +} // namespace CppEditor::Internal::Tests diff --git a/src/plugins/cppeditor/fileandtokenactions_test.h b/src/plugins/cppeditor/fileandtokenactions_test.h new file mode 100644 index 00000000000..6fd57503cd4 --- /dev/null +++ b/src/plugins/cppeditor/fileandtokenactions_test.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include + +namespace CppEditor::Internal::Tests { + +// These tests operate on a project and require special invocation: +// +// Ensure that the project is properly configured for a given settings path: +// $ ./qtcreator -settingspath /your/settings/path /path/to/project +// +// ...and that it builds, which might prevent blocking dialogs for not +// existing files (e.g. ui_*.h). +// +// Run the tests: +// $ export QTC_TEST_WAIT_FOR_LOADED_PROJECT=1 +// $ ./qtcreator -settingspath /your/settings/path -test CppEditor,FileAndTokenActionsTest /path/to/project +class FileAndTokenActionsTest : public QObject +{ + Q_OBJECT + +private slots: + void testOpenEachFile(); + void testSwitchHeaderSourceOnEachFile(); + void testMoveTokenWiseThroughEveryFile(); + void testMoveTokenWiseThroughEveryFileAndFollowSymbol(); + void testMoveTokenWiseThroughEveryFileAndSwitchDeclarationDefinition(); + void testMoveTokenWiseThroughEveryFileAndFindUsages(); + void testMoveTokenWiseThroughEveryFileAndRenameUsages(); + void testMoveTokenWiseThroughEveryFileAndOpenTypeHierarchy(); + void testMoveTokenWiseThroughEveryFileAndInvokeCompletion(); + void testMoveTokenWiseThroughEveryFileAndTriggerQuickFixes(); +}; + +} // namespace CppEditor::Internal::Tests diff --git a/src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.cpp b/src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.cpp index dd8c521a92d..1472c11bf1c 100644 --- a/src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.cpp +++ b/src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.cpp @@ -23,10 +23,12 @@ ** ****************************************************************************/ +#include "followsymbol_switchmethoddecldef_test.h" + #include "cppeditor.h" -#include "cppeditorwidget.h" #include "cppeditorplugin.h" #include "cppeditortestcase.h" +#include "cppeditorwidget.h" #include #include @@ -258,11 +260,21 @@ public: const QList &testFiles, OverrideItemList expectedVirtualFunctionProposal = OverrideItemList()); + ~F2TestCase() + { + CppTools::ClangdSettings::setUseClangd(m_prevUseClangd); + } + + static ProjectExplorer::Kit *m_testKit; private: static TestDocumentPtr testFileWithInitialCursorMarker(const QList &testFiles); static TestDocumentPtr testFileWithTargetCursorMarker(const QList &testFiles); + + const bool m_prevUseClangd; }; +ProjectExplorer::Kit *F2TestCase::m_testKit = nullptr; + /// Creates a test case with multiple test files. /// Exactly one test document must be provided that contains '@', the initial position marker. /// Exactly one test document must be provided that contains '$', the target position marker. @@ -270,10 +282,12 @@ private: F2TestCase::F2TestCase(CppEditorAction action, const QList &testFiles, OverrideItemList expectedVirtualFunctionProposal) + : m_prevUseClangd(CppTools::ClangdSettings::instance().useClangd()) { QVERIFY(succeededSoFar()); - setUseClangd(); + if (m_testKit) + CppTools::ClangdSettings::setUseClangd(true); // Check if there are initial and target position markers TestDocumentPtr initialTestFile = testFileWithInitialCursorMarker(testFiles); @@ -287,11 +301,11 @@ F2TestCase::F2TestCase(CppEditorAction action, const QString tag = QLatin1String(QTest::currentDataTag()); const bool useClangd = CppTools::ClangdSettings::instance().useClangd(); if (useClangd) { - if (curTestName == "test_FollowSymbolUnderCursor_QObject_connect" - || curTestName == "test_FollowSymbolUnderCursor_QObject_oldStyleConnect") { + if (curTestName == "testFollowSymbolQObjectConnect" + || curTestName == "testFollowSymbolQObjectOldStyleConnect") { QSKIP("TODO: Implement fall-back"); } - if (curTestName == "test_FollowSymbolUnderCursor_classOperator" && tag == "backward") + if (curTestName == "testFollowClassOperator" && tag == "backward") QSKIP("clangd goes to operator name first"); if (tag.toLower().contains("fuzzy")) QSKIP("fuzzy matching is not supposed to work with clangd"); // TODO: Implement fallback as we do with libclang @@ -301,7 +315,7 @@ F2TestCase::F2TestCase(CppEditorAction action, || tag == "fromDestructorBody") { QSKIP("clangd wants the cursor before the ~ character"); } - if (curTestName == "test_FollowSymbolUnderCursor_classOperator_inOp") + if (curTestName == "testFollowClassOperatorInOp") QSKIP("clangd goes to operator name first"); } @@ -335,8 +349,7 @@ F2TestCase::F2TestCase(CppEditorAction action, QVERIFY2(openProjectResult && openProjectResult.project(), qPrintable(openProjectResult.errorMessage())); projectCloser.setProject(openProjectResult.project()); - openProjectResult.project()->configureAsExampleProject( - CppEditorPlugin::instance()->m_testKit); + openProjectResult.project()->configureAsExampleProject(m_testKit); // Wait until project is fully indexed. QVERIFY(CppTools::Tests::waitForSignalOrTimeout(openProjectResult.project(), @@ -392,7 +405,7 @@ F2TestCase::F2TestCase(CppEditorAction action, FollowSymbolInterface &delegate = CppModelManager::instance()->followSymbolInterface(); auto* builtinFollowSymbol = dynamic_cast(&delegate); if (!builtinFollowSymbol) { - if (curTestName == "test_FollowSymbolUnderCursor_QTCREATORBUG7903") + if (curTestName == "testFollowSymbolQTCREATORBUG7903") QSKIP((curTestName + " is not supported by Clang FollowSymbol").toLatin1()); widget->inTestMode = true; widget->openLinkUnderCursor(); @@ -541,7 +554,7 @@ Q_DECLARE_METATYPE(QList) namespace CppEditor { namespace Internal { -void CppEditorPlugin::initTestCase() +void FollowSymbolTest::initTestCase() { const QString clangdFromEnv = qEnvironmentVariable("QTC_CLANGD"); if (clangdFromEnv.isEmpty()) @@ -552,14 +565,14 @@ void CppEditorPlugin::initTestCase() return; // Find suitable kit. - m_testKit = Utils::findOr(KitManager::kits(), nullptr, [](const Kit *k) { + F2TestCase::m_testKit = Utils::findOr(KitManager::kits(), nullptr, [](const Kit *k) { return k->isValid(); }); - if (!m_testKit) + if (!F2TestCase::m_testKit) QSKIP("This test requires at least one kit to be present"); } -void CppEditorPlugin::test_SwitchMethodDeclarationDefinition_data() +void FollowSymbolTest::testSwitchMethodDeclDef_data() { QTest::addColumn("header"); QTest::addColumn("source"); @@ -851,7 +864,7 @@ void CppEditorPlugin::test_SwitchMethodDeclarationDefinition_data() "Foo::@operator int() const { return {}; }\n"); } -void CppEditorPlugin::test_SwitchMethodDeclarationDefinition() +void FollowSymbolTest::testSwitchMethodDeclDef() { QFETCH(QByteArray, header); QFETCH(QByteArray, source); @@ -863,7 +876,7 @@ void CppEditorPlugin::test_SwitchMethodDeclarationDefinition() F2TestCase(F2TestCase::SwitchBetweenMethodDeclarationDefinitionAction, testFiles); } -void CppEditorPlugin::test_FollowSymbolUnderCursor_data() +void FollowSymbolTest::testFollowSymbol_data() { QTest::addColumn("source"); @@ -1308,13 +1321,13 @@ void CppEditorPlugin::test_FollowSymbolUnderCursor_data() ); } -void CppEditorPlugin::test_FollowSymbolUnderCursor() +void FollowSymbolTest::testFollowSymbol() { QFETCH(QByteArray, source); F2TestCase(F2TestCase::FollowSymbolUnderCursorAction, singleDocument(source)); } -void CppEditorPlugin::test_FollowSymbolUnderCursor_QTCREATORBUG7903_data() +void FollowSymbolTest::testFollowSymbolQTCREATORBUG7903_data() { QTest::addColumn("source"); QTest::newRow("using_QTCREATORBUG7903_globalNamespace") << _( @@ -1353,13 +1366,13 @@ void CppEditorPlugin::test_FollowSymbolUnderCursor_QTCREATORBUG7903_data() ); } -void CppEditorPlugin::test_FollowSymbolUnderCursor_QTCREATORBUG7903() +void FollowSymbolTest::testFollowSymbolQTCREATORBUG7903() { QFETCH(QByteArray, source); F2TestCase(F2TestCase::FollowSymbolUnderCursorAction, singleDocument(source)); } -void CppEditorPlugin::test_FollowSymbolUnderCursor_followCall_data() +void FollowSymbolTest::testFollowCall_data() { QTest::addColumn("variableDeclaration"); // without semicolon, can be "" QTest::addColumn("callArgument"); @@ -1398,7 +1411,7 @@ void CppEditorPlugin::test_FollowSymbolUnderCursor_followCall_data() << _("const Bar &"); } -void CppEditorPlugin::test_FollowSymbolUnderCursor_followCall() +void FollowSymbolTest::testFollowCall() { QFETCH(QByteArray, variableDeclaration); QFETCH(QByteArray, callArgument); @@ -1426,7 +1439,7 @@ void CppEditorPlugin::test_FollowSymbolUnderCursor_followCall() F2TestCase(F2TestCase::FollowSymbolUnderCursorAction, singleDocument(source)); } -void CppEditorPlugin::test_FollowSymbolUnderCursor_multipleDocuments_data() +void FollowSymbolTest::testFollowSymbolMultipleDocuments_data() { QTest::addColumn >("documents"); @@ -1537,13 +1550,13 @@ void CppEditorPlugin::test_FollowSymbolUnderCursor_multipleDocuments_data() "}\n", "file.cpp")}; } -void CppEditorPlugin::test_FollowSymbolUnderCursor_multipleDocuments() +void FollowSymbolTest::testFollowSymbolMultipleDocuments() { QFETCH(QList, documents); F2TestCase(F2TestCase::FollowSymbolUnderCursorAction, documents); } -void CppEditorPlugin::test_FollowSymbolUnderCursor_QObject_connect_data() +void FollowSymbolTest::testFollowSymbolQObjectConnect_data() { #define TAG(str) secondQObjectParam ? str : str ", no 2nd QObject" QTest::addColumn("start"); @@ -1595,7 +1608,7 @@ static void selectMarker(QByteArray *source, char marker, char number) } } -void CppEditorPlugin::test_FollowSymbolUnderCursor_QObject_connect() +void FollowSymbolTest::testFollowSymbolQObjectConnect() { QFETCH(char, start); QFETCH(char, target); @@ -1646,7 +1659,7 @@ void CppEditorPlugin::test_FollowSymbolUnderCursor_QObject_connect() F2TestCase(F2TestCase::FollowSymbolUnderCursorAction, singleDocument(source)); } -void CppEditorPlugin::test_FollowSymbolUnderCursor_QObject_oldStyleConnect() +void FollowSymbolTest::testFollowSymbolQObjectOldStyleConnect() { const QByteArray source = "class O : public QObject {\n" @@ -1666,14 +1679,14 @@ void CppEditorPlugin::test_FollowSymbolUnderCursor_QObject_oldStyleConnect() F2TestCase(F2TestCase::FollowSymbolUnderCursorAction, singleDocument(source)); } -void CppEditorPlugin::test_FollowSymbolUnderCursor_classOperator_onOperatorToken_data() +void FollowSymbolTest::testFollowClassOperatorOnOperatorToken_data() { QTest::addColumn("toDeclaration"); QTest::newRow("forward") << false; QTest::newRow("backward") << true; } -void CppEditorPlugin::test_FollowSymbolUnderCursor_classOperator_onOperatorToken() +void FollowSymbolTest::testFollowClassOperatorOnOperatorToken() { QFETCH(bool, toDeclaration); @@ -1689,12 +1702,12 @@ void CppEditorPlugin::test_FollowSymbolUnderCursor_classOperator_onOperatorToken F2TestCase(F2TestCase::FollowSymbolUnderCursorAction, singleDocument(source)); } -void CppEditorPlugin::test_FollowSymbolUnderCursor_classOperator_data() +void FollowSymbolTest::testFollowClassOperator_data() { - test_FollowSymbolUnderCursor_classOperator_onOperatorToken_data(); + testFollowClassOperatorOnOperatorToken_data(); } -void CppEditorPlugin::test_FollowSymbolUnderCursor_classOperator() +void FollowSymbolTest::testFollowClassOperator() { QFETCH(bool, toDeclaration); @@ -1714,12 +1727,12 @@ void CppEditorPlugin::test_FollowSymbolUnderCursor_classOperator() F2TestCase(F2TestCase::FollowSymbolUnderCursorAction, singleDocument(source)); } -void CppEditorPlugin::test_FollowSymbolUnderCursor_classOperator_inOp_data() +void FollowSymbolTest::testFollowClassOperatorInOp_data() { - test_FollowSymbolUnderCursor_classOperator_onOperatorToken_data(); + testFollowClassOperatorOnOperatorToken_data(); } -void CppEditorPlugin::test_FollowSymbolUnderCursor_classOperator_inOp() +void FollowSymbolTest::testFollowClassOperatorInOp() { QFETCH(bool, toDeclaration); @@ -1739,7 +1752,7 @@ void CppEditorPlugin::test_FollowSymbolUnderCursor_classOperator_inOp() F2TestCase(F2TestCase::FollowSymbolUnderCursorAction, singleDocument(source)); } -void CppEditorPlugin::test_FollowSymbolUnderCursor_virtualFunctionCall_data() +void FollowSymbolTest::testFollowVirtualFunctionCall_data() { QTest::addColumn("source"); QTest::addColumn("results"); @@ -2038,7 +2051,7 @@ void CppEditorPlugin::test_FollowSymbolUnderCursor_virtualFunctionCall_data() << OverrideItem(QLatin1String("Derived::virt"), 2)); } -void CppEditorPlugin::test_FollowSymbolUnderCursor_virtualFunctionCall() +void FollowSymbolTest::testFollowVirtualFunctionCall() { QFETCH(QByteArray, source); QFETCH(OverrideItemList, results); @@ -2047,7 +2060,7 @@ void CppEditorPlugin::test_FollowSymbolUnderCursor_virtualFunctionCall() } /// Check: Base classes can be found although these might be defined in distinct documents. -void CppEditorPlugin::test_FollowSymbolUnderCursor_virtualFunctionCall_multipleDocuments() +void FollowSymbolTest::testFollowVirtualFunctionCallMultipleDocuments() { QList testFiles = QList() << TestDocument::create("struct A { virtual void virt(int) = 0; };\n", diff --git a/src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.h b/src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.h new file mode 100644 index 00000000000..0fec2d8751d --- /dev/null +++ b/src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include + +// Can't use Tests namespace because someone had the clever idea to create two +// non-local TestDocument classes in this plugin. +namespace CppEditor::Internal { + +class FollowSymbolTest : public QObject +{ + Q_OBJECT + +private slots: + void initTestCase(); + + void testSwitchMethodDeclDef_data(); + void testSwitchMethodDeclDef(); + + void testFollowSymbolMultipleDocuments_data(); + void testFollowSymbolMultipleDocuments(); + + void testFollowSymbol_data(); + void testFollowSymbol(); + + void testFollowSymbolQTCREATORBUG7903_data(); + void testFollowSymbolQTCREATORBUG7903(); + + void testFollowCall_data(); + void testFollowCall(); + + void testFollowSymbolQObjectConnect_data(); + void testFollowSymbolQObjectConnect(); + void testFollowSymbolQObjectOldStyleConnect(); + + void testFollowClassOperatorOnOperatorToken_data(); + void testFollowClassOperatorOnOperatorToken(); + + void testFollowClassOperator_data(); + void testFollowClassOperator(); + + void testFollowClassOperatorInOp_data(); + void testFollowClassOperatorInOp(); + + void testFollowVirtualFunctionCall_data(); + void testFollowVirtualFunctionCall(); + void testFollowVirtualFunctionCallMultipleDocuments(); +}; + +} // namespace CppEditor::Internal