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 @@ -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)
{
return new string[0];
@ -329,16 +339,11 @@ namespace ICSharpCode.Scripting @@ -329,16 +339,11 @@ namespace ICSharpCode.Scripting
void WriteFirstLineOfTextIfFirstPromptHasBeenDisplayed(string text)
{
List<string> lines = GetLines(text);
string firstLine = GetFirstLineOfText(lines);
if (lines.Count > 1) {
AddAllLinesButLastToUnreadLines(lines);
FireLineReceivedEvent();
}
lines.RemoveAt(0);
savedTextLines = lines;
WriteTextIfFirstPromptHasBeenDisplayed(firstLine);
WriteFirstLineIfFirstPromptHasBeenDisplayed(lines);
}
List<string> GetLines(string text)

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

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System;
using ICSharpCode.NRefactory;
using ICSharpCode.Scripting;
using ICSharpCode.Scripting.Tests.Utils;
using NUnit.Framework;
namespace ICSharpCode.Scripting.Tests.Console
@ -65,12 +66,30 @@ namespace ICSharpCode.Scripting.Tests.Console @@ -65,12 +66,30 @@ namespace ICSharpCode.Scripting.Tests.Console
TestableScriptingConsole.SendText("test");
TestableScriptingConsole.Write(">>> ", ScriptingStyle.Prompt);
string text = FakeConsoleTextEditor.Text;
string text = FakeConsoleTextEditor.TextPassedToWrite;
string expectedText = ">>> test";
string expectedText = "test";
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]
public void SendText_TwoLinesSelected_FirstLineOfTextWrittenToTextEditor()
{

Loading…
Cancel
Save