File indexing completed on 2024-05-19 15:41:38
0001 /* 0002 SPDX-FileCopyrightText: 2011-2012 Sven Brauch <svenbrauch@googlemail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef PYCOMPLETIONTEST_H 0008 #define PYCOMPLETIONTEST_H 0009 0010 #include <QObject> 0011 0012 #include <language/editor/cursorinrevision.h> 0013 #include <language/codecompletion/codecompletioncontext.h> 0014 0015 #include "codecompletion/model.h" 0016 0017 using namespace KDevelop; 0018 0019 namespace Python { 0020 0021 struct CompletionParameters { 0022 DUContextPointer contextAtCursor; 0023 QString snip; 0024 QString remaining; 0025 CursorInRevision cursorAt; 0026 }; 0027 0028 class PyCompletionTest : public QObject 0029 { 0030 Q_OBJECT 0031 public: 0032 explicit PyCompletionTest(QObject* parent = nullptr); 0033 void initShell(); 0034 0035 const QList<CompletionTreeItem*> invokeCompletionOn(const QString& initCode, const QString& invokeCode); 0036 const CompletionParameters prepareCompletion(const QString& initCode, const QString& invokeCode); 0037 const QList<CompletionTreeItem*> runCompletion(const CompletionParameters data); 0038 0039 bool containsItemForDeclarationNamed(const QList< CompletionTreeItem* > items, QString itemName); 0040 // convenience function 0041 bool declarationInCompletionList(const QString& initCode, const QString& invokeCode, QString itemName); 0042 // convenience function 0043 bool completionListIsEmpty(const QString& initCode, const QString& invokeCode); 0044 // convenience function 0045 bool containsItemStartingWith(const QList< CompletionTreeItem* > items, const QString& itemName); 0046 // convenience function 0047 bool itemInCompletionList(const QString& initCode, const QString& invokeCode, QString itemName); 0048 0049 private slots: 0050 void testIntegralTypesImmediate(); 0051 void testIntegralTypesImmediate_data(); 0052 void testIntegralExpressionsDifferentContexts(); 0053 void testIntegralExpressionsDifferentContexts_data(); 0054 void testNoCompletionInCommentsOrStrings(); 0055 void testNoCompletionInCommentsOrStrings_data(); 0056 void testImplementMethodCompletion(); 0057 void testImplementMethodCompletion_data(); 0058 void testExceptionCompletion(); 0059 void testGeneratorCompletion(); 0060 void testInheritanceCompletion(); 0061 void testImportCompletion(); 0062 void testImportCompletion_data(); 0063 void testNoImplicitMagicFunctions(); 0064 void testExpressionParser(); 0065 void testExpressionParser_data(); 0066 void testExpressionParserMisc(); 0067 void testCompletionAfterQuotes(); 0068 void testCompletionAfterQuotes_data(); 0069 void testIgnoreCommentSignsInStringLiterals(); 0070 void testIdentifierMatching(); 0071 void testAutoBrackets(); 0072 void testAddImportCompletion(); 0073 void testAddImportCompletion_data(); 0074 void testFunctionDeclarationCompletion(); 0075 void testFunctionDeclarationCompletion_data(); 0076 void testCompletionScopes(); 0077 void testCompletionScopes_data(); 0078 void testStringFormattingCompletion(); 0079 void testStringFormattingCompletion_data(); 0080 void testStringFormatter(); 0081 void testStringFormatter_data(); 0082 // benchmarks 0083 void completionBenchTest(); 0084 void completionBenchTest_data(); 0085 private: 0086 QList<CompletionTreeItemPointer> m_ptrs; 0087 0088 }; 0089 0090 } 0091 #endif