diff options
author | Mike Krüger <mkrueger@xamarin.com> | 2011-07-01 22:34:13 +0400 |
---|---|---|
committer | Mike Krüger <mkrueger@xamarin.com> | 2011-07-01 22:35:34 +0400 |
commit | 48002e54a1f002740a153a50cbc10cc87999eda1 (patch) | |
tree | 5ec2571bc3550270ed5cdad4cd224e64422525b2 /main/tests | |
parent | aaf3881e8391d21ce39743fa9901f1fac9342f9e (diff) |
fixed some issues with the height tree implementation.
Diffstat (limited to 'main/tests')
-rw-r--r-- | main/tests/UnitTests/Mono.TextEditor.Tests/HeightTreeTests.cs | 63 |
1 files changed, 60 insertions, 3 deletions
diff --git a/main/tests/UnitTests/Mono.TextEditor.Tests/HeightTreeTests.cs b/main/tests/UnitTests/Mono.TextEditor.Tests/HeightTreeTests.cs index 69036a0a4f..942e2e221e 100644 --- a/main/tests/UnitTests/Mono.TextEditor.Tests/HeightTreeTests.cs +++ b/main/tests/UnitTests/Mono.TextEditor.Tests/HeightTreeTests.cs @@ -57,6 +57,45 @@ namespace Mono.TextEditor.Tests } [Test()] + public void TestYToLineNumberWithFolds () + { + var editor = new TextEditorData (); + editor.Text = "1\n2\n3\n4\n5\n6\n7\n8\n9\n0"; + HeightTree heightTree = new HeightTree (editor); + heightTree.Rebuild (); + heightTree.Fold (1, 2); + heightTree.Fold (6, 3); + heightTree.Fold (5, 5); + + Assert.AreEqual (1, heightTree.YToLineNumber (0 * editor.LineHeight)); + Assert.AreEqual (4, heightTree.YToLineNumber (1 * editor.LineHeight)); + Assert.AreEqual (5, heightTree.YToLineNumber (2 * editor.LineHeight)); + } + + [Test()] + public void TestLineNumberToYWithFolds () + { + var editor = new TextEditorData (); + editor.Text = "1\n2\n3\n4\n5\n6\n7\n8\n9\n0"; + + //123 + //4 + //5[678]90 + + HeightTree heightTree = new HeightTree (editor); + heightTree.Rebuild (); + heightTree.Fold (1, 2); + heightTree.Fold (6, 3); + heightTree.Fold (5, 5); + Assert.AreEqual (0 * editor.LineHeight, heightTree.LineNumberToY (1)); + Assert.AreEqual (0 * editor.LineHeight, heightTree.LineNumberToY (2)); + Assert.AreEqual (0 * editor.LineHeight, heightTree.LineNumberToY (3)); + Assert.AreEqual (1 * editor.LineHeight, heightTree.LineNumberToY (4)); + for (int i = 5; i <= 10; i++) + Assert.AreEqual (2 * editor.LineHeight, heightTree.LineNumberToY (i)); + } + + [Test()] public void TestSetLineHeight () { var editor = new TextEditorData (); @@ -100,7 +139,6 @@ namespace Mono.TextEditor.Tests j -= 2; } } - Console.WriteLine ("i:" + i + "/" + j); Assert.AreEqual ((j - 1) * editor.LineHeight, heightTree.LineNumberToY (i)); } } @@ -156,14 +194,33 @@ namespace Mono.TextEditor.Tests } [Test()] + public void TestCoordinatesAfterFolding () + { + var editor = new TextEditorData (); + for (int i = 0; i < 100; i++) + editor.Insert (0, "line\n"); + + HeightTree heightTree = new HeightTree (editor); + heightTree.Rebuild (); + + heightTree.Fold (1, 2); + + for (int i = 4; i <= editor.LineCount; i++) { + var y = System.Math.Max (0, (i - 3) * editor.LineHeight); + Assert.AreEqual (y, heightTree.LineNumberToY (i)); + Assert.AreEqual (i, heightTree.YToLineNumber (y)); + } + } + + [Test()] public void TestUnfold () { var editor = new TextEditorData (); editor.Text = "1\n2\n3\n4\n5\n6\n7"; HeightTree heightTree = new HeightTree (editor); heightTree.Rebuild (); - heightTree.Fold (2, 2); - heightTree.Unfold (2, 2); + var f = heightTree.Fold (2, 2); + heightTree.Unfold (f); for (int i = 1; i <= editor.LineCount; i++) { Assert.AreEqual ((i - 1) * editor.LineHeight, heightTree.LineNumberToY (i)); Assert.AreEqual (i, heightTree.YToLineNumber ((i - 1) * editor.LineHeight)); |