Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'main/tests/UnitTests/MonoDevelop.Ide.Gui/CompletionListWindowTests.cs')
-rw-r--r--main/tests/UnitTests/MonoDevelop.Ide.Gui/CompletionListWindowTests.cs162
1 files changed, 139 insertions, 23 deletions
diff --git a/main/tests/UnitTests/MonoDevelop.Ide.Gui/CompletionListWindowTests.cs b/main/tests/UnitTests/MonoDevelop.Ide.Gui/CompletionListWindowTests.cs
index 61647513d5..ad079d75f4 100644
--- a/main/tests/UnitTests/MonoDevelop.Ide.Gui/CompletionListWindowTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Ide.Gui/CompletionListWindowTests.cs
@@ -32,6 +32,7 @@ using MonoDevelop.Projects;
using MonoDevelop.Core;
using MonoDevelop.Ide.CodeCompletion;
using MonoDevelop.Ide.Gui.Content;
+using MonoDevelop.Ide.Editor.Extension;
namespace MonoDevelop.Ide.Gui
{
@@ -92,6 +93,9 @@ namespace MonoDevelop.Ide.Gui
get {
return sb.Length;
}
+ set {
+ throw new NotSupportedException ();
+ }
}
public int TextLength {
@@ -111,6 +115,17 @@ namespace MonoDevelop.Ide.Gui
return null;
}
}
+
+ double ICompletionWidget.ZoomLevel {
+ get {
+ return 1;
+ }
+ }
+
+ void ICompletionWidget.AddSkipChar (int cursorPosition, char c)
+ {
+ // ignore
+ }
#endregion
public void AddChar (char ch)
{
@@ -125,43 +140,51 @@ namespace MonoDevelop.Ide.Gui
static void SimulateInput (CompletionListWindow listWindow, string input)
{
+ var testCompletionWidget = ((TestCompletionWidget)listWindow.CompletionWidget);
+ bool isClosed = false;
+ listWindow.WindowClosed += delegate {
+ isClosed = true;
+ };
foreach (char ch in input) {
switch (ch) {
case '8':
- listWindow.PreProcessKeyEvent (Gdk.Key.Up, '\0', Gdk.ModifierType.None);
- listWindow.PostProcessKeyEvent (Gdk.Key.Up, '\0', Gdk.ModifierType.None);
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Up, '\0', Gdk.ModifierType.None));
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Up, '\0', Gdk.ModifierType.None));
break;
case '2':
- listWindow.PreProcessKeyEvent (Gdk.Key.Down, '\0', Gdk.ModifierType.None);
- listWindow.PostProcessKeyEvent (Gdk.Key.Down, '\0', Gdk.ModifierType.None);
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Down, '\0', Gdk.ModifierType.None));
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Down, '\0', Gdk.ModifierType.None));
break;
case '4':
- listWindow.PreProcessKeyEvent (Gdk.Key.Left, '\0', Gdk.ModifierType.None);
- listWindow.PostProcessKeyEvent (Gdk.Key.Left, '\0', Gdk.ModifierType.None);
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Left, '\0', Gdk.ModifierType.None));
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Left, '\0', Gdk.ModifierType.None));
break;
case '6':
- listWindow.PreProcessKeyEvent (Gdk.Key.Right, '\0', Gdk.ModifierType.None);
- listWindow.PostProcessKeyEvent (Gdk.Key.Right, '\0', Gdk.ModifierType.None);
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Right, '\0', Gdk.ModifierType.None));
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Right, '\0', Gdk.ModifierType.None));
break;
case '\t':
- listWindow.PreProcessKeyEvent (Gdk.Key.Tab, '\t', Gdk.ModifierType.None);
- listWindow.PostProcessKeyEvent (Gdk.Key.Tab, '\t', Gdk.ModifierType.None);
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Tab, '\t', Gdk.ModifierType.None));
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Tab, '\t', Gdk.ModifierType.None));
break;
case '\b':
- listWindow.PreProcessKeyEvent (Gdk.Key.BackSpace, '\b', Gdk.ModifierType.None);
- ((TestCompletionWidget)listWindow.CompletionWidget).Backspace ();
- listWindow.PostProcessKeyEvent (Gdk.Key.BackSpace, '\b', Gdk.ModifierType.None);
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.BackSpace, '\b', Gdk.ModifierType.None));
+ testCompletionWidget.Backspace ();
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.BackSpace, '\b', Gdk.ModifierType.None));
break;
case '\n':
- listWindow.PreProcessKeyEvent (Gdk.Key.Return, '\n', Gdk.ModifierType.None);
- listWindow.PostProcessKeyEvent (Gdk.Key.Return, '\n', Gdk.ModifierType.None);
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Return, '\n', Gdk.ModifierType.None));
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Return, '\n', Gdk.ModifierType.None));
break;
default:
- listWindow.PreProcessKeyEvent ((Gdk.Key)ch, ch, Gdk.ModifierType.None);
- ((TestCompletionWidget)listWindow.CompletionWidget).AddChar (ch);
- listWindow.PostProcessKeyEvent ((Gdk.Key)ch, ch, Gdk.ModifierType.None);
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk ((Gdk.Key)ch, ch, Gdk.ModifierType.None));
+ testCompletionWidget.AddChar (ch);
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk ((Gdk.Key)ch, ch, Gdk.ModifierType.None));
break;
}
+ // window closed.
+ if (isClosed)
+ break;
}
}
@@ -194,8 +217,9 @@ namespace MonoDevelop.Ide.Gui
static string RunSimulation (SimulationSettings settings)
{
CompletionListWindow listWindow = CreateListWindow (settings);
+ var testCompletionWidget = (TestCompletionWidget)listWindow.CompletionWidget;
SimulateInput (listWindow, settings.SimulatedInput);
- return ((TestCompletionWidget)listWindow.CompletionWidget).CompletedWord;
+ return testCompletionWidget.CompletedWord;
}
static CompletionListWindow CreateListWindow (CompletionListWindowTests.SimulationSettings settings)
@@ -204,7 +228,6 @@ namespace MonoDevelop.Ide.Gui
dataList.AutoSelect = settings.AutoSelect;
dataList.AddRange (settings.CompletionData);
dataList.DefaultCompletionString = settings.DefaultCompletionString;
- ListWindow.ClearHistory ();
CompletionListWindow listWindow = new CompletionListWindow () {
CompletionDataList = dataList,
CompletionWidget = new TestCompletionWidget (),
@@ -480,7 +503,6 @@ namespace MonoDevelop.Ide.Gui
Assert.AreEqual ("/AbAb", output);
}
- [Ignore("Behavior was changed - commit with '.' now works everytime")]
[Test]
public void TestMatchPunctuationCommitOnSpaceAndPunctuation3 ()
{
@@ -591,8 +613,8 @@ namespace MonoDevelop.Ide.Gui
[Test]
public void TestBug543984 ()
{
- string output = RunSimulation ("", "foo b\n", true, true, false, "foo bar", "foo bar baz");
- Assert.AreEqual ("foo bar", output);
+ string output = RunSimulation ("", "foo#b\n", true, true, false, "foo#bar", "foo#bar#baz");
+ Assert.AreEqual ("foo#bar", output);
}
[Test]
@@ -817,6 +839,100 @@ namespace MonoDevelop.Ide.Gui
Assert.AreEqual ("d", output);
}
+ [Test]
+ public void TestSpaceCommits ()
+ {
+ string output = RunSimulation ("", "over ", true, true,
+ "override",
+ "override foo");
+
+ Assert.AreEqual ("override", output);
+ }
+
+
+
+ [Test]
+ public void TestNumberInput ()
+ {
+ string output = RunSimulation ("", "1.", true, true, false, "foo1");
+ Assert.IsTrue (string.IsNullOrEmpty (output), "output was " + output);
+ }
+
+ static void ContinueSimulation (CompletionListWindow listWindow, ICompletionDataList list, ref TestCompletionWidget testCompletionWidget, string simulatedInput)
+ {
+ listWindow.ResetState ();
+ listWindow.CodeCompletionContext = new CodeCompletionContext ();
+ listWindow.CompletionDataList = list;
+ listWindow.CompletionWidget = testCompletionWidget = new TestCompletionWidget ();
+ listWindow.List.FilterWords ();
+ listWindow.ResetSizes ();
+ listWindow.UpdateWordSelection ();
+ SimulateInput (listWindow, simulatedInput);
+ listWindow.CompleteWord ();
+ }
+
+ [Test]
+ public void TestMruSimpleLastItem ()
+ {
+ var settings = new SimulationSettings () {
+ AutoSelect = true,
+ CompleteWithSpaceOrPunctuation = true,
+ AutoCompleteEmptyMatch = true,
+ CompletionData = new[] { "FooBar1", "Bar", "FooFoo2"}
+ };
+
+ var listWindow = CreateListWindow (settings);
+ var list = listWindow.CompletionDataList;
+ var testCompletionWidget = (TestCompletionWidget)listWindow.CompletionWidget;
+
+ SimulateInput (listWindow, "FooBar\t");
+ Assert.AreEqual ("FooBar1", testCompletionWidget.CompletedWord);
+
+ ContinueSimulation (listWindow, list, ref testCompletionWidget, "FooFoo\t");
+ Assert.AreEqual ("FooFoo2", testCompletionWidget.CompletedWord);
+
+ ContinueSimulation (listWindow, list, ref testCompletionWidget, "F\t");
+ Assert.AreEqual ("FooFoo2", testCompletionWidget.CompletedWord);
+ }
+
+ [Test]
+ public void TestMruEmptyMatch ()
+ {
+ var settings = new SimulationSettings () {
+ AutoSelect = true,
+ CompleteWithSpaceOrPunctuation = true,
+ AutoCompleteEmptyMatch = true,
+ CompletionData = new[] { "Foo", "Bar", "Test"}
+ };
+
+ var listWindow = CreateListWindow (settings);
+ var list = listWindow.CompletionDataList;
+ var testCompletionWidget = (TestCompletionWidget)listWindow.CompletionWidget;
+ SimulateInput (listWindow, "Foo\t");
+ ContinueSimulation (listWindow, list, ref testCompletionWidget, "F\t");
+ Assert.AreEqual ("Foo", testCompletionWidget.CompletedWord);
+
+ ContinueSimulation (listWindow, list, ref testCompletionWidget, "Bar\t");
+ Assert.AreEqual ("Bar", testCompletionWidget.CompletedWord);
+
+ ContinueSimulation (listWindow, list, ref testCompletionWidget, "\t");
+ Assert.AreEqual ("Bar", testCompletionWidget.CompletedWord);
+ }
+
+ [Test]
+ public void TestCloseWithPunctiation ()
+ {
+ var output = RunSimulation ("", "\"\t", true, true, false, punctuationData);
+ Assert.AreEqual (null, output);
+ }
+
+ [Test]
+ public void TestPreference ()
+ {
+ string output = RunSimulation ("", "expr\t", true, true, false, "expression", "PostfixExpressionStatementSyntax");
+ Assert.AreEqual ("expression", output);
+ }
+
[TestFixtureSetUp]
public void SetUp()