Browse Source

Support clearing the text in the PowerShell console by clicking the Clear button.

pull/15/head
Matt Ward 14 years ago
parent
commit
205488975c
  1. 1
      src/AddIns/BackendBindings/Scripting/Project/Src/IScriptingConsole.cs
  2. 5
      src/AddIns/BackendBindings/Scripting/Project/Src/IScriptingConsoleTextEditor.cs
  3. 5
      src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsole.cs
  4. 5
      src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsoleTextEditor.cs
  5. 10
      src/AddIns/BackendBindings/Scripting/Project/Src/ThreadSafeScriptingConsole.cs
  6. 12
      src/AddIns/BackendBindings/Scripting/Test/Console/ScriptingConsoleTextEditorTests.cs
  7. 11
      src/AddIns/BackendBindings/Scripting/Test/Console/ScriptingConsoleWriteTests.cs
  8. 24
      src/AddIns/BackendBindings/Scripting/Test/Console/ThreadSafeScriptingConsoleTests.cs
  9. 7
      src/AddIns/BackendBindings/Scripting/Test/Utils/FakeConsoleTextEditor.cs
  10. 6
      src/AddIns/BackendBindings/Scripting/Test/Utils/FakeScriptingConsole.cs
  11. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs
  12. 25
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs

1
src/AddIns/BackendBindings/Scripting/Project/Src/IScriptingConsole.cs

@ -11,6 +11,7 @@ namespace ICSharpCode.Scripting @@ -11,6 +11,7 @@ namespace ICSharpCode.Scripting
bool ScrollToEndWhenTextWritten { get; set; }
void Clear();
void SendLine(string line);
void SendText(string text);
void WriteLine();

5
src/AddIns/BackendBindings/Scripting/Project/Src/IScriptingConsoleTextEditor.cs

@ -28,6 +28,11 @@ namespace ICSharpCode.Scripting @@ -28,6 +28,11 @@ namespace ICSharpCode.Scripting
/// </summary>
void Append(string text);
/// <summary>
/// Clears all the text in the text editor.
/// </summary>
void Clear();
/// <summary>
/// Replaces the text at the specified index on the current line with the specified text.
/// </summary>

5
src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsole.cs

@ -357,5 +357,10 @@ namespace ICSharpCode.Scripting @@ -357,5 +357,10 @@ namespace ICSharpCode.Scripting
{
return textEditor.GetMaximumVisibleColumns();
}
public void Clear()
{
textEditor.Clear();
}
}
}

5
src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsoleTextEditor.cs

@ -183,5 +183,10 @@ namespace ICSharpCode.Scripting @@ -183,5 +183,10 @@ namespace ICSharpCode.Scripting
textEditor.FontWeight,
textEditor.FontStretch);
}
public void Clear()
{
textEditor.Clear();
}
}
}

10
src/AddIns/BackendBindings/Scripting/Project/Src/ThreadSafeScriptingConsole.cs

@ -144,5 +144,15 @@ namespace ICSharpCode.Scripting @@ -144,5 +144,15 @@ namespace ICSharpCode.Scripting
return (int)dispatcher.Invoke(action);
}
}
public void Clear()
{
if (dispatcher.CheckAccess()) {
nonThreadSafeScriptingConsole.Clear();
} else {
Action action = Clear;
dispatcher.Invoke(action);
}
}
}
}

12
src/AddIns/BackendBindings/Scripting/Test/Console/ScriptingConsoleTextEditorTests.cs

@ -188,5 +188,17 @@ namespace ICSharpCode.Scripting.Tests.Console @@ -188,5 +188,17 @@ namespace ICSharpCode.Scripting.Tests.Console
Assert.AreEqual(expectedText, text);
}
[Test]
public void Clear_TextEditorHasText_RemovesAllTextFromTextEditor()
{
avalonEditTextEditor.Text = "abc";
consoleTextEditor.Clear();
string text = avalonEditTextEditor.Text;
string expectedText = String.Empty;
Assert.AreEqual(expectedText, text);
}
}
}

11
src/AddIns/BackendBindings/Scripting/Test/Console/ScriptingConsoleWriteTests.cs

@ -83,5 +83,16 @@ namespace ICSharpCode.Scripting.Tests.Console @@ -83,5 +83,16 @@ namespace ICSharpCode.Scripting.Tests.Console
{
Assert.IsTrue(TestableScriptingConsole.ScrollToEndWhenTextWritten);
}
[Test]
public void Clear_TextEditorHasText_RemovesAllText()
{
TestableScriptingConsole.Write("a", ScriptingStyle.Prompt);
TestableScriptingConsole.Clear();
bool cleared = FakeConsoleTextEditor.IsClearCalled;
Assert.IsTrue(cleared);
}
}
}

24
src/AddIns/BackendBindings/Scripting/Test/Console/ThreadSafeScriptingConsoleTests.cs

@ -410,5 +410,29 @@ namespace ICSharpCode.Scripting.Tests.Console @@ -410,5 +410,29 @@ namespace ICSharpCode.Scripting.Tests.Console
Assert.AreEqual(10, columns);
}
[Test]
public void Clear_DispatcherCheckAccessReturnsTrue_NonThreadSafeScriptingConsoleClearMethodIsCalled()
{
CreateThreadSafeScriptingConsole();
dispatcher.CheckAccessReturnValue = true;
threadSafeConsole.Clear();
Assert.IsTrue(nonThreadSafeScriptingConsole.IsClearCalled);
}
[Test]
public void Clear_DispatcherCheckAccessReturnsFalse_MethodIsInvoked()
{
CreateThreadSafeScriptingConsole();
dispatcher.CheckAccessReturnValue = false;
dispatcher.MethodInvoked = null;
threadSafeConsole.Clear();
Assert.IsNotNull(dispatcher.MethodInvoked);
}
}
}

7
src/AddIns/BackendBindings/Scripting/Test/Utils/FakeConsoleTextEditor.cs

@ -207,5 +207,12 @@ namespace ICSharpCode.Scripting.Tests.Utils @@ -207,5 +207,12 @@ namespace ICSharpCode.Scripting.Tests.Utils
{
return MaximumVisibleColumns;
}
public bool IsClearCalled;
public void Clear()
{
IsClearCalled = true;
}
}
}

6
src/AddIns/BackendBindings/Scripting/Test/Utils/FakeScriptingConsole.cs

@ -25,6 +25,7 @@ namespace ICSharpCode.Scripting.Tests.Utils @@ -25,6 +25,7 @@ namespace ICSharpCode.Scripting.Tests.Utils
public bool IsReadLineCalled;
public bool IsDisposeCalled;
public int MaximumVisibleColumns;
public bool IsClearCalled;
public string LastLinePassedToWriteLine {
get { return AllTextPassedToWriteLine[AllTextPassedToWriteLine.Count - 1]; }
@ -90,5 +91,10 @@ namespace ICSharpCode.Scripting.Tests.Utils @@ -90,5 +91,10 @@ namespace ICSharpCode.Scripting.Tests.Utils
{
return MaximumVisibleColumns;
}
public void Clear()
{
IsClearCalled = true;
}
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs

@ -69,6 +69,8 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -69,6 +69,8 @@ namespace ICSharpCode.PackageManagement.Scripting
public void Clear()
{
ScriptingConsole.Clear();
WritePrompt();
}
public void Run()

25
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs

@ -384,7 +384,7 @@ namespace PackageManagement.Tests.Scripting @@ -384,7 +384,7 @@ namespace PackageManagement.Tests.Scripting
}
[Test]
public void ActivePackageSource_ActivePackageSourcechanged_RegisteredPackageSourcesActivePackageSourceIsUpdated()
public void ActivePackageSource_ActivePackageSourceChanged_RegisteredPackageSourcesActivePackageSourceIsUpdated()
{
CreateHost();
var expectedPackageSource = new PackageSource("Test");
@ -394,5 +394,28 @@ namespace PackageManagement.Tests.Scripting @@ -394,5 +394,28 @@ namespace PackageManagement.Tests.Scripting
Assert.AreEqual(expectedPackageSource, actualPackageSource);
}
[Test]
public void Clear_ConsoleWindowHasOutputText_ScriptingConsoleIsCleared()
{
CreateHost();
host.Clear();
bool cleared = scriptingConsole.IsClearCalled;
Assert.IsTrue(cleared);
}
[Test]
public void Clear_ConsoleWindowHasOutputText_PromptWritten()
{
CreateHost();
host.Clear();
var expectedTextPassedToWrite = new String[] { "PM> "};
var actualTextPassedToWrite = scriptingConsole.AllTextPassedToWrite;
CollectionAssert.AreEqual(expectedTextPassedToWrite, actualTextPassedToWrite);
}
}
}

Loading…
Cancel
Save