You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
169 lines
4.6 KiB
169 lines
4.6 KiB
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) |
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) |
|
|
|
using System; |
|
using System.Collections.Generic; |
|
using ICSharpCode.NRefactory; |
|
using ICSharpCode.Scripting; |
|
using ICSharpCode.Scripting.Tests.Utils; |
|
using NUnit.Framework; |
|
|
|
namespace ICSharpCode.Scripting.Tests.Console |
|
{ |
|
[TestFixture] |
|
public class ScriptingConsoleSendLineTests : ScriptingConsoleTestsBase |
|
{ |
|
[Test] |
|
public void SendLine_NoUnreadLines_AddsLineToUnreadLines() |
|
{ |
|
SendLineToConsole("test"); |
|
string[] unreadLines = TestableScriptingConsole.GetUnreadLines(); |
|
|
|
string[] expectedUnreadlines = new string[] {"test"}; |
|
|
|
Assert.AreEqual(expectedUnreadlines, unreadLines); |
|
} |
|
|
|
void SendLineToConsole(string text) |
|
{ |
|
base.CreateConsole(); |
|
WritePrompt(); |
|
TestableScriptingConsole.SendLine(text); |
|
} |
|
|
|
void WritePrompt() |
|
{ |
|
TestableScriptingConsole.Write(">>> ", ScriptingStyle.Prompt); |
|
} |
|
|
|
[Test] |
|
public void SendLine_NoUnreadLines_CreatesLockForPreviousLines() |
|
{ |
|
SendLineToConsole("test"); |
|
List<string> lines = TestableScriptingConsole.LockCreated.Lines; |
|
List<string> expectedLines = TestableScriptingConsole.GetUnreadLinesList(); |
|
|
|
Assert.AreEqual(expectedLines, lines); |
|
} |
|
|
|
[Test] |
|
public void SendLine_NoUnreadLines_LockForPreviousLinesIsDisposed() |
|
{ |
|
SendLineToConsole("test"); |
|
bool disposed = TestableScriptingConsole.LockCreated.IsDisposed; |
|
|
|
Assert.IsTrue(disposed); |
|
} |
|
|
|
[Test] |
|
public void SendLine_NoUnreadLines_LineNotAddedBeforeLockCreated() |
|
{ |
|
SendLineToConsole("test"); |
|
int count = TestableScriptingConsole.LockCreated.UnreadLineCountWhenLockCreated; |
|
int expectedCount = 0; |
|
|
|
Assert.AreEqual(expectedCount, count); |
|
} |
|
|
|
[Test] |
|
public void SendLine_NoUnreadLines_LineAddedBeforeLockDisposed() |
|
{ |
|
SendLineToConsole("test"); |
|
int count = TestableScriptingConsole.LockCreated.UnreadLineCountWhenLockDisposed; |
|
int expectedCount = 1; |
|
|
|
Assert.AreEqual(expectedCount, count); |
|
} |
|
|
|
[Test] |
|
public void SendLine_NoUnreadLines_LineReceivedEventIsFired() |
|
{ |
|
SendLineToConsole("test"); |
|
bool fired = TestableScriptingConsole.IsLineReceivedEventFired; |
|
Assert.IsTrue(fired); |
|
} |
|
|
|
[Test] |
|
public void SendLine_NoUnreadLines_LineReceivedEventAfterLineAddedToUnreadLines() |
|
{ |
|
SendLineToConsole("test"); |
|
int count = TestableScriptingConsole.UnreadLineCountWhenLineReceivedEventFired; |
|
int expectedCount = 1; |
|
Assert.AreEqual(expectedCount, count); |
|
} |
|
|
|
[Test] |
|
public void SendLine_NoUnreadLines_LineWrittenToConsoleTextEditor() |
|
{ |
|
SendLineToConsole("test"); |
|
string text = MockConsoleTextEditor.TextPassedToWrite; |
|
string expectedTextWritten = "test\r\n"; |
|
|
|
Assert.AreEqual(expectedTextWritten, text); |
|
} |
|
|
|
[Test] |
|
public void SendLine_TwoLinesInConsoleTextEditorCursorOnFirstLine_CursorMovedToEndOfLastLineBeforeTextWritten() |
|
{ |
|
base.CreateConsole(); |
|
WritePrompt(); |
|
MockConsoleTextEditor.Text = |
|
">>> first\r\n" + |
|
">>> second\r\n" + |
|
">>> "; |
|
|
|
MockConsoleTextEditor.Line = 0; |
|
MockConsoleTextEditor.Column = 0; |
|
TestableScriptingConsole.SendLine("test"); |
|
|
|
int expectedLine = 2; |
|
int expectedColumn = 4; |
|
Location expectedLocation = new Location(expectedColumn, expectedLine); |
|
|
|
Location location = MockConsoleTextEditor.CursorLocationWhenWriteTextCalled; |
|
|
|
Assert.AreEqual(expectedLocation, location); |
|
} |
|
|
|
[Test] |
|
public void SendLine_NoUnreadLines_NoTextWrittenToConsoleTextEditorBeforeFirstPromptIsWritten() |
|
{ |
|
base.CreateConsole(); |
|
TestableScriptingConsole.SendLine("test"); |
|
string text = MockConsoleTextEditor.TextPassedToWrite; |
|
|
|
Assert.IsNull(text); |
|
} |
|
|
|
[Test] |
|
public void Write_SendLineCalledButNoPromptWritten_WritesOutSavedSendLineText() |
|
{ |
|
base.CreateConsole(); |
|
TestableScriptingConsole.SendLine("test"); |
|
|
|
TestableScriptingConsole.Write(">>> ", ScriptingStyle.Prompt); |
|
string text = MockConsoleTextEditor.Text; |
|
|
|
string expectedText = |
|
">>> test\r\n"; |
|
Assert.AreEqual(expectedText, text); |
|
} |
|
|
|
[Test] |
|
public void Write_CalledTwiceAfterSendLineCalledButNoPromptWritten_WritesOutSavedSendLineTextOnlyOnce() |
|
{ |
|
base.CreateConsole(); |
|
TestableScriptingConsole.SendLine("test"); |
|
|
|
TestableScriptingConsole.Write(">>> ", ScriptingStyle.Prompt); |
|
TestableScriptingConsole.Write(">>> ", ScriptingStyle.Prompt); |
|
|
|
string text = MockConsoleTextEditor.Text; |
|
|
|
string expectedText = |
|
">>> test\r\n" + |
|
">>> "; |
|
Assert.AreEqual(expectedText, text); |
|
} |
|
} |
|
}
|
|
|