1 /* 2 SPDX-FileCopyrightText: 2011-2012 Sven Brauch <svenbrauch@googlemail.com> 3 4 SPDX-License-Identifier: GPL-2.0-or-later 5 */ 6 7 #ifndef PYCOMPLETIONTEST_H 8 #define PYCOMPLETIONTEST_H 9 10 #include <QObject> 11 12 #include <language/editor/cursorinrevision.h> 13 #include <language/codecompletion/codecompletioncontext.h> 14 15 #include "codecompletion/model.h" 16 17 using namespace KDevelop; 18 19 namespace Python { 20 21 struct CompletionParameters { 22 DUContextPointer contextAtCursor; 23 QString snip; 24 QString remaining; 25 CursorInRevision cursorAt; 26 }; 27 28 class PyCompletionTest : public QObject 29 { 30 Q_OBJECT 31 public: 32 explicit PyCompletionTest(QObject* parent = nullptr); 33 void initShell(); 34 35 const QList<CompletionTreeItem*> invokeCompletionOn(const QString& initCode, const QString& invokeCode); 36 const CompletionParameters prepareCompletion(const QString& initCode, const QString& invokeCode); 37 const QList<CompletionTreeItem*> runCompletion(const CompletionParameters data); 38 39 bool containsItemForDeclarationNamed(const QList< CompletionTreeItem* > items, QString itemName); 40 // convenience function 41 bool declarationInCompletionList(const QString& initCode, const QString& invokeCode, QString itemName); 42 // convenience function 43 bool completionListIsEmpty(const QString& initCode, const QString& invokeCode); 44 // convenience function 45 bool containsItemStartingWith(const QList< CompletionTreeItem* > items, const QString& itemName); 46 // convenience function 47 bool itemInCompletionList(const QString& initCode, const QString& invokeCode, QString itemName); 48 49 private slots: 50 void testIntegralTypesImmediate(); 51 void testIntegralTypesImmediate_data(); 52 void testIntegralExpressionsDifferentContexts(); 53 void testIntegralExpressionsDifferentContexts_data(); 54 void testNoCompletionInCommentsOrStrings(); 55 void testNoCompletionInCommentsOrStrings_data(); 56 void testImplementMethodCompletion(); 57 void testImplementMethodCompletion_data(); 58 void testExceptionCompletion(); 59 void testGeneratorCompletion(); 60 void testInheritanceCompletion(); 61 void testImportCompletion(); 62 void testImportCompletion_data(); 63 void testNoImplicitMagicFunctions(); 64 void testExpressionParser(); 65 void testExpressionParser_data(); 66 void testExpressionParserMisc(); 67 void testCompletionAfterQuotes(); 68 void testCompletionAfterQuotes_data(); 69 void testIgnoreCommentSignsInStringLiterals(); 70 void testIdentifierMatching(); 71 void testAutoBrackets(); 72 void testAddImportCompletion(); 73 void testAddImportCompletion_data(); 74 void testFunctionDeclarationCompletion(); 75 void testFunctionDeclarationCompletion_data(); 76 void testCompletionScopes(); 77 void testCompletionScopes_data(); 78 void testStringFormattingCompletion(); 79 void testStringFormattingCompletion_data(); 80 void testStringFormatter(); 81 void testStringFormatter_data(); 82 // benchmarks 83 void completionBenchTest(); 84 void completionBenchTest_data(); 85 private: 86 QList<CompletionTreeItemPointer> m_ptrs; 87 88 }; 89 90 } 91 #endif 92