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