1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
5
using ICSharpCode.PythonBinding;
6
using ICSharpCode.Scripting.Tests.Utils;
7
using ICSharpCode.SharpDevelop.Editor;
9
using PythonBinding.Tests.Utils;
11
namespace PythonBinding.Tests.Completion
14
public class PythonInsightWindowHandlerTests
16
PythonInsightWindowHandler handler;
17
MockTextEditor fakeTextEditor;
18
FakeInsightWindow fakeInsightWindow;
20
void CreatePythonInsightWindowHandler()
22
fakeTextEditor = new MockTextEditor();
23
fakeInsightWindow = new FakeInsightWindow();
24
handler = new PythonInsightWindowHandler();
27
void InitializePythonInsightWindowHandler()
29
handler.InitializeOpenedInsightWindow(fakeTextEditor, fakeInsightWindow);
32
TextChangeEventArgs CreateInsertedTextChangeEventArgs(int offset, string insertedText)
34
return new TextChangeEventArgs(offset, String.Empty, insertedText);
38
public void InitializeOpenedInsightWindow_CloseParenthesisCharacterAddedToDocument_InsightWindowClosed()
40
CreatePythonInsightWindowHandler();
41
fakeTextEditor.FakeDocument.Text = "method(";
42
fakeTextEditor.FakeCaret.Offset = 7;
43
fakeInsightWindow.StartOffset = 7;
44
InitializePythonInsightWindowHandler();
46
int newCaretOffset = 8;
47
fakeTextEditor.FakeCaret.Offset = newCaretOffset;
48
fakeTextEditor.FakeDocument.Text = "method()";
49
TextChangeEventArgs e = CreateInsertedTextChangeEventArgs(newCaretOffset, ")");
50
fakeInsightWindow.FireDocumentChangedEvent(e);
52
bool closed = fakeInsightWindow.IsClosed;
53
Assert.IsTrue(closed);
57
public void InitializeOpenedInsightWindow_MethodCallWithCursorAtOpenBracket_InsightWindowIsClosedBeforeDocumentIsChanged()
59
CreatePythonInsightWindowHandler();
60
fakeTextEditor.FakeDocument.Text = "method(";
61
fakeTextEditor.FakeCaret.Offset = 7;
62
fakeInsightWindow.StartOffset = 7;
63
InitializePythonInsightWindowHandler();
65
bool closed = fakeInsightWindow.IsClosed;
66
Assert.IsFalse(closed);
70
public void InitializeOpenedInsightWindow_SingleCharacterAddedToDocumentAfterOpenParenthesis_InsightWindowIsNotClosed()
72
CreatePythonInsightWindowHandler();
73
fakeTextEditor.FakeDocument.Text = "method(";
74
fakeTextEditor.FakeCaret.Offset = 7;
75
fakeInsightWindow.StartOffset = 7;
76
InitializePythonInsightWindowHandler();
78
int newCaretOffset = 8;
79
fakeTextEditor.FakeCaret.Offset = newCaretOffset;
80
fakeTextEditor.FakeDocument.Text = "method(a";
81
TextChangeEventArgs e = CreateInsertedTextChangeEventArgs(newCaretOffset, "a");
82
fakeInsightWindow.FireDocumentChangedEvent(e);
84
bool closed = fakeInsightWindow.IsClosed;
85
Assert.IsFalse(closed);
89
public void InitializeOpenedInsightWindow_MethodCallInsideMethodCallAndCloseParenthesisCharacterAddedToDocument_InsightWindowIsNotClosed()
91
CreatePythonInsightWindowHandler();
92
fakeTextEditor.FakeDocument.Text = "method(a(";
93
fakeTextEditor.FakeCaret.Offset = 9;
94
fakeInsightWindow.StartOffset = 7;
95
InitializePythonInsightWindowHandler();
97
int newCaretOffset = 10;
98
fakeTextEditor.FakeCaret.Offset = newCaretOffset;
99
fakeTextEditor.FakeDocument.Text = "method(a()";
100
TextChangeEventArgs e = CreateInsertedTextChangeEventArgs(newCaretOffset, ")");
101
fakeInsightWindow.FireDocumentChangedEvent(e);
103
bool closed = fakeInsightWindow.IsClosed;
104
Assert.IsFalse(closed);
108
public void InitializeOpenedInsightWindow_CharacterAddedToDocumentBeforeStartOfInsightWindow_InsightWindowClosed()
110
CreatePythonInsightWindowHandler();
111
fakeTextEditor.FakeDocument.Text = "method(";
112
fakeTextEditor.FakeCaret.Offset = 7;
113
fakeInsightWindow.StartOffset = 7;
114
InitializePythonInsightWindowHandler();
116
int newCaretOffset = 1;
117
fakeTextEditor.FakeCaret.Offset = newCaretOffset;
118
fakeTextEditor.FakeDocument.Text = "aethod(";
119
TextChangeEventArgs e = CreateInsertedTextChangeEventArgs(newCaretOffset, "a");
120
fakeInsightWindow.FireDocumentChangedEvent(e);
122
bool closed = fakeInsightWindow.IsClosed;
123
Assert.IsTrue(closed);