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