1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
5
using ICSharpCode.AvalonEdit.Rendering;
8
namespace ICSharpCode.AvalonEdit.Document
11
public class CollapsingTests
13
TextDocument document;
14
HeightTree heightTree;
19
document = new TextDocument();
20
document.Text = "1\n2\n3\n4\n5\n6\n7\n8\n9\n10";
21
heightTree = new HeightTree(document, 10);
22
foreach (DocumentLine line in document.Lines) {
23
heightTree.SetHeight(line, line.LineNumber);
27
CollapsedLineSection SimpleCheck(int from, int to)
29
CollapsedLineSection sec1 = heightTree.CollapseText(document.GetLineByNumber(from), document.GetLineByNumber(to));
30
for (int i = 1; i < from; i++) {
31
Assert.IsFalse(heightTree.GetIsCollapsed(i));
33
for (int i = from; i <= to; i++) {
34
Assert.IsTrue(heightTree.GetIsCollapsed(i));
36
for (int i = to + 1; i <= 10; i++) {
37
Assert.IsFalse(heightTree.GetIsCollapsed(i));
44
public void SimpleCheck()
50
public void SimpleUncollapse()
52
CollapsedLineSection sec1 = heightTree.CollapseText(document.GetLineByNumber(4), document.GetLineByNumber(6));
54
for (int i = 1; i <= 10; i++) {
55
Assert.IsFalse(heightTree.GetIsCollapsed(i));
61
public void FullCheck()
63
for (int from = 1; from <= 10; from++) {
64
for (int to = from; to <= 10; to++) {
66
SimpleCheck(from, to).Uncollapse();
67
for (int i = 1; i <= 10; i++) {
68
Assert.IsFalse(heightTree.GetIsCollapsed(i));
72
Console.WriteLine("from = " + from + ", to = " + to);
80
public void InsertInCollapsedSection()
82
CollapsedLineSection sec1 = heightTree.CollapseText(document.GetLineByNumber(4), document.GetLineByNumber(6));
83
document.Insert(document.GetLineByNumber(5).Offset, "a\nb\nc");
84
for (int i = 1; i < 4; i++) {
85
Assert.IsFalse(heightTree.GetIsCollapsed(i));
87
for (int i = 4; i <= 8; i++) {
88
Assert.IsTrue(heightTree.GetIsCollapsed(i));
90
for (int i = 9; i <= 12; i++) {
91
Assert.IsFalse(heightTree.GetIsCollapsed(i));
97
public void RemoveInCollapsedSection()
99
CollapsedLineSection sec1 = heightTree.CollapseText(document.GetLineByNumber(3), document.GetLineByNumber(7));
100
int line4Offset = document.GetLineByNumber(4).Offset;
101
int line6Offset = document.GetLineByNumber(6).Offset;
102
document.Remove(line4Offset, line6Offset - line4Offset);
103
for (int i = 1; i < 3; i++) {
104
Assert.IsFalse(heightTree.GetIsCollapsed(i));
106
for (int i = 3; i <= 5; i++) {
107
Assert.IsTrue(heightTree.GetIsCollapsed(i));
109
for (int i = 6; i <= 8; i++) {
110
Assert.IsFalse(heightTree.GetIsCollapsed(i));
116
public void RemoveEndOfCollapsedSection()
118
CollapsedLineSection sec1 = heightTree.CollapseText(document.GetLineByNumber(3), document.GetLineByNumber(6));
119
int line5Offset = document.GetLineByNumber(5).Offset;
120
int line8Offset = document.GetLineByNumber(8).Offset;
121
document.Remove(line5Offset, line8Offset - line5Offset);
122
for (int i = 1; i < 3; i++) {
123
Assert.IsFalse(heightTree.GetIsCollapsed(i));
125
for (int i = 3; i <= 5; i++) {
126
Assert.IsTrue(heightTree.GetIsCollapsed(i));
128
for (int i = 6; i <= 7; i++) {
129
Assert.IsFalse(heightTree.GetIsCollapsed(i));
135
public void RemoveCollapsedSection()
137
CollapsedLineSection sec1 = heightTree.CollapseText(document.GetLineByNumber(3), document.GetLineByNumber(3));
138
int line3Offset = document.GetLineByNumber(3).Offset;
139
document.Remove(line3Offset - 1, 1);
140
for (int i = 1; i <= 9; i++) {
141
Assert.IsFalse(heightTree.GetIsCollapsed(i));
144
Assert.AreSame(null, sec1.Start);
145
Assert.AreSame(null, sec1.End);
146
Assert.IsTrue(sec1.IsCollapsed);
151
HeightTests.CheckHeights(document, heightTree);