forked from KindDragon/ICSharpCode.TextEditor
-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathFoldingManagerTests.cs
137 lines (127 loc) · 5.76 KB
/
FoldingManagerTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*
* Created by SharpDevelop.
* User: Daniel Grunwald
* Date: 10/28/2006
* Time: 8:42 AM
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System.Collections.Generic;
using System.Text;
using ICSharpCode.TextEditor.Document;
using NUnit.Framework;
namespace ICSharpCode.TextEditor.Tests
{
[TestFixture]
public class FoldingManagerTests
{
[SetUp]
public void SetUp()
{
var doc = new DocumentFactory().CreateDocument();
var b = new StringBuilder();
for (var i = 0; i < 50; i++)
b.AppendLine(new string(c: 'a', count: 50));
doc.TextContent = b.ToString();
list = new List<FoldMarker>();
list.Add(new FoldMarker(doc, startLine: 1, startColumn: 6, endLine: 5, endColumn: 2));
list.Add(new FoldMarker(doc, startLine: 2, startColumn: 1, endLine: 2, endColumn: 3));
list.Add(new FoldMarker(doc, startLine: 3, startColumn: 7, endLine: 4, endColumn: 1));
list.Add(new FoldMarker(doc, startLine: 10, startColumn: 1, endLine: 14, endColumn: 1));
list.Add(new FoldMarker(doc, startLine: 10, startColumn: 3, endLine: 10, endColumn: 3));
list.Add(new FoldMarker(doc, startLine: 11, startColumn: 1, endLine: 15, endColumn: 1));
list.Add(new FoldMarker(doc, startLine: 12, startColumn: 1, endLine: 16, endColumn: 1));
foreach (var fm in list)
fm.IsFolded = true;
doc.FoldingManager.UpdateFoldings(new List<FoldMarker>(list));
manager = doc.FoldingManager;
}
private FoldingManager manager;
private List<FoldMarker> list;
private void AssertPosition(int line, int column, params int[] markers)
{
AssertList(manager.GetFoldingsFromPosition(line, column), markers);
}
private void AssertList(List<FoldMarker> l, params int[] markers)
{
Assert.AreEqual(markers.Length, l.Count);
foreach (var m in markers)
Assert.Contains(list[m], l);
}
[Test]
public void GetFoldingsContainsLineNumber()
{
AssertList(manager.GetFoldingsContainsLineNumber(lineNumber: 1));
AssertList(manager.GetFoldingsContainsLineNumber(lineNumber: 2), 0);
AssertList(manager.GetFoldingsContainsLineNumber(lineNumber: 3), 0);
AssertList(manager.GetFoldingsContainsLineNumber(lineNumber: 4), 0);
AssertList(manager.GetFoldingsContainsLineNumber(lineNumber: 5));
AssertList(manager.GetFoldingsContainsLineNumber(lineNumber: 10));
AssertList(manager.GetFoldingsContainsLineNumber(lineNumber: 11), 3);
AssertList(manager.GetFoldingsContainsLineNumber(lineNumber: 12), 3, 5);
AssertList(manager.GetFoldingsContainsLineNumber(lineNumber: 13), 3, 5, 6);
AssertList(manager.GetFoldingsContainsLineNumber(lineNumber: 14), 5, 6);
AssertList(manager.GetFoldingsContainsLineNumber(lineNumber: 15), 6);
AssertList(manager.GetFoldingsContainsLineNumber(lineNumber: 16));
}
[Test]
public void GetFoldingsWithStart()
{
AssertList(manager.GetFoldingsWithStart(lineNumber: 1), 0);
AssertList(manager.GetFoldingsWithStart(lineNumber: 2), 1);
AssertList(manager.GetFoldingsWithStart(lineNumber: 3), 2);
AssertList(manager.GetFoldingsWithStart(lineNumber: 4));
AssertList(manager.GetFoldingsWithStart(lineNumber: 10), 3, 4);
AssertList(manager.GetFoldingsWithStart(lineNumber: 11), 5);
AssertList(manager.GetFoldingsWithStart(lineNumber: 12), 6);
AssertList(manager.GetFoldingsWithStart(lineNumber: 13));
AssertList(manager.GetFoldingsWithStart(lineNumber: 14));
AssertList(manager.GetFoldedFoldingsWithStartAfterColumn(lineNumber: 10, column: 0), 3, 4);
AssertList(manager.GetFoldedFoldingsWithStartAfterColumn(lineNumber: 10, column: 1), 4);
AssertList(manager.GetFoldedFoldingsWithStartAfterColumn(lineNumber: 10, column: 2), 4);
AssertList(manager.GetFoldedFoldingsWithStartAfterColumn(lineNumber: 10, column: 3));
AssertList(manager.GetFoldedFoldingsWithStartAfterColumn(lineNumber: 10, column: 4));
}
[Test]
public void GetFromPositionOverlapping()
{
AssertPosition(line: 10, column: 1);
AssertPosition(10, 2, 3);
AssertPosition(10, 3, 3);
AssertPosition(10, 4, 3);
AssertPosition(11, 1, 3);
AssertPosition(11, 2, 3, 5);
AssertPosition(12, 1, 3, 5);
AssertPosition(12, 2, 3, 5, 6);
AssertPosition(14, 0, 3, 5, 6);
AssertPosition(14, 1, 5, 6);
AssertPosition(15, 0, 5, 6);
AssertPosition(15, 1, 6);
AssertPosition(16, 0, 6);
AssertPosition(line: 16, column: 1);
}
[Test]
public void GetFromPositionTest()
{
AssertPosition(line: 1, column: 5);
//AssertPosition(1, 6, 0);
AssertPosition(1, 7, 0);
AssertPosition(5, 0, 0);
AssertPosition(5, 1, 0);
AssertPosition(line: 5, column: 2);
AssertPosition(line: 5, column: 3);
AssertPosition(3, 8, 0, 2);
AssertPosition(3, 30, 0, 2);
AssertPosition(4, 0, 0, 2);
AssertPosition(4, 1, 0);
AssertPosition(2, 1, 0);
AssertPosition(2, 2, 0, 1);
AssertPosition(2, 3, 0);
}
[Test]
public void GetTopLevelFoldedFoldings()
{
AssertList(manager.GetTopLevelFoldedFoldings(), 0, 3);
}
}
}