Browse Source

Fix problem with lines not being sent to scripting console when console not currently open.

pull/1/head
mrward 15 years ago
parent
commit
5dbdd6ad30
  1. 17
      src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsole.cs
  2. 23
      src/AddIns/BackendBindings/Scripting/Test/Console/ScriptingConsoleSendTextTests.cs

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

@ -310,6 +310,16 @@ namespace ICSharpCode.Scripting
} }
} }
void WriteFirstLineIfFirstPromptHasBeenDisplayed(List<string> lines)
{
string firstLine = GetFirstLineOfText(lines);
if (firstPromptDisplayed) {
Write(firstLine, ScriptingStyle.Out);
lines.RemoveAt(0);
}
savedTextLines = lines;
}
public virtual IList<string> GetMemberNames(string name) public virtual IList<string> GetMemberNames(string name)
{ {
return new string[0]; return new string[0];
@ -329,16 +339,11 @@ namespace ICSharpCode.Scripting
void WriteFirstLineOfTextIfFirstPromptHasBeenDisplayed(string text) void WriteFirstLineOfTextIfFirstPromptHasBeenDisplayed(string text)
{ {
List<string> lines = GetLines(text); List<string> lines = GetLines(text);
string firstLine = GetFirstLineOfText(lines);
if (lines.Count > 1) { if (lines.Count > 1) {
AddAllLinesButLastToUnreadLines(lines); AddAllLinesButLastToUnreadLines(lines);
FireLineReceivedEvent(); FireLineReceivedEvent();
} }
lines.RemoveAt(0); WriteFirstLineIfFirstPromptHasBeenDisplayed(lines);
savedTextLines = lines;
WriteTextIfFirstPromptHasBeenDisplayed(firstLine);
} }
List<string> GetLines(string text) List<string> GetLines(string text)

23
src/AddIns/BackendBindings/Scripting/Test/Console/ScriptingConsoleSendTextTests.cs

@ -4,6 +4,7 @@
using System; using System;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.Scripting; using ICSharpCode.Scripting;
using ICSharpCode.Scripting.Tests.Utils;
using NUnit.Framework; using NUnit.Framework;
namespace ICSharpCode.Scripting.Tests.Console namespace ICSharpCode.Scripting.Tests.Console
@ -65,12 +66,30 @@ namespace ICSharpCode.Scripting.Tests.Console
TestableScriptingConsole.SendText("test"); TestableScriptingConsole.SendText("test");
TestableScriptingConsole.Write(">>> ", ScriptingStyle.Prompt); TestableScriptingConsole.Write(">>> ", ScriptingStyle.Prompt);
string text = FakeConsoleTextEditor.Text; string text = FakeConsoleTextEditor.TextPassedToWrite;
string expectedText = ">>> test"; string expectedText = "test";
Assert.AreEqual(expectedText, text); Assert.AreEqual(expectedText, text);
} }
[Test]
public void Write_SendTextCalledWithTwoLinesButNoPromptWrittenAndWriteCalledTwice_WritesOutSecondLineOfSavedText()
{
base.CreateConsole();
string text =
"first\r\n" +
"second";
TestableScriptingConsole.SendText(text);
TestableScriptingConsole.Write(">>> ", ScriptingStyle.Prompt);
TestableScriptingConsole.Write(">>> ", ScriptingStyle.Prompt);
string textPassedToWrite = FakeConsoleTextEditor.TextPassedToWrite;
string expectedText = "second";
Assert.AreEqual(expectedText, textPassedToWrite);
}
[Test] [Test]
public void SendText_TwoLinesSelected_FirstLineOfTextWrittenToTextEditor() public void SendText_TwoLinesSelected_FirstLineOfTextWrittenToTextEditor()
{ {

Loading…
Cancel
Save