Browse Source

Rename IConsoleTextEditor to IScriptingConsoleTextEditor and move it to the Scripting Tests project.

pull/1/head
mrward 15 years ago
parent
commit
cbefb3dc43
  1. 3
      src/AddIns/BackendBindings/Python/PythonBinding/Project/PythonBinding.csproj
  2. 3
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/IPythonConsolePad.cs
  3. 6
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsole.cs
  4. 5
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsoleHost.cs
  5. 3
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsolePad.cs
  6. 4
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsoleTextEditor.cs
  7. 6
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonOutputStream.cs
  8. 10
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/ThreadSafePythonConsoleTextEditor.cs
  9. 9
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/BuiltinCodeCompletionTestFixture.cs
  10. 10
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/PythonConsoleCodeCompletionTestFixture.cs
  11. 4
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/PythonConsoleCurrentLineTestFixture.cs
  12. 4
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/PythonConsoleHostTests.cs
  13. 1
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/PythonConsoleReadTestFixture.cs
  14. 1
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/PythonConsoleTestsBase.cs
  15. 8
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/PythonConsoleTextEditorTests.cs
  16. 1
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/PythonOutputStreamTestFixture.cs
  17. 8
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/ThreadSafePythonConsoleTextEditorTests.cs
  18. 6
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/TwoPythonConsoleLinesWaitingTestFixture.cs
  19. 4
      src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj
  20. 4
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/DerivedPythonConsoleHost.cs
  21. 205
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockConsoleTextEditor.cs
  22. 4
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockPythonConsolePad.cs
  23. 2
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/TestablePythonConsole.cs
  24. 3
      src/AddIns/BackendBindings/Ruby/RubyBinding/Project/RubyBinding.csproj
  25. 84
      src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/IConsoleTextEditor.cs
  26. 3
      src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/IRubyConsolePad.cs
  27. 6
      src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsole.cs
  28. 50
      src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsoleCompletionData.cs
  29. 65
      src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsoleCompletionDataProvider.cs
  30. 6
      src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsoleHost.cs
  31. 5
      src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsolePad.cs
  32. 4
      src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsoleTextEditor.cs
  33. 6
      src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyOutputStream.cs
  34. 10
      src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/ThreadSafeRubyConsoleTextEditor.cs
  35. 66
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/CodeCompletionTests.cs
  36. 47
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/InsertConsoleCompletionDataTestFixture.cs
  37. 10
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/RubyConsoleCodeCompletionTestFixture.cs
  38. 4
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/RubyConsoleCurrentLineTestFixture.cs
  39. 4
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/RubyConsoleHostTests.cs
  40. 1
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/RubyConsoleReadTestFixture.cs
  41. 1
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/RubyConsoleTestsBase.cs
  42. 8
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/RubyConsoleTextEditorTests.cs
  43. 1
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/RubyOutputStreamTestFixture.cs
  44. 1
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/ThreadSafeRubyConsoleTextEditorTests.cs
  45. 6
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/TwoRubyConsoleLinesWaitingTestFixture.cs
  46. 4
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/RubyBinding.Tests.csproj
  47. 4
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Utils/DerivedRubyConsoleHost.cs
  48. 4
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Utils/MockRubyConsolePad.cs
  49. 2
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Utils/TestableRubyConsole.cs
  50. 351
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Utils/Tests/MockConsoleTextEditorTestFixture.cs
  51. 27
      src/AddIns/BackendBindings/Scripting/Project/ICSharpCode.Scripting.csproj
  52. 9
      src/AddIns/BackendBindings/Scripting/Project/Src/IScriptingConsoleTextEditor.cs
  53. 6
      src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsoleCompletionData.cs
  54. 15
      src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsoleCompletionDataProvider.cs
  55. 11
      src/AddIns/BackendBindings/Scripting/Test/Console/EmptyStringCodeCompletionTests.cs
  56. 8
      src/AddIns/BackendBindings/Scripting/Test/Console/InsertConsoleCompletionDataTestFixture.cs
  57. 7
      src/AddIns/BackendBindings/Scripting/Test/ICSharpCode.Scripting.Tests.csproj
  58. 10
      src/AddIns/BackendBindings/Scripting/Test/Utils/MockConsoleTextEditor.cs
  59. 6
      src/AddIns/BackendBindings/Scripting/Test/Utils/Tests/MockConsoleTextEditorTests.cs
  60. 14
      src/AddIns/BackendBindings/Scripting/Test/app.config

3
src/AddIns/BackendBindings/Python/PythonBinding/Project/PythonBinding.csproj

@ -96,7 +96,6 @@
<Compile Include="Src\MemberName.cs" /> <Compile Include="Src\MemberName.cs" />
<Compile Include="Src\PythonBuiltInModuleMemberName.cs" /> <Compile Include="Src\PythonBuiltInModuleMemberName.cs" />
<Compile Include="Src\PythonClassResolver.cs" /> <Compile Include="Src\PythonClassResolver.cs" />
<Compile Include="Src\PythonConsoleCompletionData.cs" />
<Compile Include="Src\PythonConsoleApplication.cs" /> <Compile Include="Src\PythonConsoleApplication.cs" />
<Compile Include="Src\PythonConsoleTextEditorKeyEventArgs.cs" /> <Compile Include="Src\PythonConsoleTextEditorKeyEventArgs.cs" />
<Compile Include="Src\PythonDotNetMethodResolver.cs" /> <Compile Include="Src\PythonDotNetMethodResolver.cs" />
@ -129,7 +128,6 @@
<Compile Include="Src\PythonWorkbench.cs" /> <Compile Include="Src\PythonWorkbench.cs" />
<Compile Include="Src\SendLineToPythonConsoleCommand.cs" /> <Compile Include="Src\SendLineToPythonConsoleCommand.cs" />
<Compile Include="Src\SysModuleCompletionItems.cs" /> <Compile Include="Src\SysModuleCompletionItems.cs" />
<Compile Include="Src\IConsoleTextEditor.cs" />
<Compile Include="Src\NRefactoryToPythonConverter.cs" /> <Compile Include="Src\NRefactoryToPythonConverter.cs" />
<Compile Include="Src\PythonAstWalker.cs" /> <Compile Include="Src\PythonAstWalker.cs" />
<Compile Include="Src\PythonCodeCompletionBinding.cs" /> <Compile Include="Src\PythonCodeCompletionBinding.cs" />
@ -139,7 +137,6 @@
<Compile Include="Src\PythonCompilerError.cs" /> <Compile Include="Src\PythonCompilerError.cs" />
<Compile Include="Src\PythonCompilerSink.cs" /> <Compile Include="Src\PythonCompilerSink.cs" />
<Compile Include="Src\PythonConsole.cs" /> <Compile Include="Src\PythonConsole.cs" />
<Compile Include="Src\PythonConsoleCompletionDataProvider.cs" />
<Compile Include="Src\PythonConsoleHost.cs" /> <Compile Include="Src\PythonConsoleHost.cs" />
<Compile Include="Src\PythonConsolePad.cs" /> <Compile Include="Src\PythonConsolePad.cs" />
<Compile Include="Src\PythonControlFieldExpression.cs"> <Compile Include="Src\PythonControlFieldExpression.cs">

3
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/IPythonConsolePad.cs

@ -6,13 +6,14 @@
// </file> // </file>
using System; using System;
using ICSharpCode.Scripting;
namespace ICSharpCode.PythonBinding namespace ICSharpCode.PythonBinding
{ {
public interface IPythonConsolePad public interface IPythonConsolePad
{ {
void BringToFront(); void BringToFront();
IConsoleTextEditor ConsoleTextEditor { get; } IScriptingConsoleTextEditor ConsoleTextEditor { get; }
IPythonConsole PythonConsole { get; } IPythonConsole PythonConsole { get; }
} }
} }

6
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsole.cs

@ -21,7 +21,7 @@ namespace ICSharpCode.PythonBinding
{ {
public class PythonConsole : IConsole, IDisposable, IMemberProvider, IPythonConsole public class PythonConsole : IConsole, IDisposable, IMemberProvider, IPythonConsole
{ {
IConsoleTextEditor textEditor; IScriptingConsoleTextEditor textEditor;
int lineReceivedEventIndex = 0; // The index into the waitHandles array where the lineReceivedEvent is stored. int lineReceivedEventIndex = 0; // The index into the waitHandles array where the lineReceivedEvent is stored.
ManualResetEvent lineReceivedEvent = new ManualResetEvent(false); ManualResetEvent lineReceivedEvent = new ManualResetEvent(false);
ManualResetEvent disposedEvent = new ManualResetEvent(false); ManualResetEvent disposedEvent = new ManualResetEvent(false);
@ -33,7 +33,7 @@ namespace ICSharpCode.PythonBinding
protected List<string> unreadLines = new List<string>(); protected List<string> unreadLines = new List<string>();
public PythonConsole(IConsoleTextEditor textEditor) public PythonConsole(IScriptingConsoleTextEditor textEditor)
{ {
waitHandles = new WaitHandle[] {lineReceivedEvent, disposedEvent}; waitHandles = new WaitHandle[] {lineReceivedEvent, disposedEvent};
@ -282,7 +282,7 @@ namespace ICSharpCode.PythonBinding
void ShowCompletionWindow() void ShowCompletionWindow()
{ {
PythonConsoleCompletionDataProvider completionProvider = new PythonConsoleCompletionDataProvider(this); ScriptingConsoleCompletionDataProvider completionProvider = new ScriptingConsoleCompletionDataProvider(this);
textEditor.ShowCompletionWindow(completionProvider); textEditor.ShowCompletionWindow(completionProvider);
} }

5
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsoleHost.cs

@ -9,6 +9,7 @@ using System;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using ICSharpCode.Scripting;
using IronPython.Hosting; using IronPython.Hosting;
using IronPython.Runtime; using IronPython.Runtime;
using Microsoft.Scripting.Hosting; using Microsoft.Scripting.Hosting;
@ -19,10 +20,10 @@ namespace ICSharpCode.PythonBinding
public class PythonConsoleHost : ConsoleHost, IDisposable public class PythonConsoleHost : ConsoleHost, IDisposable
{ {
Thread thread; Thread thread;
IConsoleTextEditor textEditor; IScriptingConsoleTextEditor textEditor;
PythonConsole pythonConsole; PythonConsole pythonConsole;
public PythonConsoleHost(IConsoleTextEditor textEditor) public PythonConsoleHost(IScriptingConsoleTextEditor textEditor)
{ {
this.textEditor = textEditor; this.textEditor = textEditor;
pythonConsole = new PythonConsole(textEditor); pythonConsole = new PythonConsole(textEditor);

3
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsolePad.cs

@ -6,6 +6,7 @@
// </file> // </file>
using System; using System;
using ICSharpCode.Scripting;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
using AvalonEdit = ICSharpCode.AvalonEdit; using AvalonEdit = ICSharpCode.AvalonEdit;
@ -25,7 +26,7 @@ namespace ICSharpCode.PythonBinding
host.Run(); host.Run();
} }
public IConsoleTextEditor ConsoleTextEditor { public IScriptingConsoleTextEditor ConsoleTextEditor {
get { return consoleTextEditor; } get { return consoleTextEditor; }
} }

4
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsoleTextEditor.cs

@ -18,7 +18,7 @@ using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.PythonBinding namespace ICSharpCode.PythonBinding
{ {
public class PythonConsoleTextEditor : IConsoleTextEditor public class PythonConsoleTextEditor : IScriptingConsoleTextEditor
{ {
TextEditor textEditor; TextEditor textEditor;
Color customLineColour = Color.LightGray; Color customLineColour = Color.LightGray;
@ -115,7 +115,7 @@ namespace ICSharpCode.PythonBinding
readOnlyRegion.EndOffset = textEditor.Document.TextLength; readOnlyRegion.EndOffset = textEditor.Document.TextLength;
} }
public void ShowCompletionWindow(PythonConsoleCompletionDataProvider completionDataProvider) public void ShowCompletionWindow(ScriptingConsoleCompletionDataProvider completionDataProvider)
{ {
ICompletionData[] items = completionDataProvider.GenerateCompletionData(this); ICompletionData[] items = completionDataProvider.GenerateCompletionData(this);
if (items.Length > 0) { if (items.Length > 0) {

6
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonOutputStream.cs

@ -9,13 +9,15 @@ using System;
using System.IO; using System.IO;
using System.Text; using System.Text;
using ICSharpCode.Scripting;
namespace ICSharpCode.PythonBinding namespace ICSharpCode.PythonBinding
{ {
public class PythonOutputStream : Stream public class PythonOutputStream : Stream
{ {
IConsoleTextEditor textEditor; IScriptingConsoleTextEditor textEditor;
public PythonOutputStream(IConsoleTextEditor textEditor) public PythonOutputStream(IScriptingConsoleTextEditor textEditor)
{ {
this.textEditor = textEditor; this.textEditor = textEditor;
} }

10
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/ThreadSafePythonConsoleTextEditor.cs

@ -11,11 +11,11 @@ using ICSharpCode.Scripting;
namespace ICSharpCode.PythonBinding namespace ICSharpCode.PythonBinding
{ {
public class ThreadSafePythonConsoleTextEditor : IConsoleTextEditor public class ThreadSafePythonConsoleTextEditor : IScriptingConsoleTextEditor
{ {
delegate string GetLineInvoker(int index); delegate string GetLineInvoker(int index);
IConsoleTextEditor consoleTextEditor; IScriptingConsoleTextEditor consoleTextEditor;
IControlDispatcher dispatcher; IControlDispatcher dispatcher;
public ThreadSafePythonConsoleTextEditor(TextEditor textEditor) public ThreadSafePythonConsoleTextEditor(TextEditor textEditor)
@ -23,7 +23,7 @@ namespace ICSharpCode.PythonBinding
{ {
} }
public ThreadSafePythonConsoleTextEditor(IConsoleTextEditor consoleTextEditor, IControlDispatcher dispatcher) public ThreadSafePythonConsoleTextEditor(IScriptingConsoleTextEditor consoleTextEditor, IControlDispatcher dispatcher)
{ {
this.consoleTextEditor = consoleTextEditor; this.consoleTextEditor = consoleTextEditor;
this.dispatcher = dispatcher; this.dispatcher = dispatcher;
@ -95,12 +95,12 @@ namespace ICSharpCode.PythonBinding
} }
} }
public void ShowCompletionWindow(PythonConsoleCompletionDataProvider completionDataProvider) public void ShowCompletionWindow(ScriptingConsoleCompletionDataProvider completionDataProvider)
{ {
if (dispatcher.CheckAccess()) { if (dispatcher.CheckAccess()) {
consoleTextEditor.ShowCompletionWindow(completionDataProvider); consoleTextEditor.ShowCompletionWindow(completionDataProvider);
} else { } else {
Action<PythonConsoleCompletionDataProvider> action = ShowCompletionWindow; Action<ScriptingConsoleCompletionDataProvider> action = ShowCompletionWindow;
dispatcher.Invoke(action, completionDataProvider); dispatcher.Invoke(action, completionDataProvider);
} }
} }

9
src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/BuiltinCodeCompletionTestFixture.cs

@ -10,6 +10,7 @@ using System.Collections.Generic;
using ICSharpCode.AvalonEdit; using ICSharpCode.AvalonEdit;
using ICSharpCode.AvalonEdit.CodeCompletion; using ICSharpCode.AvalonEdit.CodeCompletion;
using ICSharpCode.PythonBinding; using ICSharpCode.PythonBinding;
using ICSharpCode.Scripting;
using ICSharpCode.Scripting.Tests.Console; using ICSharpCode.Scripting.Tests.Console;
using Microsoft.Scripting.Hosting; using Microsoft.Scripting.Hosting;
using NUnit.Framework; using NUnit.Framework;
@ -24,7 +25,7 @@ namespace PythonBinding.Tests.Console
{ {
ICompletionData[] completionItems; ICompletionData[] completionItems;
ICompletionData[] expectedCompletionItems; ICompletionData[] expectedCompletionItems;
PythonConsoleCompletionDataProvider provider; ScriptingConsoleCompletionDataProvider provider;
MockMemberProvider memberProvider; MockMemberProvider memberProvider;
[TestFixtureSetUp] [TestFixtureSetUp]
@ -38,7 +39,7 @@ namespace PythonBinding.Tests.Console
memberProvider.SetMemberNames(new string[] {"a", "b", "c"}); memberProvider.SetMemberNames(new string[] {"a", "b", "c"});
expectedCompletionItems = CreateCompletionItems(memberProvider.GetMemberNames("__builtins__")); expectedCompletionItems = CreateCompletionItems(memberProvider.GetMemberNames("__builtins__"));
provider = new PythonConsoleCompletionDataProvider(memberProvider); provider = new ScriptingConsoleCompletionDataProvider(memberProvider);
completionItems = provider.GenerateCompletionData(textEditor); completionItems = provider.GenerateCompletionData(textEditor);
} }
@ -70,9 +71,9 @@ namespace PythonBinding.Tests.Console
ICompletionData[] CreateCompletionItems(IList<string> memberNames) ICompletionData[] CreateCompletionItems(IList<string> memberNames)
{ {
List<PythonConsoleCompletionData> items = new List<PythonConsoleCompletionData>(); List<ScriptingConsoleCompletionData> items = new List<ScriptingConsoleCompletionData>();
foreach (string memberName in memberNames) { foreach (string memberName in memberNames) {
items.Add(new PythonConsoleCompletionData(memberName)); items.Add(new ScriptingConsoleCompletionData(memberName));
} }
return items.ToArray(); return items.ToArray();
} }

10
src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/PythonConsoleCodeCompletionTestFixture.cs

@ -7,10 +7,12 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Windows.Input;
using System.Threading; using System.Threading;
using Microsoft.Scripting.Hosting.Shell; using System.Windows.Input;
using ICSharpCode.PythonBinding; using ICSharpCode.PythonBinding;
using ICSharpCode.Scripting;
using Microsoft.Scripting.Hosting.Shell;
using NUnit.Framework; using NUnit.Framework;
using PythonBinding.Tests.Utils; using PythonBinding.Tests.Utils;
@ -49,9 +51,9 @@ namespace PythonBinding.Tests.Console
} }
[Test] [Test]
public void PythonConsoleCompletionDataProviderPassedToShowCompletionWindowMethod() public void ScriptingConsoleCompletionDataProviderPassedToShowCompletionWindowMethod()
{ {
Assert.IsInstanceOf(typeof(PythonConsoleCompletionDataProvider), MockConsoleTextEditor.CompletionProviderPassedToShowCompletionWindow); Assert.IsInstanceOf(typeof(ScriptingConsoleCompletionDataProvider), MockConsoleTextEditor.CompletionProviderPassedToShowCompletionWindow);
} }
} }
} }

4
src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/PythonConsoleCurrentLineTestFixture.cs

@ -7,11 +7,11 @@
using System; using System;
using System.Windows.Input; using System.Windows.Input;
using ICSharpCode.PythonBinding;
using ICSharpCode.Scripting.Tests.Utils;
using Microsoft.Scripting; using Microsoft.Scripting;
using Microsoft.Scripting.Hosting; using Microsoft.Scripting.Hosting;
using Microsoft.Scripting.Hosting.Shell; using Microsoft.Scripting.Hosting.Shell;
using ICSharpCode.PythonBinding;
using NUnit.Framework; using NUnit.Framework;
using PythonBinding.Tests.Utils; using PythonBinding.Tests.Utils;

4
src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/PythonConsoleHostTests.cs

@ -6,15 +6,15 @@
// </file> // </file>
using System; using System;
using ICSharpCode.AvalonEdit; using ICSharpCode.AvalonEdit;
using ICSharpCode.PythonBinding; using ICSharpCode.PythonBinding;
using ICSharpCode.Scripting.Tests.Utils;
using IronPython.Hosting; using IronPython.Hosting;
using IronPython.Runtime; using IronPython.Runtime;
using NUnit.Framework;
using Microsoft.Scripting; using Microsoft.Scripting;
using Microsoft.Scripting.Hosting; using Microsoft.Scripting.Hosting;
using Microsoft.Scripting.Hosting.Shell; using Microsoft.Scripting.Hosting.Shell;
using NUnit.Framework;
using PythonBinding.Tests.Utils; using PythonBinding.Tests.Utils;
namespace PythonBinding.Tests.Console namespace PythonBinding.Tests.Console

1
src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/PythonConsoleReadTestFixture.cs

@ -10,6 +10,7 @@ using System.Threading;
using System.Windows.Input; using System.Windows.Input;
using ICSharpCode.PythonBinding; using ICSharpCode.PythonBinding;
using ICSharpCode.Scripting.Tests.Utils;
using NUnit.Framework; using NUnit.Framework;
using PythonBinding.Tests.Utils; using PythonBinding.Tests.Utils;

1
src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/PythonConsoleTestsBase.cs

@ -7,6 +7,7 @@
using System; using System;
using ICSharpCode.PythonBinding; using ICSharpCode.PythonBinding;
using ICSharpCode.Scripting.Tests.Utils;
using PythonBinding.Tests.Utils; using PythonBinding.Tests.Utils;
namespace PythonBinding.Tests.Console namespace PythonBinding.Tests.Console

8
src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/PythonConsoleTextEditorTests.cs

@ -9,9 +9,11 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading; using System.Threading;
using System.Windows.Input; using System.Windows.Input;
using ICSharpCode.AvalonEdit; using ICSharpCode.AvalonEdit;
using ICSharpCode.AvalonEdit.Editing; using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.PythonBinding; using ICSharpCode.PythonBinding;
using ICSharpCode.Scripting;
using NUnit.Framework; using NUnit.Framework;
using PythonBinding.Tests.Utils; using PythonBinding.Tests.Utils;
@ -31,9 +33,9 @@ namespace PythonBinding.Tests.Console
} }
[Test] [Test]
public void InterfaceImplemented_NewInstance_ImplementsIConsoleTextEditorInterface() public void InterfaceImplemented_NewInstance_ImplementsIScriptingConsoleTextEditorInterface()
{ {
Assert.IsNotNull(consoleTextEditor as IConsoleTextEditor); Assert.IsNotNull(consoleTextEditor as IScriptingConsoleTextEditor);
} }
[Test] [Test]
@ -101,7 +103,7 @@ namespace PythonBinding.Tests.Console
AssertSelectionsAreEqual(expectedSelection, consoleTextEditor); AssertSelectionsAreEqual(expectedSelection, consoleTextEditor);
} }
void AssertSelectionsAreEqual(SimpleSelection expectedSelection, IConsoleTextEditor consoleTextEditor) void AssertSelectionsAreEqual(SimpleSelection expectedSelection, IScriptingConsoleTextEditor consoleTextEditor)
{ {
int selectionLength = consoleTextEditor.SelectionStart + consoleTextEditor.SelectionLength; int selectionLength = consoleTextEditor.SelectionStart + consoleTextEditor.SelectionLength;
SimpleSelection actualSelection = new SimpleSelection(consoleTextEditor.SelectionStart, selectionLength); SimpleSelection actualSelection = new SimpleSelection(consoleTextEditor.SelectionStart, selectionLength);

1
src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/PythonOutputStreamTestFixture.cs

@ -10,6 +10,7 @@ using System.IO;
using System.Text; using System.Text;
using ICSharpCode.PythonBinding; using ICSharpCode.PythonBinding;
using ICSharpCode.Scripting.Tests.Utils;
using NUnit.Framework; using NUnit.Framework;
using PythonBinding.Tests.Utils; using PythonBinding.Tests.Utils;

8
src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/ThreadSafePythonConsoleTextEditorTests.cs

@ -166,10 +166,10 @@ namespace PythonBinding.Tests.Console
[Test] [Test]
public void ShowCompletionWindow_WrappedConsoleTextEditor_CallsWrappedConsoleTextEditorMethod() public void ShowCompletionWindow_WrappedConsoleTextEditor_CallsWrappedConsoleTextEditorMethod()
{ {
PythonConsoleCompletionDataProvider expectedProvider = new PythonConsoleCompletionDataProvider(null); ScriptingConsoleCompletionDataProvider expectedProvider = new ScriptingConsoleCompletionDataProvider(null);
threadSafeConsoleTextEditor.ShowCompletionWindow(expectedProvider); threadSafeConsoleTextEditor.ShowCompletionWindow(expectedProvider);
PythonConsoleCompletionDataProvider provider = fakeConsoleTextEditor.CompletionProviderPassedToShowCompletionWindow; ScriptingConsoleCompletionDataProvider provider = fakeConsoleTextEditor.CompletionProviderPassedToShowCompletionWindow;
Assert.AreEqual(expectedProvider, provider); Assert.AreEqual(expectedProvider, provider);
} }
@ -311,7 +311,7 @@ namespace PythonBinding.Tests.Console
dispatcher.CheckAccessReturnValue = false; dispatcher.CheckAccessReturnValue = false;
dispatcher.MethodInvoked = null; dispatcher.MethodInvoked = null;
PythonConsoleCompletionDataProvider provider = new PythonConsoleCompletionDataProvider(null); ScriptingConsoleCompletionDataProvider provider = new ScriptingConsoleCompletionDataProvider(null);
threadSafeConsoleTextEditor.ShowCompletionWindow(provider); threadSafeConsoleTextEditor.ShowCompletionWindow(provider);
Assert.IsNotNull(dispatcher.MethodInvoked); Assert.IsNotNull(dispatcher.MethodInvoked);
} }
@ -322,7 +322,7 @@ namespace PythonBinding.Tests.Console
dispatcher.CheckAccessReturnValue = false; dispatcher.CheckAccessReturnValue = false;
dispatcher.MethodInvoked = null; dispatcher.MethodInvoked = null;
PythonConsoleCompletionDataProvider provider = new PythonConsoleCompletionDataProvider(null); ScriptingConsoleCompletionDataProvider provider = new ScriptingConsoleCompletionDataProvider(null);
threadSafeConsoleTextEditor.ShowCompletionWindow(provider); threadSafeConsoleTextEditor.ShowCompletionWindow(provider);
object[] expectedArgs = new object[] { provider }; object[] expectedArgs = new object[] { provider };

6
src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/TwoPythonConsoleLinesWaitingTestFixture.cs

@ -7,16 +7,16 @@
using System; using System;
using System.Threading; using System.Threading;
using Input = System.Windows.Input;
using ICSharpCode.PythonBinding; using ICSharpCode.PythonBinding;
using ICSharpCode.Scripting.Tests.Utils;
using IronPython.Hosting; using IronPython.Hosting;
using IronPython.Runtime; using IronPython.Runtime;
using NUnit.Framework;
using Microsoft.Scripting; using Microsoft.Scripting;
using Microsoft.Scripting.Hosting; using Microsoft.Scripting.Hosting;
using Microsoft.Scripting.Hosting.Shell; using Microsoft.Scripting.Hosting.Shell;
using NUnit.Framework;
using PythonBinding.Tests.Utils; using PythonBinding.Tests.Utils;
using Input = System.Windows.Input;
namespace PythonBinding.Tests.Console namespace PythonBinding.Tests.Console
{ {

4
src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj

@ -105,10 +105,8 @@
<Compile Include="Console\PythonConsoleSendLineTests.cs" /> <Compile Include="Console\PythonConsoleSendLineTests.cs" />
<Compile Include="Console\PythonConsoleTestsBase.cs" /> <Compile Include="Console\PythonConsoleTestsBase.cs" />
<Compile Include="Console\ThreadSafePythonConsoleTextEditorTests.cs" /> <Compile Include="Console\ThreadSafePythonConsoleTextEditorTests.cs" />
<Compile Include="Console\InsertConsoleCompletionDataTestFixture.cs" />
<Compile Include="Console\KeysPressedWhenCompletionWindowOpenTestFixture.cs" /> <Compile Include="Console\KeysPressedWhenCompletionWindowOpenTestFixture.cs" />
<Compile Include="Console\DisposedPythonConsoleTestFixture.cs" /> <Compile Include="Console\DisposedPythonConsoleTestFixture.cs" />
<Compile Include="Console\CodeCompletionTests.cs" />
<Compile Include="Console\PythonConsoleCommandLineHistoryTestFixture.cs" /> <Compile Include="Console\PythonConsoleCommandLineHistoryTestFixture.cs" />
<Compile Include="Console\PythonConsoleHomeKeyTestFixture.cs" /> <Compile Include="Console\PythonConsoleHomeKeyTestFixture.cs" />
<Compile Include="Console\PythonConsoleCodeCompletionTestFixture.cs" /> <Compile Include="Console\PythonConsoleCodeCompletionTestFixture.cs" />
@ -440,7 +438,6 @@
<Compile Include="Utils\DerivedPythonDesignerGenerator.cs" /> <Compile Include="Utils\DerivedPythonDesignerGenerator.cs" />
<Compile Include="Utils\DerivedPythonDesignerLoader.cs" /> <Compile Include="Utils\DerivedPythonDesignerLoader.cs" />
<Compile Include="Utils\DerivedPythonFormsDesignerDisplayBinding.cs" /> <Compile Include="Utils\DerivedPythonFormsDesignerDisplayBinding.cs" />
<Compile Include="Utils\MockConsoleTextEditor.cs" />
<Compile Include="Utils\MockDesignerGenerator.cs" /> <Compile Include="Utils\MockDesignerGenerator.cs" />
<Compile Include="Utils\MockPythonConsole.cs" /> <Compile Include="Utils\MockPythonConsole.cs" />
<Compile Include="Utils\MockPythonConsolePad.cs" /> <Compile Include="Utils\MockPythonConsolePad.cs" />
@ -457,7 +454,6 @@
<Compile Include="Utils\PythonBindingAddInFile.cs" /> <Compile Include="Utils\PythonBindingAddInFile.cs" />
<Compile Include="Utils\PythonCompletionItemsHelper.cs" /> <Compile Include="Utils\PythonCompletionItemsHelper.cs" />
<Compile Include="Utils\PythonParserHelper.cs" /> <Compile Include="Utils\PythonParserHelper.cs" />
<Compile Include="Utils\Tests\MockConsoleTextEditorTestFixture.cs" />
<Compile Include="Utils\Tests\MockPythonFileServiceTestFixture.cs" /> <Compile Include="Utils\Tests\MockPythonFileServiceTestFixture.cs" />
<Compile Include="Utils\Tests\PythonCompletionItemsHelperTests.cs" /> <Compile Include="Utils\Tests\PythonCompletionItemsHelperTests.cs" />
<Compile Include="Utils\Tests\PythonParserHelperTests.cs" /> <Compile Include="Utils\Tests\PythonParserHelperTests.cs" />

4
src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/DerivedPythonConsoleHost.cs

@ -7,8 +7,8 @@
using System; using System;
using System.IO; using System.IO;
using ICSharpCode.PythonBinding; using ICSharpCode.PythonBinding;
using ICSharpCode.Scripting;
using Microsoft.Scripting; using Microsoft.Scripting;
using Microsoft.Scripting.Hosting; using Microsoft.Scripting.Hosting;
using Microsoft.Scripting.Hosting.Shell; using Microsoft.Scripting.Hosting.Shell;
@ -19,7 +19,7 @@ namespace PythonBinding.Tests.Console
{ {
PythonOutputStream outputStream; PythonOutputStream outputStream;
public DerivedPythonConsoleHost(IConsoleTextEditor textEditor) : base(textEditor) public DerivedPythonConsoleHost(IScriptingConsoleTextEditor textEditor) : base(textEditor)
{ {
} }

205
src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockConsoleTextEditor.cs

@ -1,205 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Input;
using ICSharpCode.NRefactory;
using ICSharpCode.PythonBinding;
using ICSharpCode.Scripting;
using ICSharpCode.Scripting.Tests.Utils;
namespace PythonBinding.Tests.Utils
{
public class MockConsoleTextEditor : IConsoleTextEditor
{
public bool IsDisposed;
public bool IsWriteCalled;
public bool IsShowCompletionWindowCalled;
public bool IsMakeCurrentContentReadOnlyCalled;
public PythonConsoleCompletionDataProvider CompletionProviderPassedToShowCompletionWindow;
public string TextPassedToWrite;
public string TextPassedToReplace;
public int LengthPassedToReplace = -1;
public int IndexPassedToReplace = -1;
public Location CursorLocationWhenWriteTextCalled;
public bool IsColumnChangedBeforeTextWritten;
public StringBuilder PreviousLines = new StringBuilder();
public StringBuilder LineBuilder = new StringBuilder();
public event ConsoleTextEditorKeyEventHandler PreviewKeyDown;
public MockConsoleTextEditor()
{
TotalLines = 1;
}
public void Dispose()
{
IsDisposed = true;
}
public void Write(string text)
{
TextPassedToWrite = text;
CursorLocationWhenWriteTextCalled = new Location(Column, Line);
IsWriteCalled = true;
LineBuilder.Append(text);
Column += text.Length;
}
public string Text {
get { return PreviousLines.ToString() + LineBuilder.ToString(); }
set {
PreviousLines = new StringBuilder();
LineBuilder = new StringBuilder();
TotalLines = 1;
foreach (char ch in value) {
LineBuilder.Append(ch);
if (ch == '\n') {
TotalLines++;
PreviousLines.Append(LineBuilder.ToString());
LineBuilder = new StringBuilder();
}
}
Column = LineBuilder.Length;
SelectionStart = Column;
}
}
public bool RaisePreviewKeyDownEvent(Key key)
{
MockConsoleTextEditorKeyEventArgs e = new MockConsoleTextEditorKeyEventArgs(key);
OnPreviewKeyDown(e);
if (!e.Handled) {
KeyConverter converter = new KeyConverter();
string text = converter.ConvertToString(key);
if (IsCursorAtEnd) {
LineBuilder.Append(text);
} else {
LineBuilder.Insert(Column, text);
}
Column++;
SelectionStart = Column;
}
return e.Handled;
}
void OnPreviewKeyDown(MockConsoleTextEditorKeyEventArgs e)
{
if (PreviewKeyDown != null) {
PreviewKeyDown(this, e);
}
}
public void RaisePreviewKeyDownEvent(MockConsoleTextEditorKeyEventArgs e)
{
OnPreviewKeyDown(e);
}
public bool RaisePreviewKeyDownEventForDialogKey(Key key)
{
MockConsoleTextEditorKeyEventArgs e = new MockConsoleTextEditorKeyEventArgs(key);
OnPreviewKeyDown(e);
if (!e.Handled) {
switch (key) {
case Key.Enter: {
if (IsCursorAtEnd) {
LineBuilder.Append(Environment.NewLine);
PreviousLines.Append(LineBuilder.ToString());
LineBuilder = new StringBuilder();
Column = 0;
SelectionStart = Column;
} else {
int length = LineBuilder.Length;
string currentLine = LineBuilder.ToString();
PreviousLines.Append(currentLine.Substring(0, Column) + Environment.NewLine);
LineBuilder = new StringBuilder();
LineBuilder.Append(currentLine.Substring(Column));
Column = length - Column;
SelectionStart = Column;
}
TotalLines++;
Line++;
}
break;
case Key.Back: {
OnBackspaceKeyPressed();
}
break;
case Key.Left: {
Column--;
SelectionStart = Column;
}
break;
case Key.Right: {
Column++;
SelectionStart = Column;
}
break;
}
}
return e.Handled;
}
public bool IsCompletionWindowDisplayed { get; set; }
public int Column { get; set; }
public int SelectionStart { get; set; }
public int SelectionLength { get; set; }
public int Line { get; set; }
public int TotalLines { get; set; }
public string GetLine(int index)
{
if (index == TotalLines - 1) {
return LineBuilder.ToString();
}
return "aaaa";
}
public void Replace(int index, int length, string text)
{
TextPassedToReplace = text;
IndexPassedToReplace = index;
LengthPassedToReplace = length;
LineBuilder.Remove(index, length);
LineBuilder.Insert(index, text);
}
public void ShowCompletionWindow(PythonConsoleCompletionDataProvider completionDataProvider)
{
IsShowCompletionWindowCalled = true;
IsCompletionWindowDisplayed = true;
this.CompletionProviderPassedToShowCompletionWindow = completionDataProvider;
}
public void MakeCurrentContentReadOnly()
{
IsMakeCurrentContentReadOnlyCalled = true;
}
bool IsCursorAtEnd {
get { return Column == LineBuilder.ToString().Length; }
}
void OnBackspaceKeyPressed()
{
if (SelectionLength == 0) {
// Remove a single character to the left of the cursor position.
LineBuilder.Remove(Column - 1, 1);
} else {
LineBuilder.Remove(SelectionStart, SelectionLength);
}
}
}
}

4
src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockPythonConsolePad.cs

@ -7,6 +7,8 @@
using System; using System;
using ICSharpCode.PythonBinding; using ICSharpCode.PythonBinding;
using ICSharpCode.Scripting;
using ICSharpCode.Scripting.Tests.Utils;
namespace PythonBinding.Tests.Utils namespace PythonBinding.Tests.Utils
{ {
@ -22,7 +24,7 @@ namespace PythonBinding.Tests.Utils
BringToFrontCalled = true; BringToFrontCalled = true;
} }
public IConsoleTextEditor ConsoleTextEditor { public IScriptingConsoleTextEditor ConsoleTextEditor {
get { return MockConsoleTextEditor; } get { return MockConsoleTextEditor; }
} }

2
src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/TestablePythonConsole.cs

@ -26,7 +26,7 @@ namespace PythonBinding.Tests.Utils
{ {
} }
TestablePythonConsole(IConsoleTextEditor consoleTextEditor, PythonCommandLine commandLine) TestablePythonConsole(IScriptingConsoleTextEditor consoleTextEditor, PythonCommandLine commandLine)
: base(consoleTextEditor) : base(consoleTextEditor)
{ {
CommandLine = commandLine; CommandLine = commandLine;

3
src/AddIns/BackendBindings/Ruby/RubyBinding/Project/RubyBinding.csproj

@ -91,10 +91,8 @@
<Compile Include="Src\IRubyFileService.cs" /> <Compile Include="Src\IRubyFileService.cs" />
<Compile Include="Src\IRubyWorkbench.cs" /> <Compile Include="Src\IRubyWorkbench.cs" />
<Compile Include="Src\RubyConsoleApplication.cs" /> <Compile Include="Src\RubyConsoleApplication.cs" />
<Compile Include="Src\RubyConsoleCompletionData.cs" />
<Compile Include="Src\ConvertProjectToRubyProjectCommand.cs" /> <Compile Include="Src\ConvertProjectToRubyProjectCommand.cs" />
<Compile Include="Src\ConvertToRubyMenuCommand.cs" /> <Compile Include="Src\ConvertToRubyMenuCommand.cs" />
<Compile Include="Src\IConsoleTextEditor.cs" />
<Compile Include="Src\NRefactoryToRubyConverter.cs" /> <Compile Include="Src\NRefactoryToRubyConverter.cs" />
<Compile Include="Src\RubyAddInOptions.cs" /> <Compile Include="Src\RubyAddInOptions.cs" />
<Compile Include="Src\RubyAstWalker.cs" /> <Compile Include="Src\RubyAstWalker.cs" />
@ -105,7 +103,6 @@
<Compile Include="Src\RubyComponentWalker.cs" /> <Compile Include="Src\RubyComponentWalker.cs" />
<Compile Include="Src\RubyComponentWalkerException.cs" /> <Compile Include="Src\RubyComponentWalkerException.cs" />
<Compile Include="Src\RubyConsole.cs" /> <Compile Include="Src\RubyConsole.cs" />
<Compile Include="Src\RubyConsoleCompletionDataProvider.cs" />
<Compile Include="Src\RubyConsoleHost.cs" /> <Compile Include="Src\RubyConsoleHost.cs" />
<Compile Include="Src\RubyConsolePad.cs" /> <Compile Include="Src\RubyConsolePad.cs" />
<Compile Include="Src\RubyConsoleTextEditorKeyEventArgs.cs" /> <Compile Include="Src\RubyConsoleTextEditorKeyEventArgs.cs" />

84
src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/IConsoleTextEditor.cs

@ -1,84 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.Scripting;
namespace ICSharpCode.RubyBinding
{
/// <summary>
/// The interface that the text editor used by the RubyConsole needs to be implement. Note that
/// all the methods will be called on another thread not the main UI thread and will therefore need to
/// be invoked.
/// </summary>
public interface IConsoleTextEditor : IDisposable
{
/// <summary>
/// Fired when a key is pressed but before any text has been added to the text editor.
/// </summary>
/// <remarks>
/// The handler should set the ConsoleTextEditorKeyEventArgs.Handled to true if the text editor should not
/// process the key and not insert any text.
/// </remarks>
event ConsoleTextEditorKeyEventHandler PreviewKeyDown;
/// <summary>
/// Inserts text at the current cursor location.
/// </summary>
void Write(string text);
/// <summary>
/// Replaces the text at the specified index on the current line with the specified text.
/// </summary>
void Replace(int index, int length, string text);
/// <summary>
/// Gets or sets the current column position of the cursor on the current line. This is zero based.
/// </summary>
int Column {get; set;}
/// <summary>
/// Gets the length of the currently selected text.
/// </summary>
int SelectionLength {get;}
/// <summary>
/// Gets the start position of the currently selected text.
/// </summary>
int SelectionStart {get;}
/// <summary>
/// Gets the current line the cursor is on. This is zero based.
/// </summary>
int Line {get; set;}
/// <summary>
/// Gets the total number of lines in the text editor.
/// </summary>
int TotalLines {get;}
/// <summary>
/// Gets the text for the specified line.
/// </summary>
string GetLine(int index);
/// <summary>
/// Shows the code completion window.
/// </summary>
void ShowCompletionWindow(RubyConsoleCompletionDataProvider completionDataProvider);
/// <summary>
/// Indicates whether the completion window is currently being displayed.
/// </summary>
bool IsCompletionWindowDisplayed {get;}
/// <summary>
/// Makes the current text content read only. Text can be entered at the end.
/// </summary>
void MakeCurrentContentReadOnly();
}
}

3
src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/IRubyConsolePad.cs

@ -6,13 +6,14 @@
// </file> // </file>
using System; using System;
using ICSharpCode.Scripting;
namespace ICSharpCode.RubyBinding namespace ICSharpCode.RubyBinding
{ {
public interface IRubyConsolePad public interface IRubyConsolePad
{ {
void BringToFront(); void BringToFront();
IConsoleTextEditor ConsoleTextEditor { get; } IScriptingConsoleTextEditor ConsoleTextEditor { get; }
IRubyConsole RubyConsole { get; } IRubyConsole RubyConsole { get; }
} }
} }

6
src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsole.cs

@ -19,7 +19,7 @@ namespace ICSharpCode.RubyBinding
{ {
public class RubyConsole : IConsole, IDisposable, IMemberProvider, IRubyConsole public class RubyConsole : IConsole, IDisposable, IMemberProvider, IRubyConsole
{ {
IConsoleTextEditor textEditor; IScriptingConsoleTextEditor textEditor;
int lineReceivedEventIndex = 0; // The index into the waitHandles array where the lineReceivedEvent is stored. int lineReceivedEventIndex = 0; // The index into the waitHandles array where the lineReceivedEvent is stored.
ManualResetEvent lineReceivedEvent = new ManualResetEvent(false); ManualResetEvent lineReceivedEvent = new ManualResetEvent(false);
ManualResetEvent disposedEvent = new ManualResetEvent(false); ManualResetEvent disposedEvent = new ManualResetEvent(false);
@ -31,7 +31,7 @@ namespace ICSharpCode.RubyBinding
protected List<string> unreadLines = new List<string>(); protected List<string> unreadLines = new List<string>();
public RubyConsole(IConsoleTextEditor textEditor) public RubyConsole(IScriptingConsoleTextEditor textEditor)
{ {
waitHandles = new WaitHandle[] {lineReceivedEvent, disposedEvent}; waitHandles = new WaitHandle[] {lineReceivedEvent, disposedEvent};
@ -314,7 +314,7 @@ namespace ICSharpCode.RubyBinding
void ShowCompletionWindow() void ShowCompletionWindow()
{ {
RubyConsoleCompletionDataProvider completionProvider = new RubyConsoleCompletionDataProvider(this); ScriptingConsoleCompletionDataProvider completionProvider = new ScriptingConsoleCompletionDataProvider(this);
textEditor.ShowCompletionWindow(completionProvider); textEditor.ShowCompletionWindow(completionProvider);
} }

50
src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsoleCompletionData.cs

@ -1,50 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Windows.Media;
using ICSharpCode.AvalonEdit.CodeCompletion;
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Editing;
namespace ICSharpCode.RubyBinding
{
public class RubyConsoleCompletionData : ICompletionData
{
string text = String.Empty;
public RubyConsoleCompletionData(string text)
{
this.text = text;
}
public ImageSource Image {
get { return null; }
}
public string Text {
get { return text; }
}
public object Content {
get { return text; }
}
public object Description {
get { return null; }
}
public double Priority {
get { return 0; }
}
public void Complete(TextArea textArea, ISegment completionSegment, EventArgs insertionRequestEventArgs)
{
textArea.Document.Replace(completionSegment, text);
}
}
}

65
src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsoleCompletionDataProvider.cs

@ -1,65 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Collections.Generic;
using ICSharpCode.AvalonEdit.CodeCompletion;
using ICSharpCode.Core;
using ICSharpCode.Scripting;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
namespace ICSharpCode.RubyBinding
{
/// <summary>
/// Provides code completion for the Ruby Console window.
/// </summary>
public class RubyConsoleCompletionDataProvider
{
IMemberProvider memberProvider;
public RubyConsoleCompletionDataProvider(IMemberProvider memberProvider)
{
this.memberProvider = memberProvider;
//DefaultIndex = 0;
}
public ICompletionData[] GenerateCompletionData(IConsoleTextEditor textEditor)
{
string line = textEditor.GetLine(textEditor.TotalLines - 1);
return GenerateCompletionData(line);
}
/// <summary>
/// Generates completion data for the specified text. The text should be everything before
/// the dot character that triggered the completion. The text can contain the command line prompt
/// '>>>' as this will be ignored.
/// </summary>
public ICompletionData[] GenerateCompletionData(string line)
{
List<RubyConsoleCompletionData> items = new List<RubyConsoleCompletionData>();
string name = GetName(line);
if (!String.IsNullOrEmpty(name)) {
try {
foreach (string member in memberProvider.GetMemberNames(name)) {
items.Add(new RubyConsoleCompletionData(member));
}
} catch {
// Do nothing.
}
}
return items.ToArray();
}
string GetName(string text)
{
int startIndex = text.LastIndexOf(' ');
return text.Substring(startIndex + 1);
}
}
}

6
src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsoleHost.cs

@ -8,6 +8,8 @@
using System; using System;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using ICSharpCode.Scripting;
using IronRuby; using IronRuby;
using IronRuby.Hosting; using IronRuby.Hosting;
using IronRuby.Runtime; using IronRuby.Runtime;
@ -19,10 +21,10 @@ namespace ICSharpCode.RubyBinding
public class RubyConsoleHost : ConsoleHost, IDisposable public class RubyConsoleHost : ConsoleHost, IDisposable
{ {
Thread thread; Thread thread;
IConsoleTextEditor textEditor; IScriptingConsoleTextEditor textEditor;
RubyConsole rubyConsole; RubyConsole rubyConsole;
public RubyConsoleHost(IConsoleTextEditor textEditor) public RubyConsoleHost(IScriptingConsoleTextEditor textEditor)
{ {
this.textEditor = textEditor; this.textEditor = textEditor;
rubyConsole = new RubyConsole(textEditor); rubyConsole = new RubyConsole(textEditor);

5
src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsolePad.cs

@ -6,8 +6,9 @@
// </file> // </file>
using System; using System;
using AvalonEdit = ICSharpCode.AvalonEdit; using ICSharpCode.Scripting;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
using AvalonEdit = ICSharpCode.AvalonEdit;
namespace ICSharpCode.RubyBinding namespace ICSharpCode.RubyBinding
{ {
@ -25,7 +26,7 @@ namespace ICSharpCode.RubyBinding
host.Run(); host.Run();
} }
public IConsoleTextEditor ConsoleTextEditor { public IScriptingConsoleTextEditor ConsoleTextEditor {
get { return consoleTextEditor; } get { return consoleTextEditor; }
} }

4
src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyConsoleTextEditor.cs

@ -19,7 +19,7 @@ using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.RubyBinding namespace ICSharpCode.RubyBinding
{ {
public class RubyConsoleTextEditor : IConsoleTextEditor public class RubyConsoleTextEditor : IScriptingConsoleTextEditor
{ {
TextEditor textEditor; TextEditor textEditor;
Color customLineColour = Color.LightGray; Color customLineColour = Color.LightGray;
@ -116,7 +116,7 @@ namespace ICSharpCode.RubyBinding
readOnlyRegion.EndOffset = textEditor.Document.TextLength; readOnlyRegion.EndOffset = textEditor.Document.TextLength;
} }
public void ShowCompletionWindow(RubyConsoleCompletionDataProvider completionDataProvider) public void ShowCompletionWindow(ScriptingConsoleCompletionDataProvider completionDataProvider)
{ {
ICompletionData[] items = completionDataProvider.GenerateCompletionData(this); ICompletionData[] items = completionDataProvider.GenerateCompletionData(this);
if (items.Length > 0) { if (items.Length > 0) {

6
src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyOutputStream.cs

@ -9,13 +9,15 @@ using System;
using System.IO; using System.IO;
using System.Text; using System.Text;
using ICSharpCode.Scripting;
namespace ICSharpCode.RubyBinding namespace ICSharpCode.RubyBinding
{ {
public class RubyOutputStream : Stream public class RubyOutputStream : Stream
{ {
IConsoleTextEditor textEditor; IScriptingConsoleTextEditor textEditor;
public RubyOutputStream(IConsoleTextEditor textEditor) public RubyOutputStream(IScriptingConsoleTextEditor textEditor)
{ {
this.textEditor = textEditor; this.textEditor = textEditor;
} }

10
src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/ThreadSafeRubyConsoleTextEditor.cs

@ -11,11 +11,11 @@ using ICSharpCode.Scripting;
namespace ICSharpCode.RubyBinding namespace ICSharpCode.RubyBinding
{ {
public class ThreadSafeRubyConsoleTextEditor : IConsoleTextEditor public class ThreadSafeRubyConsoleTextEditor : IScriptingConsoleTextEditor
{ {
delegate string GetLineInvoker(int index); delegate string GetLineInvoker(int index);
IConsoleTextEditor consoleTextEditor; IScriptingConsoleTextEditor consoleTextEditor;
IControlDispatcher dispatcher; IControlDispatcher dispatcher;
public ThreadSafeRubyConsoleTextEditor(TextEditor textEditor) public ThreadSafeRubyConsoleTextEditor(TextEditor textEditor)
@ -23,7 +23,7 @@ namespace ICSharpCode.RubyBinding
{ {
} }
public ThreadSafeRubyConsoleTextEditor(IConsoleTextEditor consoleTextEditor, IControlDispatcher dispatcher) public ThreadSafeRubyConsoleTextEditor(IScriptingConsoleTextEditor consoleTextEditor, IControlDispatcher dispatcher)
{ {
this.consoleTextEditor = consoleTextEditor; this.consoleTextEditor = consoleTextEditor;
this.dispatcher = dispatcher; this.dispatcher = dispatcher;
@ -95,12 +95,12 @@ namespace ICSharpCode.RubyBinding
} }
} }
public void ShowCompletionWindow(RubyConsoleCompletionDataProvider completionDataProvider) public void ShowCompletionWindow(ScriptingConsoleCompletionDataProvider completionDataProvider)
{ {
if (dispatcher.CheckAccess()) { if (dispatcher.CheckAccess()) {
consoleTextEditor.ShowCompletionWindow(completionDataProvider); consoleTextEditor.ShowCompletionWindow(completionDataProvider);
} else { } else {
Action<RubyConsoleCompletionDataProvider> action = ShowCompletionWindow; Action<ScriptingConsoleCompletionDataProvider> action = ShowCompletionWindow;
dispatcher.Invoke(action, completionDataProvider); dispatcher.Invoke(action, completionDataProvider);
} }
} }

66
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/CodeCompletionTests.cs

@ -1,66 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.AvalonEdit.CodeCompletion;
using ICSharpCode.RubyBinding;
using ICSharpCode.Scripting.Tests.Console;
using ICSharpCode.SharpDevelop;
using NUnit.Framework;
namespace RubyBinding.Tests.Console
{
[TestFixture]
public class EmptyStringCodeCompletionTestFixture
{
MockMemberProvider memberProvider;
RubyConsoleCompletionDataProvider completionProvider;
[SetUp]
public void Init()
{
memberProvider = new MockMemberProvider();
completionProvider = new RubyConsoleCompletionDataProvider(memberProvider);
}
/// <summary>
/// If the user presses the dot character without having any text in the command line then
/// a SyntaxException occurs if the code calls IronRuby's CommandLine.GetMemberNames. So this
/// tests ensures that if the string is empty then this method is not called.
/// </summary>
[Test]
public void NoCompletionItemsGeneratedForEmptyString()
{
memberProvider.SetMemberNames(new string[] {"a"});
memberProvider.SetGlobals(new string[] {"a"});
Assert.AreEqual(0, completionProvider.GenerateCompletionData(">>> ").Length);
}
/// <summary>
/// Checks that the GenerateCompletionData method catches any exceptions thrown by the
/// IMemberProvider implementation. This can occur when an invalid name is passed to
/// IronRuby's CommandLine.GetMemberNames or GetGlobals. For example, an UnboundNameException is
/// thrown if an unknown name is used.
/// </summary>
[Test]
public void NoCompletionItemsGeneratedWhenExceptionThrown()
{
memberProvider.ExceptionToThrow = new ApplicationException("Should not be thrown");
Assert.AreEqual(0, completionProvider.GenerateCompletionData(">>> a").Length);
}
[Test]
public void UnderscoresPassedToGetMemberNames()
{
completionProvider.GenerateCompletionData(">>> __builtins__");
Assert.AreEqual("__builtins__", memberProvider.GetMemberNamesParameter);
}
}
}

47
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/InsertConsoleCompletionDataTestFixture.cs

@ -1,47 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.AvalonEdit;
using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.RubyBinding;
using NUnit.Framework;
namespace RubyBinding.Tests.Console
{
[TestFixture]
public class InsertConsoleCompletionDataTestFixture
{
RubyConsoleCompletionData completionData;
TextEditor textEditor;
[SetUp]
public void Init()
{
textEditor = new TextEditor();
}
[Test]
public void TextInsertedAtCursor()
{
textEditor.Text = "abc.n";
textEditor.CaretOffset = 4;
int startOffset = 4;
int endOffset = 5;
SimpleSelection selection = new SimpleSelection(startOffset, endOffset);
completionData = new RubyConsoleCompletionData("new");
completionData.Complete(textEditor.TextArea, selection, null);
string expectedText =
"abc.new";
Assert.AreEqual(expectedText, textEditor.Text);
}
}
}

10
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/RubyConsoleCodeCompletionTestFixture.cs

@ -7,10 +7,12 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Windows.Input;
using System.Threading; using System.Threading;
using Microsoft.Scripting.Hosting.Shell; using System.Windows.Input;
using ICSharpCode.RubyBinding; using ICSharpCode.RubyBinding;
using ICSharpCode.Scripting;
using Microsoft.Scripting.Hosting.Shell;
using NUnit.Framework; using NUnit.Framework;
using RubyBinding.Tests.Utils; using RubyBinding.Tests.Utils;
@ -49,9 +51,9 @@ namespace RubyBinding.Tests.Console
} }
[Test] [Test]
public void RubyConsoleCompletionDataProviderPassedToShowCompletionWindowMethod() public void ScriptingConsoleCompletionDataProviderPassedToShowCompletionWindowMethod()
{ {
Assert.IsInstanceOf(typeof(RubyConsoleCompletionDataProvider), MockConsoleTextEditor.CompletionProviderPassedToShowCompletionWindow); Assert.IsInstanceOf(typeof(ScriptingConsoleCompletionDataProvider), MockConsoleTextEditor.CompletionProviderPassedToShowCompletionWindow);
} }
} }
} }

4
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/RubyConsoleCurrentLineTestFixture.cs

@ -7,11 +7,11 @@
using System; using System;
using System.Windows.Input; using System.Windows.Input;
using ICSharpCode.RubyBinding;
using ICSharpCode.Scripting.Tests.Utils;
using Microsoft.Scripting; using Microsoft.Scripting;
using Microsoft.Scripting.Hosting; using Microsoft.Scripting.Hosting;
using Microsoft.Scripting.Hosting.Shell; using Microsoft.Scripting.Hosting.Shell;
using ICSharpCode.RubyBinding;
using NUnit.Framework; using NUnit.Framework;
using RubyBinding.Tests.Utils; using RubyBinding.Tests.Utils;

4
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/RubyConsoleHostTests.cs

@ -6,15 +6,15 @@
// </file> // </file>
using System; using System;
using ICSharpCode.AvalonEdit; using ICSharpCode.AvalonEdit;
using ICSharpCode.RubyBinding; using ICSharpCode.RubyBinding;
using ICSharpCode.Scripting.Tests.Utils;
using IronRuby.Hosting; using IronRuby.Hosting;
using IronRuby.Runtime; using IronRuby.Runtime;
using NUnit.Framework;
using Microsoft.Scripting; using Microsoft.Scripting;
using Microsoft.Scripting.Hosting; using Microsoft.Scripting.Hosting;
using Microsoft.Scripting.Hosting.Shell; using Microsoft.Scripting.Hosting.Shell;
using NUnit.Framework;
using RubyBinding.Tests.Utils; using RubyBinding.Tests.Utils;
namespace RubyBinding.Tests.Console namespace RubyBinding.Tests.Console

1
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/RubyConsoleReadTestFixture.cs

@ -10,6 +10,7 @@ using System.Threading;
using System.Windows.Input; using System.Windows.Input;
using ICSharpCode.RubyBinding; using ICSharpCode.RubyBinding;
using ICSharpCode.Scripting.Tests.Utils;
using NUnit.Framework; using NUnit.Framework;
using RubyBinding.Tests.Utils; using RubyBinding.Tests.Utils;

1
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/RubyConsoleTestsBase.cs

@ -7,6 +7,7 @@
using System; using System;
using ICSharpCode.RubyBinding; using ICSharpCode.RubyBinding;
using ICSharpCode.Scripting.Tests.Utils;
using RubyBinding.Tests.Utils; using RubyBinding.Tests.Utils;
namespace RubyBinding.Tests.Console namespace RubyBinding.Tests.Console

8
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/RubyConsoleTextEditorTests.cs

@ -9,9 +9,11 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading; using System.Threading;
using System.Windows.Input; using System.Windows.Input;
using ICSharpCode.AvalonEdit; using ICSharpCode.AvalonEdit;
using ICSharpCode.AvalonEdit.Editing; using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.RubyBinding; using ICSharpCode.RubyBinding;
using ICSharpCode.Scripting;
using NUnit.Framework; using NUnit.Framework;
using RubyBinding.Tests.Utils; using RubyBinding.Tests.Utils;
@ -31,9 +33,9 @@ namespace RubyBinding.Tests.Console
} }
[Test] [Test]
public void RubyConsoleTextEditorImplementsIConsoleTextEditorInterface() public void RubyConsoleTextEditorImplementsIScriptingConsoleTextEditorInterface()
{ {
Assert.IsNotNull(consoleTextEditor as IConsoleTextEditor); Assert.IsNotNull(consoleTextEditor as IScriptingConsoleTextEditor);
} }
[Test] [Test]
@ -90,7 +92,7 @@ namespace RubyBinding.Tests.Console
AssertSelectionsAreEqual(expectedSelection, consoleTextEditor); AssertSelectionsAreEqual(expectedSelection, consoleTextEditor);
} }
void AssertSelectionsAreEqual(SimpleSelection expectedSelection, IConsoleTextEditor consoleTextEditor) void AssertSelectionsAreEqual(SimpleSelection expectedSelection, IScriptingConsoleTextEditor consoleTextEditor)
{ {
int selectionLength = consoleTextEditor.SelectionStart + consoleTextEditor.SelectionLength; int selectionLength = consoleTextEditor.SelectionStart + consoleTextEditor.SelectionLength;
SimpleSelection actualSelection = new SimpleSelection(consoleTextEditor.SelectionStart, selectionLength); SimpleSelection actualSelection = new SimpleSelection(consoleTextEditor.SelectionStart, selectionLength);

1
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/RubyOutputStreamTestFixture.cs

@ -10,6 +10,7 @@ using System.IO;
using System.Text; using System.Text;
using ICSharpCode.RubyBinding; using ICSharpCode.RubyBinding;
using ICSharpCode.Scripting.Tests.Utils;
using NUnit.Framework; using NUnit.Framework;
using RubyBinding.Tests.Utils; using RubyBinding.Tests.Utils;

1
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/ThreadSafeRubyConsoleTextEditorTests.cs

@ -13,6 +13,7 @@ using System.Windows.Input;
using ICSharpCode.AvalonEdit; using ICSharpCode.AvalonEdit;
using ICSharpCode.AvalonEdit.Editing; using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.RubyBinding; using ICSharpCode.RubyBinding;
using ICSharpCode.Scripting.Tests.Utils;
using ICSharpCode.Scripting.Tests.Utils.Tests; using ICSharpCode.Scripting.Tests.Utils.Tests;
using NUnit.Framework; using NUnit.Framework;
using RubyBinding.Tests.Utils; using RubyBinding.Tests.Utils;

6
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Console/TwoRubyConsoleLinesWaitingTestFixture.cs

@ -7,16 +7,16 @@
using System; using System;
using System.Threading; using System.Threading;
using Input = System.Windows.Input;
using ICSharpCode.RubyBinding; using ICSharpCode.RubyBinding;
using ICSharpCode.Scripting.Tests.Utils;
using IronRuby.Hosting; using IronRuby.Hosting;
using IronRuby.Runtime; using IronRuby.Runtime;
using NUnit.Framework;
using Microsoft.Scripting; using Microsoft.Scripting;
using Microsoft.Scripting.Hosting; using Microsoft.Scripting.Hosting;
using Microsoft.Scripting.Hosting.Shell; using Microsoft.Scripting.Hosting.Shell;
using NUnit.Framework;
using RubyBinding.Tests.Utils; using RubyBinding.Tests.Utils;
using Input = System.Windows.Input;
namespace RubyBinding.Tests.Console namespace RubyBinding.Tests.Console
{ {

4
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/RubyBinding.Tests.csproj

@ -72,9 +72,7 @@
<ItemGroup> <ItemGroup>
<Compile Include="AssemblyInfo.cs" /> <Compile Include="AssemblyInfo.cs" />
<Compile Include="Configuration\RubyAddInOptionsTestFixture.cs" /> <Compile Include="Configuration\RubyAddInOptionsTestFixture.cs" />
<Compile Include="Console\CodeCompletionTests.cs" />
<Compile Include="Console\DisposedRubyConsoleTestFixture.cs" /> <Compile Include="Console\DisposedRubyConsoleTestFixture.cs" />
<Compile Include="Console\InsertConsoleCompletionDataTestFixture.cs" />
<Compile Include="Console\KeysPressedWhenCompletionWindowOpenTestFixture.cs" /> <Compile Include="Console\KeysPressedWhenCompletionWindowOpenTestFixture.cs" />
<Compile Include="Console\RubyConsoleCodeCompletionTestFixture.cs" /> <Compile Include="Console\RubyConsoleCodeCompletionTestFixture.cs" />
<Compile Include="Console\RubyConsoleCommandLineHistoryTestFixture.cs" /> <Compile Include="Console\RubyConsoleCommandLineHistoryTestFixture.cs" />
@ -338,7 +336,6 @@
<Compile Include="Utils\MockRubyConsole.cs" /> <Compile Include="Utils\MockRubyConsole.cs" />
<Compile Include="Utils\MockRubyConsolePad.cs" /> <Compile Include="Utils\MockRubyConsolePad.cs" />
<Compile Include="Utils\MockRubyFileService.cs" /> <Compile Include="Utils\MockRubyFileService.cs" />
<Compile Include="Utils\MockConsoleTextEditor.cs" />
<Compile Include="Utils\MockWorkbench.cs" /> <Compile Include="Utils\MockWorkbench.cs" />
<Compile Include="Utils\RubyBindingAddInFile.cs" /> <Compile Include="Utils\RubyBindingAddInFile.cs" />
<Compile Include="Utils\RubyMSBuildEngineHelper.cs" /> <Compile Include="Utils\RubyMSBuildEngineHelper.cs" />
@ -346,7 +343,6 @@
<Compile Include="Utils\RubySelectedTestsHelper.cs" /> <Compile Include="Utils\RubySelectedTestsHelper.cs" />
<Compile Include="Utils\TestableRubyConsole.cs" /> <Compile Include="Utils\TestableRubyConsole.cs" />
<Compile Include="Utils\Tests\AddInPathHelperTestFixture.cs" /> <Compile Include="Utils\Tests\AddInPathHelperTestFixture.cs" />
<Compile Include="Utils\Tests\MockConsoleTextEditorTestFixture.cs" />
<Compile Include="Utils\Tests\MockRubyFileServiceTestFixture.cs" /> <Compile Include="Utils\Tests\MockRubyFileServiceTestFixture.cs" />
<EmbeddedResource Include="..\Project\RubyBinding.addin"> <EmbeddedResource Include="..\Project\RubyBinding.addin">
<Link>RubyBinding.addin</Link> <Link>RubyBinding.addin</Link>

4
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Utils/DerivedRubyConsoleHost.cs

@ -7,8 +7,8 @@
using System; using System;
using System.IO; using System.IO;
using ICSharpCode.RubyBinding; using ICSharpCode.RubyBinding;
using ICSharpCode.Scripting;
using Microsoft.Scripting; using Microsoft.Scripting;
using Microsoft.Scripting.Hosting; using Microsoft.Scripting.Hosting;
using Microsoft.Scripting.Hosting.Shell; using Microsoft.Scripting.Hosting.Shell;
@ -19,7 +19,7 @@ namespace RubyBinding.Tests.Console
{ {
RubyOutputStream outputStream; RubyOutputStream outputStream;
public DerivedRubyConsoleHost(IConsoleTextEditor textEditor) : base(textEditor) public DerivedRubyConsoleHost(IScriptingConsoleTextEditor textEditor) : base(textEditor)
{ {
} }

4
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Utils/MockRubyConsolePad.cs

@ -7,6 +7,8 @@
using System; using System;
using ICSharpCode.RubyBinding; using ICSharpCode.RubyBinding;
using ICSharpCode.Scripting;
using ICSharpCode.Scripting.Tests.Utils;
namespace RubyBinding.Tests.Utils namespace RubyBinding.Tests.Utils
{ {
@ -22,7 +24,7 @@ namespace RubyBinding.Tests.Utils
BringToFrontCalled = true; BringToFrontCalled = true;
} }
public IConsoleTextEditor ConsoleTextEditor { public IScriptingConsoleTextEditor ConsoleTextEditor {
get { return MockConsoleTextEditor; } get { return MockConsoleTextEditor; }
} }

2
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Utils/TestableRubyConsole.cs

@ -26,7 +26,7 @@ namespace RubyBinding.Tests.Utils
{ {
} }
TestableRubyConsole(IConsoleTextEditor consoleTextEditor, RubyCommandLine commandLine) TestableRubyConsole(IScriptingConsoleTextEditor consoleTextEditor, RubyCommandLine commandLine)
: base(consoleTextEditor) : base(consoleTextEditor)
{ {
CommandLine = commandLine; CommandLine = commandLine;

351
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Utils/Tests/MockConsoleTextEditorTestFixture.cs

@ -1,351 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Windows.Input;
using ICSharpCode.RubyBinding;
using ICSharpCode.Scripting;
using NUnit.Framework;
using RubyBinding.Tests.Console;
using RubyBinding.Tests.Utils;
namespace RubyBinding.Tests.Utils.Tests
{
[TestFixture]
public class MockConsoleTextEditorTestFixture
{
MockConsoleTextEditor textEditor;
[SetUp]
public void Init()
{
textEditor = new MockConsoleTextEditor();
}
[Test]
public void TextReturnsEmptyStringByDefault()
{
Assert.AreEqual(String.Empty, textEditor.Text);
}
[Test]
public void TextReturnsTextWritten()
{
textEditor.Write("abc");
Assert.AreEqual("abc", textEditor.Text);
}
[Test]
public void ColumnReturnsPositionAfterTextWritten()
{
textEditor.Write("ab");
Assert.AreEqual(2, textEditor.Column);
}
[Test]
public void TextReturnsAllTextWritten()
{
textEditor.Write("a");
textEditor.Write("b");
Assert.AreEqual("ab", textEditor.Text);
}
[Test]
public void ColumnReturnsPositionAfterTextWhenWriteCalledTwice()
{
textEditor.Write("a");
textEditor.Write("bb");
Assert.AreEqual(3, textEditor.Column);
}
[Test]
public void IsWriteCalledReturnsTrueAfterWriteMethodCalled()
{
textEditor.Write("a");
Assert.IsTrue(textEditor.IsWriteCalled);
}
[Test]
public void SettingTextSetsColumnToPositionAfterText()
{
textEditor.Text = "abc";
Assert.AreEqual(3, textEditor.Column);
}
[Test]
public void SettingTextSetsSelectionStartToPositionAfterText()
{
textEditor.Text = "abc";
Assert.AreEqual(3, textEditor.SelectionStart);
}
[Test]
public void TotalLinesEqualsOneByDefault()
{
Assert.AreEqual(1, textEditor.TotalLines);
}
[Test]
public void TotalLinesReturnsTwoWhenTextSetWithTwoLines()
{
textEditor.Text =
"ab\n" +
"cd";
Assert.AreEqual(2, textEditor.TotalLines);
}
[Test]
public void ColumnReturnsPositionAfterLastCharacterOnLastLineWhenTextSetWithTwoLines()
{
textEditor.Text =
"ab\n" +
"c";
Assert.AreEqual(1, textEditor.Column);
}
[Test]
public void SelectionStartReturnsPositionAfterLastCharacterOnLastLineWhenTextSetWithTwoLines()
{
textEditor.Text =
"ab\n" +
"c";
Assert.AreEqual(1, textEditor.SelectionStart);
}
[Test]
public void NoTextAddedWhenPreviewKeyDownEventHandlerReturnsTrue()
{
textEditor.PreviewKeyDown += delegate(object source, ConsoleTextEditorKeyEventArgs e) {
e.Handled = true;
};
textEditor.RaisePreviewKeyDownEvent(Key.A);
Assert.AreEqual(String.Empty, textEditor.Text);
}
[Test]
public void RaisePreviewKeyDownEventReturnsTrueWhenPreviewDownHandlerReturnsTrue()
{
textEditor.PreviewKeyDown += delegate(object source, ConsoleTextEditorKeyEventArgs e) {
e.Handled = true;
};
Assert.IsTrue(textEditor.RaisePreviewKeyDownEvent(System.Windows.Input.Key.A));
}
[Test]
public void KeyPressWhenCursorInsideTextInsertsTextAtCursor()
{
textEditor.Text = "abcdef";
textEditor.Column = 3;
textEditor.RaisePreviewKeyDownEvent(Key.X);
Assert.AreEqual("abcXdef", textEditor.Text);
}
[Test]
public void GetLineWithIndex2ReturnsLastLineForThreeLinesOfText()
{
textEditor.Text =
"abc\n" +
"def\n" +
"ghi";
Assert.AreEqual("ghi", textEditor.GetLine(2));
}
[Test]
public void ReplaceMethodReplacesTextOnLastLine()
{
textEditor.Text =
"1\n" +
"2\n" +
"abcdef";
int index = 1;
int lengthToRemove = 4;
string newText = "123";
textEditor.Replace(index, lengthToRemove, newText);
string expectedText =
"1\n" +
"2\n" +
"a123f";
Assert.AreEqual(expectedText, textEditor.Text);
}
[Test]
public void LeftCursorDialogKeyPressMovesSelectionStartToLeft()
{
textEditor.Text = "abc";
textEditor.SelectionStart = 3;
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Left);
Assert.AreEqual(2, textEditor.SelectionStart);
}
[Test]
public void LeftCursorDialogKeyPressMovesCursorToLeft()
{
textEditor.Text = "abc";
textEditor.SelectionStart = 3;
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Left);
Assert.AreEqual(2, textEditor.Column);
}
[Test]
public void CursorPositionUnchangedWhenDialogKeyPressEventHandlerReturnsTrue()
{
textEditor.Text = "abc";
textEditor.Column = 3;
textEditor.PreviewKeyDown += delegate(object source, ConsoleTextEditorKeyEventArgs e) {
e.Handled = true;
};
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Left);
Assert.AreEqual(3, textEditor.Column);
}
[Test]
public void RaiseDialogKeyPressEventReturnsTruedWhenDialogKeyPressEventHandlerReturnsTrue()
{
textEditor.Text = "abc";
textEditor.Column = 3;
textEditor.PreviewKeyDown += delegate(object source, ConsoleTextEditorKeyEventArgs e) {
e.Handled = true;
};
Assert.IsTrue(textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Left));
}
[Test]
public void RightCursorDialogKeyPressMovesCursorToRight()
{
textEditor.Text = "abc";
textEditor.Column = 0;
textEditor.SelectionStart = 0;
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Right);
Assert.AreEqual(1, textEditor.Column);
}
[Test]
public void RightCursorDialogKeyPressMovesSelectionStartToRight()
{
textEditor.Text = "abc";
textEditor.Column = 0;
textEditor.SelectionStart = 0;
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Right);
Assert.AreEqual(1, textEditor.SelectionStart);
}
[Test]
public void BackspaceDialogKeyPressRemovesLastCharacterFromLine()
{
textEditor.Text = "abc";
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Back);
Assert.AreEqual("ab", textEditor.Text);
}
[Test]
public void BackspaceDialogKeyPressRemovesSelectedTextFromLine()
{
textEditor.Text = "abcd";
textEditor.SelectionStart = 1;
textEditor.SelectionLength = 2;
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Back);
Assert.AreEqual("ad", textEditor.Text);
}
[Test]
public void EnterDialogKeyPressCreatesNewLine()
{
textEditor.Text = "abc";
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Enter);
string expectedText = "abc\r\n";
Assert.AreEqual(expectedText, textEditor.Text);
}
[Test]
public void ColumnResetToZeroAfterEnterDialogKeyPress()
{
textEditor.Text = "abc";
textEditor.Column = 3;
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Enter);
Assert.AreEqual(0, textEditor.Column);
}
[Test]
public void SelectionStartResetToZeroAfterEnterDialogKeyPress()
{
textEditor.Text = "abc";
textEditor.SelectionStart = 3;
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Enter);
Assert.AreEqual(0, textEditor.Column);
}
[Test]
public void EnterDialogKeyPressDoesNothingWhenKeyPressEventHandlerReturnsTrue()
{
textEditor.Text = "abc";
textEditor.PreviewKeyDown += delegate(object source, ConsoleTextEditorKeyEventArgs e) {
if (e.Key == Key.Enter) {
e.Handled = true;
} else {
e.Handled = false;
}
};
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Enter);
Assert.AreEqual("abc", textEditor.Text);
}
[Test]
public void EnterDialogKeyPressIncreasesTotalLineCountByOne()
{
textEditor.Text = "abc";
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Enter);
Assert.AreEqual(2, textEditor.TotalLines);
}
[Test]
public void EnterDialogKeyPressIncreasesCurrentLineByOne()
{
textEditor.Text = "abc";
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Enter);
Assert.AreEqual(1, textEditor.Line);
}
[Test]
public void EnterDialogKeyPressInMiddleOfLinePutsTextAfterCursorOnNewLine()
{
textEditor.Text = "abcd";
textEditor.Column = 2;
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Enter);
string expectedText =
"ab\r\n" +
"cd";
Assert.AreEqual(expectedText, textEditor.Text);
}
[Test]
public void EnterDialogKeyPressInMiddleOfLinePutsSelectionStartAtEndOfNewLineGenerated()
{
textEditor.Text = "abcd";
textEditor.Column = 3;
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Enter);
Assert.AreEqual(1, textEditor.SelectionStart);
}
[Test]
public void EnterDialogKeyPressInMiddleOfLinePutsCursorAtEndOfNewLineGenerated()
{
textEditor.Text = "abcd";
textEditor.Column = 3;
textEditor.RaisePreviewKeyDownEventForDialogKey(Key.Enter);
Assert.AreEqual(1, textEditor.Column);
}
}
}

27
src/AddIns/BackendBindings/Scripting/Project/ICSharpCode.Scripting.csproj

@ -39,7 +39,14 @@
<Reference Include="PresentationCore"> <Reference Include="PresentationCore">
<RequiredTargetFramework>3.0</RequiredTargetFramework> <RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference> </Reference>
<Reference Include="PresentationFramework">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Drawing" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="WindowsBase"> <Reference Include="WindowsBase">
<RequiredTargetFramework>3.0</RequiredTargetFramework> <RequiredTargetFramework>3.0</RequiredTargetFramework>
@ -62,7 +69,27 @@
<Compile Include="Src\IControlDispatcher.cs" /> <Compile Include="Src\IControlDispatcher.cs" />
<Compile Include="Src\ILock.cs" /> <Compile Include="Src\ILock.cs" />
<Compile Include="Src\IMemberProvider.cs" /> <Compile Include="Src\IMemberProvider.cs" />
<Compile Include="Src\IScriptingConsoleTextEditor.cs" />
<Compile Include="Src\ScriptingConsoleCompletionData.cs" />
<Compile Include="Src\ScriptingConsoleCompletionDataProvider.cs" />
<Compile Include="Src\StringListLock.cs" /> <Compile Include="Src\StringListLock.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj">
<Project>{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}</Project>
<Name>ICSharpCode.AvalonEdit</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Core\Project\ICSharpCode.Core.csproj">
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project>
<Name>ICSharpCode.Core</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project> </Project>

9
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/IConsoleTextEditor.cs → src/AddIns/BackendBindings/Scripting/Project/Src/IScriptingConsoleTextEditor.cs

@ -8,16 +8,15 @@
using System; using System;
using System.Drawing; using System.Drawing;
using System.Windows.Input; using System.Windows.Input;
using ICSharpCode.Scripting;
namespace ICSharpCode.PythonBinding namespace ICSharpCode.Scripting
{ {
/// <summary> /// <summary>
/// The interface that the text editor used by the PythonConsole needs to be implement. Note that /// The interface that the text editor used by the Python and Ruby Consoles needs to be implement. Note that
/// all the methods will be called on another thread not the main UI thread and will therefore need to /// all the methods will be called on another thread not the main UI thread and will therefore need to
/// be invoked. /// be invoked.
/// </summary> /// </summary>
public interface IConsoleTextEditor : IDisposable public interface IScriptingConsoleTextEditor : IDisposable
{ {
/// <summary> /// <summary>
/// Fired when a key is pressed but before any text has been added to the text editor. /// Fired when a key is pressed but before any text has been added to the text editor.
@ -71,7 +70,7 @@ namespace ICSharpCode.PythonBinding
/// <summary> /// <summary>
/// Shows the code completion window. /// Shows the code completion window.
/// </summary> /// </summary>
void ShowCompletionWindow(PythonConsoleCompletionDataProvider completionDataProvider); void ShowCompletionWindow(ScriptingConsoleCompletionDataProvider completionDataProvider);
/// <summary> /// <summary>
/// Indicates whether the completion window is currently being displayed. /// Indicates whether the completion window is currently being displayed.

6
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsoleCompletionData.cs → src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsoleCompletionData.cs

@ -11,13 +11,13 @@ using ICSharpCode.AvalonEdit.CodeCompletion;
using ICSharpCode.AvalonEdit.Document; using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Editing; using ICSharpCode.AvalonEdit.Editing;
namespace ICSharpCode.PythonBinding namespace ICSharpCode.Scripting
{ {
public class PythonConsoleCompletionData : ICompletionData public class ScriptingConsoleCompletionData : ICompletionData
{ {
string text = String.Empty; string text = String.Empty;
public PythonConsoleCompletionData(string text) public ScriptingConsoleCompletionData(string text)
{ {
this.text = text; this.text = text;
} }

15
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonConsoleCompletionDataProvider.cs → src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingConsoleCompletionDataProvider.cs

@ -9,25 +9,24 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using ICSharpCode.AvalonEdit.CodeCompletion; using ICSharpCode.AvalonEdit.CodeCompletion;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.Scripting;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion; using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
namespace ICSharpCode.PythonBinding namespace ICSharpCode.Scripting
{ {
/// <summary> /// <summary>
/// Provides code completion for the Python Console window. /// Provides code completion for the Scripting Console window.
/// </summary> /// </summary>
public class PythonConsoleCompletionDataProvider public class ScriptingConsoleCompletionDataProvider
{ {
IMemberProvider memberProvider; IMemberProvider memberProvider;
public PythonConsoleCompletionDataProvider(IMemberProvider memberProvider) public ScriptingConsoleCompletionDataProvider(IMemberProvider memberProvider)
{ {
this.memberProvider = memberProvider; this.memberProvider = memberProvider;
} }
public ICompletionData[] GenerateCompletionData(IConsoleTextEditor textEditor) public ICompletionData[] GenerateCompletionData(IScriptingConsoleTextEditor textEditor)
{ {
string line = textEditor.GetLine(textEditor.TotalLines - 1); string line = textEditor.GetLine(textEditor.TotalLines - 1);
return GenerateCompletionData(line); return GenerateCompletionData(line);
@ -40,13 +39,13 @@ namespace ICSharpCode.PythonBinding
/// </summary> /// </summary>
public ICompletionData[] GenerateCompletionData(string line) public ICompletionData[] GenerateCompletionData(string line)
{ {
List<PythonConsoleCompletionData> items = new List<PythonConsoleCompletionData>(); List<ScriptingConsoleCompletionData> items = new List<ScriptingConsoleCompletionData>();
string name = GetName(line); string name = GetName(line);
if (!String.IsNullOrEmpty(name)) { if (!String.IsNullOrEmpty(name)) {
try { try {
foreach (string member in memberProvider.GetMemberNames(name)) { foreach (string member in memberProvider.GetMemberNames(name)) {
items.Add(new PythonConsoleCompletionData(member)); items.Add(new ScriptingConsoleCompletionData(member));
} }
} catch { } catch {
// Do nothing. // Do nothing.

11
src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/CodeCompletionTests.cs → src/AddIns/BackendBindings/Scripting/Test/Console/EmptyStringCodeCompletionTests.cs

@ -7,24 +7,23 @@
using System; using System;
using ICSharpCode.AvalonEdit.CodeCompletion; using ICSharpCode.AvalonEdit.CodeCompletion;
using ICSharpCode.PythonBinding; using ICSharpCode.Scripting;
using ICSharpCode.Scripting.Tests.Console;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using NUnit.Framework; using NUnit.Framework;
namespace PythonBinding.Tests.Console namespace ICSharpCode.Scripting.Tests.Console
{ {
[TestFixture] [TestFixture]
public class EmptyStringCodeCompletionTestFixture public class EmptyStringCodeCompletionTests
{ {
MockMemberProvider memberProvider; MockMemberProvider memberProvider;
PythonConsoleCompletionDataProvider completionProvider; ScriptingConsoleCompletionDataProvider completionProvider;
[SetUp] [SetUp]
public void Init() public void Init()
{ {
memberProvider = new MockMemberProvider(); memberProvider = new MockMemberProvider();
completionProvider = new PythonConsoleCompletionDataProvider(memberProvider); completionProvider = new ScriptingConsoleCompletionDataProvider(memberProvider);
} }
/// <summary> /// <summary>

8
src/AddIns/BackendBindings/Python/PythonBinding/Test/Console/InsertConsoleCompletionDataTestFixture.cs → src/AddIns/BackendBindings/Scripting/Test/Console/InsertConsoleCompletionDataTestFixture.cs

@ -8,15 +8,15 @@
using System; using System;
using ICSharpCode.AvalonEdit; using ICSharpCode.AvalonEdit;
using ICSharpCode.AvalonEdit.Editing; using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.PythonBinding; using ICSharpCode.Scripting;
using NUnit.Framework; using NUnit.Framework;
namespace PythonBinding.Tests.Console namespace ICSharpCode.Scripting.Tests.Console
{ {
[TestFixture] [TestFixture]
public class InsertConsoleCompletionDataTestFixture public class InsertConsoleCompletionDataTestFixture
{ {
PythonConsoleCompletionData completionData; ScriptingConsoleCompletionData completionData;
TextEditor textEditor; TextEditor textEditor;
[SetUp] [SetUp]
@ -35,7 +35,7 @@ namespace PythonBinding.Tests.Console
int endOffset = 5; int endOffset = 5;
SimpleSelection selection = new SimpleSelection(startOffset, endOffset); SimpleSelection selection = new SimpleSelection(startOffset, endOffset);
completionData = new PythonConsoleCompletionData("new"); completionData = new ScriptingConsoleCompletionData("new");
completionData.Complete(textEditor.TextArea, selection, null); completionData.Complete(textEditor.TextArea, selection, null);
string expectedText = string expectedText =

7
src/AddIns/BackendBindings/Scripting/Test/ICSharpCode.Scripting.Tests.csproj

@ -69,6 +69,8 @@
<Compile Include="Configuration\AssemblyInfo.cs" /> <Compile Include="Configuration\AssemblyInfo.cs" />
<Compile Include="Console\CommandLineHistoryTestFixture.cs" /> <Compile Include="Console\CommandLineHistoryTestFixture.cs" />
<Compile Include="Console\EmptyCommandLineHistoryTestFixture.cs" /> <Compile Include="Console\EmptyCommandLineHistoryTestFixture.cs" />
<Compile Include="Console\EmptyStringCodeCompletionTests.cs" />
<Compile Include="Console\InsertConsoleCompletionDataTestFixture.cs" />
<Compile Include="Console\OneItemCommandLineHistoryTestFixture.cs" /> <Compile Include="Console\OneItemCommandLineHistoryTestFixture.cs" />
<Compile Include="Testing\CreateTextWriterFromCreateTextWriterInfoTestFixture.cs" /> <Compile Include="Testing\CreateTextWriterFromCreateTextWriterInfoTestFixture.cs" />
<Compile Include="Testing\CreateTextWriterInfoEqualsTestFixture.cs" /> <Compile Include="Testing\CreateTextWriterInfoEqualsTestFixture.cs" />
@ -88,6 +90,7 @@
<Compile Include="Utils\FakeLock.cs" /> <Compile Include="Utils\FakeLock.cs" />
<Compile Include="Utils\FooItemCollection.cs" /> <Compile Include="Utils\FooItemCollection.cs" />
<Compile Include="Utils\MockComponentCreator.cs" /> <Compile Include="Utils\MockComponentCreator.cs" />
<Compile Include="Utils\MockConsoleTextEditor.cs" />
<Compile Include="Utils\MockConsoleTextEditorKeyEventArgs.cs" /> <Compile Include="Utils\MockConsoleTextEditorKeyEventArgs.cs" />
<Compile Include="Utils\MockControlDispatcher.cs" /> <Compile Include="Utils\MockControlDispatcher.cs" />
<Compile Include="Utils\MockDebugger.cs" /> <Compile Include="Utils\MockDebugger.cs" />
@ -114,6 +117,7 @@
<Compile Include="Utils\NullPropertyUserControl.cs" /> <Compile Include="Utils\NullPropertyUserControl.cs" />
<Compile Include="Utils\SupportInitCustomControl.cs" /> <Compile Include="Utils\SupportInitCustomControl.cs" />
<Compile Include="Utils\Tests\MockComponentCreatorTests.cs" /> <Compile Include="Utils\Tests\MockComponentCreatorTests.cs" />
<Compile Include="Utils\Tests\MockConsoleTextEditorTests.cs" />
<Compile Include="Utils\Tests\MockControlDispatcherTestFixture.cs" /> <Compile Include="Utils\Tests\MockControlDispatcherTestFixture.cs" />
<Compile Include="Utils\Tests\MockEditableViewContentTestFixture.cs" /> <Compile Include="Utils\Tests\MockEditableViewContentTestFixture.cs" />
<Compile Include="Utils\Tests\MockProjectContentTests.cs" /> <Compile Include="Utils\Tests\MockProjectContentTests.cs" />
@ -152,5 +156,8 @@
<Name>ICSharpCode.Scripting</Name> <Name>ICSharpCode.Scripting</Name>
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project> </Project>

10
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Utils/MockConsoleTextEditor.cs → src/AddIns/BackendBindings/Scripting/Test/Utils/MockConsoleTextEditor.cs

@ -12,20 +12,18 @@ using System.Text;
using System.Windows.Input; using System.Windows.Input;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.RubyBinding;
using ICSharpCode.Scripting; using ICSharpCode.Scripting;
using ICSharpCode.Scripting.Tests.Utils;
namespace RubyBinding.Tests.Utils namespace ICSharpCode.Scripting.Tests.Utils
{ {
public class MockConsoleTextEditor : IConsoleTextEditor public class MockConsoleTextEditor : IScriptingConsoleTextEditor
{ {
public bool IsDisposed; public bool IsDisposed;
public bool IsWriteCalled; public bool IsWriteCalled;
public bool IsShowCompletionWindowCalled; public bool IsShowCompletionWindowCalled;
public bool IsMakeCurrentContentReadOnlyCalled; public bool IsMakeCurrentContentReadOnlyCalled;
public RubyConsoleCompletionDataProvider CompletionProviderPassedToShowCompletionWindow; public ScriptingConsoleCompletionDataProvider CompletionProviderPassedToShowCompletionWindow;
public string TextPassedToWrite; public string TextPassedToWrite;
public string TextPassedToReplace; public string TextPassedToReplace;
public int LengthPassedToReplace = -1; public int LengthPassedToReplace = -1;
@ -176,7 +174,7 @@ namespace RubyBinding.Tests.Utils
LineBuilder.Insert(index, text); LineBuilder.Insert(index, text);
} }
public void ShowCompletionWindow(RubyConsoleCompletionDataProvider completionDataProvider) public void ShowCompletionWindow(ScriptingConsoleCompletionDataProvider completionDataProvider)
{ {
IsShowCompletionWindowCalled = true; IsShowCompletionWindowCalled = true;
IsCompletionWindowDisplayed = true; IsCompletionWindowDisplayed = true;

6
src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/Tests/MockConsoleTextEditorTestFixture.cs → src/AddIns/BackendBindings/Scripting/Test/Utils/Tests/MockConsoleTextEditorTests.cs

@ -7,15 +7,13 @@
using System; using System;
using System.Windows.Input; using System.Windows.Input;
using ICSharpCode.PythonBinding;
using ICSharpCode.Scripting; using ICSharpCode.Scripting;
using NUnit.Framework; using NUnit.Framework;
using PythonBinding.Tests.Utils;
namespace PythonBinding.Tests.Utils.Tests namespace ICSharpCode.Scripting.Tests.Utils.Tests
{ {
[TestFixture] [TestFixture]
public class MockConsoleTextEditorTestFixture public class MockConsoleTextEditorTests
{ {
MockConsoleTextEditor textEditor; MockConsoleTextEditor textEditor;

14
src/AddIns/BackendBindings/Scripting/Test/app.config

@ -0,0 +1,14 @@
<configuration>
<configSections>
<sectionGroup name="NUnit">
<section name="TestRunner"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</configSections>
<NUnit>
<TestRunner>
<!-- Valid values are STA,MTA. Others ignored. -->
<add key="ApartmentState" value="STA" />
</TestRunner>
</NUnit>
</configuration>
Loading…
Cancel
Save