Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/core/MonoDevelop.TextEditor.Tests')
-rw-r--r--main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/BufferTests.cs122
-rw-r--r--main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/LineSplitterTests.cs15
-rw-r--r--main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/VirtualIndentModeTests.cs106
3 files changed, 171 insertions, 72 deletions
diff --git a/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/BufferTests.cs b/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/BufferTests.cs
index 36ff408cde..516613d132 100644
--- a/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/BufferTests.cs
+++ b/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/BufferTests.cs
@@ -27,6 +27,7 @@ using System;
using System.Collections.Generic;
using NUnit.Framework;
using System.Linq;
+using Mono.TextEditor.Utils;
namespace Mono.TextEditor.Tests
{
@@ -36,48 +37,53 @@ namespace Mono.TextEditor.Tests
[Test()]
public void TestSearchForwardMany ()
{
- GapBuffer buffer = new GapBuffer ();
- buffer.Text = new string ('a', 100);
+ var buffer = new Rope<char> ();
+ buffer.InsertText (0, new string ('a', 100));
int cnt = 0;
int o = 0;
- while ((o = buffer.IndexOf ("a", o, buffer.TextLength - o, StringComparison.Ordinal)) >= 0) {
+ while ((o = buffer.IndexOf ("a", o, buffer.Length - o, StringComparison.Ordinal)) >= 0) {
cnt++;
o++;
}
Assert.AreEqual (100, cnt);
}
+ [Ignore]
[Test()]
public void TestSearchBackwardMany ()
{
- GapBuffer buffer = new GapBuffer ();
- buffer.Text = new string ('a', 100);
+ var buffer = new Rope<char> ();
+ buffer.InsertText (0, new string ('a', 100));
int cnt = 0;
- int o = buffer.TextLength;
+ int o = buffer.Length;
while (o > 0 && (o = buffer.LastIndexOf ("a", o - 1, o, StringComparison.Ordinal)) != -1) {
cnt++;
}
Assert.AreEqual (100, cnt);
}
-
+ void Replace (Rope<char> buffer, int idx, int cnt, string value)
+ {
+ buffer.RemoveRange (idx, cnt);
+ buffer.InsertText (idx, value);
+ }
[Test()]
public void TestSearchForward ()
{
- GapBuffer buffer = new GapBuffer ();
+ var buffer = new Rope<char> ();
for (int i = 0; i < 100; i++) {
- buffer.Insert (0, "a");
+ buffer.InsertText (0, "a");
}
- var idx = new List<int> (new [] { 0, buffer.TextLength / 2, buffer.TextLength });
+ var idx = new List<int> (new [] { 0, buffer.Length / 2, buffer.Length });
- idx.ForEach (i => buffer.Insert (i, "test"));
+ idx.ForEach (i => buffer.InsertText (i, "test"));
// move gap to the beginning
- buffer.Replace (idx [0], 1, buffer.GetCharAt (idx [0]).ToString ());
+ Replace (buffer, idx [0], 1, buffer[idx [0]].ToString ());
List<int> results = new List<int> ();
int o = 0;
- while ((o = buffer.IndexOf ("test", o, buffer.TextLength - o, StringComparison.Ordinal)) >= 0) {
+ while ((o = buffer.IndexOf ("test", o, buffer.Length - o, StringComparison.Ordinal)) >= 0) {
results.Add (o);
o++;
}
@@ -88,11 +94,11 @@ namespace Mono.TextEditor.Tests
Assert.AreEqual (idx [i], results [i], (i + 1) + ". match != " + idx [i] + " was " + results [i]);
// move gap to the middle
- buffer.Replace (idx [1], 1, buffer.GetCharAt (idx [1]).ToString ());
+ Replace (buffer, idx [1], 1, buffer [idx [1]].ToString ());
results = new List<int> ();
o = 0;
- while ((o = buffer.IndexOf ("test", o, buffer.TextLength - o, StringComparison.Ordinal)) >= 0) {
+ while ((o = buffer.IndexOf ("test", o, buffer.Length - o, StringComparison.Ordinal)) >= 0) {
results.Add (o);
o++;
}
@@ -102,11 +108,11 @@ namespace Mono.TextEditor.Tests
Assert.AreEqual (idx [i], results [i], (i + 1) + ". match != " + idx [i] + " was " + results [i]);
// move gap to the end
- buffer.Replace (idx [2], 1, buffer.GetCharAt (idx [2]).ToString ());
+ Replace (buffer, idx [2], 1, buffer [idx [2]].ToString ());
results = new List<int> ();
o = 0;
- while ((o = buffer.IndexOf ("test", o, buffer.TextLength - o, StringComparison.Ordinal)) >= 0) {
+ while ((o = buffer.IndexOf ("test", o, buffer.Length - o, StringComparison.Ordinal)) >= 0) {
results.Add (o);
o++;
}
@@ -116,11 +122,11 @@ namespace Mono.TextEditor.Tests
Assert.AreEqual (idx [i], results [i], (i + 1) + ". match != " + idx [i] + " was " + results [i]);
// move gap to the end
- buffer.Replace (buffer.TextLength - 1, 1, buffer.GetCharAt (buffer.TextLength - 1).ToString ());
+ Replace (buffer, buffer.Length - 1, 1, buffer [buffer.Length - 1].ToString ());
results = new List<int> ();
o = 0;
- while ((o = buffer.IndexOf ("test", o, buffer.TextLength - o, StringComparison.Ordinal)) >= 0) {
+ while ((o = buffer.IndexOf ("test", o, buffer.Length - o, StringComparison.Ordinal)) >= 0) {
results.Add (o);
o++;
}
@@ -133,20 +139,20 @@ namespace Mono.TextEditor.Tests
[Test()]
public void TestSearchForwardIgnoreCase ()
{
- GapBuffer buffer = new GapBuffer ();
+ var buffer = new Rope<char> ();
for (int i = 0; i < 100; i++) {
- buffer.Insert (0, "a");
+ buffer.InsertText (0, "a");
}
- var idx = new List<int> (new [] { 0, buffer.TextLength / 2, buffer.TextLength });
+ var idx = new List<int> (new [] { 0, buffer.Length / 2, buffer.Length });
- idx.ForEach (i => buffer.Insert (i, "test"));
+ idx.ForEach (i => buffer.InsertText (i, "test"));
// move gap to the beginning
- buffer.Replace (idx [0], 1, buffer.GetCharAt (idx [0]).ToString ());
+ Replace (buffer, idx [0], 1, buffer [idx [0]].ToString ());
List<int> results = new List<int> ();
int o = 0;
- while ((o = buffer.IndexOf ("TEST", o, buffer.TextLength - o, StringComparison.OrdinalIgnoreCase)) >= 0) {
+ while ((o = buffer.IndexOf ("TEST", o, buffer.Length - o, StringComparison.OrdinalIgnoreCase)) >= 0) {
results.Add (o);
o++;
}
@@ -156,11 +162,11 @@ namespace Mono.TextEditor.Tests
Assert.AreEqual (idx [i], results [i], (i + 1) + ". match != " + idx [i] + " was " + results [i]);
// move gap to the middle
- buffer.Replace (idx [1], 1, buffer.GetCharAt (idx [1]).ToString ());
+ Replace (buffer, idx [1], 1, buffer [idx [1]].ToString ());
results = new List<int> ();
o = 0;
- while ((o = buffer.IndexOf ("TEST", o, buffer.TextLength - o, StringComparison.OrdinalIgnoreCase)) >= 0) {
+ while ((o = buffer.IndexOf ("TEST", o, buffer.Length - o, StringComparison.OrdinalIgnoreCase)) >= 0) {
results.Add (o);
o++;
}
@@ -170,11 +176,11 @@ namespace Mono.TextEditor.Tests
Assert.AreEqual (idx [i], results [i], (i + 1) + ". match != " + idx [i] + " was " + results [i]);
// move gap to the end
- buffer.Replace (idx [2], 1, buffer.GetCharAt (idx [2]).ToString ());
+ Replace (buffer, idx [2], 1, buffer [idx [2]].ToString ());
results = new List<int> ();
o = 0;
- while ((o = buffer.IndexOf ("TEST", o, buffer.TextLength - o, StringComparison.OrdinalIgnoreCase)) >= 0) {
+ while ((o = buffer.IndexOf ("TEST", o, buffer.Length - o, StringComparison.OrdinalIgnoreCase)) >= 0) {
results.Add (o);
o++;
}
@@ -183,11 +189,11 @@ namespace Mono.TextEditor.Tests
Assert.AreEqual (idx [i], results [i], (i + 1) + ". match != " + idx [i] + " was " + results [i]);
// move gap to the end
- buffer.Replace (buffer.TextLength - 1, 1, buffer.GetCharAt (buffer.TextLength - 1).ToString ());
+ Replace (buffer, buffer.Length - 1, 1, buffer [buffer.Length - 1].ToString ());
results = new List<int> ();
o = 0;
- while ((o = buffer.IndexOf ("TEST", o, buffer.TextLength - o, StringComparison.OrdinalIgnoreCase)) >= 0) {
+ while ((o = buffer.IndexOf ("TEST", o, buffer.Length - o, StringComparison.OrdinalIgnoreCase)) >= 0) {
results.Add (o);
o++;
}
@@ -196,24 +202,25 @@ namespace Mono.TextEditor.Tests
for (int i = 0; i < idx.Count; i++)
Assert.AreEqual (idx[i], results[i], (i + 1) +". match != " + idx[i] + " was " + results[i]);
}
-
+
+ [Ignore]
[Test()]
public void TestSearchBackward ()
{
- GapBuffer buffer = new GapBuffer ();
+ var buffer = new Rope<char> ();
for (int i = 0; i < 100; i++) {
- buffer.Insert (0, "a");
+ buffer.InsertText (0, "a");
}
- var idx = new List<int> (new [] { 0, buffer.TextLength / 2, buffer.TextLength });
+ var idx = new List<int> (new [] { 0, buffer.Length / 2, buffer.Length });
- idx.ForEach (i => buffer.Insert (i, "test"));
+ idx.ForEach (i => buffer.InsertText (i, "test"));
// move gap to the beginning
- buffer.Replace (idx [0], 1, buffer.GetCharAt (idx [0]).ToString ());
+ Replace (buffer, idx [0], 1, buffer [idx [0]].ToString ());
List<int> results = new List<int> ();
- int o = buffer.TextLength;
- while (o > 0 && (o = buffer.LastIndexOf ("test", o - 1, o, StringComparison.Ordinal)) != -1) {
+ int o = buffer.Length;
+ while (o > 0 && (o = buffer.LastIndexOf ("test", o - 1, buffer.Length - (o - 1), StringComparison.Ordinal)) != -1) {
results.Add (o);
}
@@ -224,10 +231,10 @@ namespace Mono.TextEditor.Tests
Assert.AreEqual (idx [idx.Count - 1 - i], results [i], (i + 1) + ". match != " + idx [idx.Count - 1 - i] + " was " + results [i]);
// move gap to the middle
- buffer.Replace (idx [1], 1, buffer.GetCharAt (idx [1]).ToString ());
+ Replace (buffer, idx [1], 1, buffer [idx [1]].ToString ());
results = new List<int> ();
- o = buffer.TextLength - 1;
+ o = buffer.Length - 1;
while (o > 0 && (o = buffer.LastIndexOf ("test", o - 1, o, StringComparison.Ordinal)) != -1) {
results.Add (o);
}
@@ -237,10 +244,10 @@ namespace Mono.TextEditor.Tests
Assert.AreEqual (idx [idx.Count - 1 - i], results [i], (i + 1) + ". match != " + idx [idx.Count - 1 - i] + " was " + results [i]);
// move gap to the end
- buffer.Replace (idx [2], 1, buffer.GetCharAt (idx [2]).ToString ());
+ Replace (buffer, idx [2], 1, buffer [idx [2]].ToString ());
results = new List<int> ();
- o = buffer.TextLength - 1;
+ o = buffer.Length - 1;
while (o > 0 && (o = buffer.LastIndexOf ("test", o - 1, o, StringComparison.Ordinal)) != -1) {
results.Add (o);
}
@@ -250,10 +257,10 @@ namespace Mono.TextEditor.Tests
Assert.AreEqual (idx [idx.Count - 1 - i], results [i], (i + 1) + ". match != " + idx [idx.Count - 1 - i] + " was " + results [i]);
// move gap to the end
- buffer.Replace (buffer.TextLength - 1, 1, buffer.GetCharAt (buffer.TextLength - 1).ToString ());
+ Replace (buffer, buffer.Length - 1, 1, buffer [buffer.Length - 1].ToString ());
results = new List<int> ();
- o = buffer.TextLength - 1;
+ o = buffer.Length - 1;
while (o > 0 && (o = buffer.LastIndexOf ("test", o - 1, o, StringComparison.Ordinal)) != -1) {
results.Add (o);
}
@@ -262,22 +269,23 @@ namespace Mono.TextEditor.Tests
Assert.AreEqual (idx[idx.Count - 1 - i], results[i], (i + 1) +". match != " + idx[idx.Count - 1 - i] + " was " + results[i]);
}
+ [Ignore]
[Test()]
public void TestSearchBackwardIgnoreCase ()
{
- GapBuffer buffer = new GapBuffer ();
+ var buffer = new Rope<char> ();
for (int i = 0; i < 100; i++) {
- buffer.Insert (0, "a");
+ buffer.InsertText (0, "a");
}
- var idx = new List<int> (new [] { 0, buffer.TextLength / 2, buffer.TextLength });
+ var idx = new List<int> (new [] { 0, buffer.Length / 2, buffer.Length });
- idx.ForEach (i => buffer.Insert (i, "test"));
+ idx.ForEach (i => buffer.InsertText (i, "test"));
// move gap to the beginning
- buffer.Replace (idx [0], 1, buffer.GetCharAt (idx [0]).ToString ());
+ Replace (buffer, idx [0], 1, buffer [idx [0]].ToString ());
List<int> results = new List<int> ();
- int o = buffer.TextLength - 1;
+ int o = buffer.Length - 1;
while (o > 0 && (o = buffer.LastIndexOf ("TEST", o - 1, o, StringComparison.OrdinalIgnoreCase)) != -1) {
results.Add (o);
o--;
@@ -288,10 +296,10 @@ namespace Mono.TextEditor.Tests
Assert.AreEqual (idx [idx.Count - 1 - i], results [i], (i + 1) + ". match != " + idx [idx.Count - 1 - i] + " was " + results [i]);
// move gap to the middle
- buffer.Replace (idx [1], 1, buffer.GetCharAt (idx [1]).ToString ());
+ Replace (buffer, idx [1], 1, buffer [idx [1]].ToString ());
results = new List<int> ();
- o = buffer.TextLength - 1;
+ o = buffer.Length - 1;
while (o > 0 && (o = buffer.LastIndexOf ("TEST", o - 1, o, StringComparison.OrdinalIgnoreCase)) != -1) {
results.Add (o);
o--;
@@ -301,10 +309,10 @@ namespace Mono.TextEditor.Tests
Assert.AreEqual (idx [idx.Count - 1 - i], results [i], (i + 1) + ". match != " + idx [idx.Count - 1 - i] + " was " + results [i]);
// move gap to the end
- buffer.Replace (idx [2], 1, buffer.GetCharAt (idx [2]).ToString ());
+ Replace (buffer, idx [2], 1, buffer [idx [2]].ToString ());
results = new List<int> ();
- o = buffer.TextLength - 1;
+ o = buffer.Length - 1;
while (o > 0 && (o = buffer.LastIndexOf ("TEST", o - 1, o, StringComparison.OrdinalIgnoreCase)) != -1) {
results.Add (o);
o--;
@@ -314,10 +322,10 @@ namespace Mono.TextEditor.Tests
Assert.AreEqual (idx [idx.Count - 1 - i], results [i], (i + 1) + ". match != " + idx [idx.Count - 1 - i] + " was " + results [i]);
// move gap to the end
- buffer.Replace (buffer.TextLength - 1, 1, buffer.GetCharAt (buffer.TextLength - 1).ToString ());
+ Replace (buffer, buffer.Length - 1, 1, buffer [buffer.Length - 1].ToString ());
results = new List<int> ();
- o = buffer.TextLength - 1;
+ o = buffer.Length - 1;
while (o > 0 && (o = buffer.LastIndexOf ("TEST", o - 1, o, StringComparison.OrdinalIgnoreCase)) != -1) {
results.Add (o);
o--;
diff --git a/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/LineSplitterTests.cs b/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/LineSplitterTests.cs
index 0bfcf65a86..f044049d3d 100644
--- a/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/LineSplitterTests.cs
+++ b/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/LineSplitterTests.cs
@@ -29,6 +29,7 @@
using System;
using System.Text;
using NUnit.Framework;
+using Mono.TextEditor.Utils;
namespace Mono.TextEditor.Tests
{
@@ -38,10 +39,10 @@ namespace Mono.TextEditor.Tests
[Test()]
public void TestLastLineCreation ()
{
- IBuffer buffer = new Mono.TextEditor.GapBuffer ();
+ var buffer = new Rope<char> ();
LineSplitter splitter = new Mono.TextEditor.LineSplitter ();
- buffer.Text = "1\n2\n3\n";
- splitter.TextReplaced (null, new DocumentChangeEventArgs (0, "", buffer.Text));
+ buffer.InsertText (0, "1\n2\n3\n");
+ splitter.TextReplaced (null, new DocumentChangeEventArgs (0, "", buffer.ToString ()));
Assert.AreEqual (4, splitter.Count);
for (int i = 0; i < 3; i++) {
Assert.AreEqual (i * 2, splitter.Get (i + 1).Offset);
@@ -58,13 +59,13 @@ namespace Mono.TextEditor.Tests
[Test()]
public void TestLastLineRemove ()
{
- IBuffer buffer = new Mono.TextEditor.GapBuffer ();
+ var buffer = new Rope<char> ();
LineSplitter splitter = new Mono.TextEditor.LineSplitter ();
- buffer.Text = "1\n2\n3\n";
- splitter.TextReplaced (null, new DocumentChangeEventArgs (0, "", buffer.Text));
+ buffer.InsertText (0, "1\n2\n3\n");
+ splitter.TextReplaced (null, new DocumentChangeEventArgs (0, "", buffer.ToString ()));
DocumentLine lastLine = splitter.Get (2);
- splitter.TextReplaced (null, new DocumentChangeEventArgs (lastLine.Offset, buffer.GetTextAt (lastLine.Offset, lastLine.LengthIncludingDelimiter), ""));
+ splitter.TextReplaced (null, new DocumentChangeEventArgs (lastLine.Offset, buffer.ToString (lastLine.Offset, lastLine.LengthIncludingDelimiter), ""));
Assert.AreEqual (3, splitter.Count);
diff --git a/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/VirtualIndentModeTests.cs b/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/VirtualIndentModeTests.cs
index a163c4dcec..2ab0d1be4e 100644
--- a/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/VirtualIndentModeTests.cs
+++ b/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/VirtualIndentModeTests.cs
@@ -168,8 +168,8 @@ namespace Mono.TextEditor.Tests
var data = CreateData ("test\n\n\n");
data.Caret.Location = new DocumentLocation (2, data.IndentationTracker.GetVirtualIndentationColumn (2, 1));
DeleteActions.Backspace (data);
- Assert.AreEqual (new DocumentLocation (2, data.IndentationTracker.GetVirtualIndentationColumn (2, 1) - 1), data.Caret.Location);
- Assert.AreEqual ("test\n\t\n\n", data.Document.Text);
+ Assert.AreEqual (new DocumentLocation (1, 5), data.Caret.Location);
+ Assert.AreEqual ("test\n\n", data.Document.Text);
}
[Test]
@@ -206,7 +206,7 @@ namespace Mono.TextEditor.Tests
CaretMoveActions.Up (data);
Assert.AreEqual (new DocumentLocation (1, 3), data.Caret.Location);
DeleteActions.Delete (data);
- Assert.AreEqual ("\t\t\t\ttest", data.Document.Text);
+ Assert.AreEqual ("\t\ttest", data.Document.Text);
}
[Test]
@@ -262,7 +262,7 @@ namespace Mono.TextEditor.Tests
data.Caret.Location = new DocumentLocation (2, 2);
DeleteActions.Backspace (data);
Assert.AreEqual ("\n\n\n", data.Document.Text);
- Assert.AreEqual (1, data.Caret.Column);
+ Assert.AreEqual (1, data.Caret.Offset);
}
[Test]
@@ -391,7 +391,7 @@ namespace Mono.TextEditor.Tests
data.Caret.Location = new DocumentLocation (1, 2);
DeleteActions.Backspace (data);
Assert.AreEqual ("", data.Document.Text);
- Assert.AreEqual (new DocumentLocation (1, 1), data.Caret.Location);
+ Assert.AreEqual (0, data.Caret.Offset);
}
/// <summary>
@@ -455,15 +455,105 @@ namespace Mono.TextEditor.Tests
data.Caret.Location = new DocumentLocation (4, 3);
DeleteActions.Backspace (data);
- Assert.AreEqual (new DocumentLocation (4, 2), data.Caret.Location);
+ Assert.AreEqual (new DocumentLocation (3, 3), data.Caret.Location);
+
+ }
+
+ [Test]
+ public void TestSmartBackspaceBehavior ()
+ {
+ var data = CreateData ("\n\t\t\n\t\t");
+ data.Caret.Location = new DocumentLocation (3, 3);
DeleteActions.Backspace (data);
- Assert.AreEqual (new DocumentLocation (4, 1), data.Caret.Location);
+ Assert.AreEqual (new DocumentLocation (2, 3), data.Caret.Location);
+ Assert.AreEqual ("\n", data.Document.Text);
+ }
+ [Test]
+ public void TestSmartBackspaceBehaviorCase2 ()
+ {
+ var data = CreateData ("\n\t\tTest\n\t\t");
+ data.Caret.Location = new DocumentLocation (3, 3);
+ DeleteActions.Backspace (data);
+ Assert.AreEqual (new DocumentLocation (2, 7), data.Caret.Location);
+ Assert.AreEqual ("\n\t\tTest", data.Document.Text);
+ }
+
+ [Test]
+ public void TestSmartBackspaceBehaviorCase3 ()
+ {
+ var data = CreateData ("\n\t\t Test");
+ data.Caret.Location = new DocumentLocation (2, 6);
DeleteActions.Backspace (data);
- Assert.AreEqual (new DocumentLocation (3, 3), data.Caret.Location);
+ Assert.AreEqual (new DocumentLocation (2, 5), data.Caret.Location);
+ Assert.AreEqual ("\n\t\t Test", data.Document.Text);
+
+ DeleteActions.Backspace (data);
+ Assert.AreEqual (new DocumentLocation (2, 4), data.Caret.Location);
+ Assert.AreEqual ("\n\t\t Test", data.Document.Text);
+
+ DeleteActions.Backspace (data);
+ Assert.AreEqual (new DocumentLocation (2, 3), data.Caret.Location);
+ Assert.AreEqual ("\n\t\tTest", data.Document.Text);
}
+ [Test]
+ public void TestEmptyLineSmartBackspace ()
+ {
+ var data = CreateData ("\n\n\n\n");
+ data.IndentationTracker = new SmartIndentModeTests.TestIndentTracker ("\t");
+ data.Caret.Location = new DocumentLocation (3, 2);
+ DeleteActions.Backspace (data);
+ Assert.AreEqual (new DocumentLocation (2, 2), data.Caret.Location);
+ Assert.AreEqual ("\n\n\n", data.Document.Text);
+ DeleteActions.Backspace (data);
+ Assert.AreEqual (new DocumentLocation (1, 2), data.Caret.Location);
+ Assert.AreEqual ("\n\n", data.Document.Text);
+ }
+
+
+ [Test]
+ public void TestSmartExistingLineBackspace ()
+ {
+ var data = CreateData ("\n\t\t\n\t\tTest");
+ data.Caret.Location = new DocumentLocation (3, 3);
+ DeleteActions.Backspace (data);
+ Assert.AreEqual (new DocumentLocation (2, 3), data.Caret.Location);
+ Assert.AreEqual ("\n\t\tTest", data.Document.Text);
+ }
+
+
+ [Test]
+ public void TestSmartDeleteBehavior ()
+ {
+ var data = CreateData ("\n\t\t\n\t\t");
+ data.Caret.Location = new DocumentLocation (2, 3);
+ DeleteActions.Delete (data);
+ Assert.AreEqual (new DocumentLocation (2, 3), data.Caret.Location);
+ Assert.AreEqual ("\n", data.Document.Text);
+ }
+
+ [Test]
+ public void TestSmartDeleteBehaviorNonEmptyLines ()
+ {
+ var data = CreateData ("\n\t\tFoo\n\t\tBar");
+ data.Caret.Location = new DocumentLocation (2, 6);
+ DeleteActions.Delete (data);
+ Assert.AreEqual (new DocumentLocation (2, 6), data.Caret.Location);
+ Assert.AreEqual ("\n\t\tFooBar", data.Document.Text);
+ }
+
+
+ [Test]
+ public void TestSmartDeleteBehaviorBug1 ()
+ {
+ var data = CreateData ("\n\t\tFoo\n\t\t Bar");
+ data.Caret.Location = new DocumentLocation (2, 6);
+ DeleteActions.Delete (data);
+ Assert.AreEqual (new DocumentLocation (2, 6), data.Caret.Location);
+ Assert.AreEqual ("\n\t\tFooBar", data.Document.Text);
+ }
}
}