~halega/+junk/sharpdevelop

« back to all changes in this revision

Viewing changes to src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/Document/CollapsingTests.cs

  • Committer: sk
  • Date: 2011-09-10 05:17:57 UTC
  • Revision ID: halega@halega.com-20110910051757-qfouz1llya9m6boy
4.1.0.7915 Release Candidate 1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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)
 
3
 
 
4
using System;
 
5
using ICSharpCode.AvalonEdit.Rendering;
 
6
using NUnit.Framework;
 
7
 
 
8
namespace ICSharpCode.AvalonEdit.Document
 
9
{
 
10
        [TestFixture]
 
11
        public class CollapsingTests
 
12
        {
 
13
                TextDocument document;
 
14
                HeightTree heightTree;
 
15
                
 
16
                [SetUp]
 
17
                public void Setup()
 
18
                {
 
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);
 
24
                        }
 
25
                }
 
26
                
 
27
                CollapsedLineSection SimpleCheck(int from, int to)
 
28
                {
 
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));
 
32
                        }
 
33
                        for (int i = from; i <= to; i++) {
 
34
                                Assert.IsTrue(heightTree.GetIsCollapsed(i));
 
35
                        }
 
36
                        for (int i = to + 1; i <= 10; i++) {
 
37
                                Assert.IsFalse(heightTree.GetIsCollapsed(i));
 
38
                        }
 
39
                        CheckHeights();
 
40
                        return sec1;
 
41
                }
 
42
                
 
43
                [Test]
 
44
                public void SimpleCheck()
 
45
                {
 
46
                        SimpleCheck(4, 6);
 
47
                }
 
48
                
 
49
                [Test]
 
50
                public void SimpleUncollapse()
 
51
                {
 
52
                        CollapsedLineSection sec1 = heightTree.CollapseText(document.GetLineByNumber(4), document.GetLineByNumber(6));
 
53
                        sec1.Uncollapse();
 
54
                        for (int i = 1; i <= 10; i++) {
 
55
                                Assert.IsFalse(heightTree.GetIsCollapsed(i));
 
56
                        }
 
57
                        CheckHeights();
 
58
                }
 
59
                
 
60
                [Test]
 
61
                public void FullCheck()
 
62
                {
 
63
                        for (int from = 1; from <= 10; from++) {
 
64
                                for (int to = from; to <= 10; to++) {
 
65
                                        try {
 
66
                                                SimpleCheck(from, to).Uncollapse();
 
67
                                                for (int i = 1; i <= 10; i++) {
 
68
                                                        Assert.IsFalse(heightTree.GetIsCollapsed(i));
 
69
                                                }
 
70
                        CheckHeights();
 
71
                                        } catch {
 
72
                                                Console.WriteLine("from = " + from + ", to = " + to);
 
73
                                                throw;
 
74
                                        }
 
75
                                }
 
76
                        }
 
77
                }
 
78
                
 
79
                [Test]
 
80
                public void InsertInCollapsedSection()
 
81
                {
 
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));
 
86
                        }
 
87
                        for (int i = 4; i <= 8; i++) {
 
88
                                Assert.IsTrue(heightTree.GetIsCollapsed(i));
 
89
                        }
 
90
                        for (int i = 9; i <= 12; i++) {
 
91
                                Assert.IsFalse(heightTree.GetIsCollapsed(i));
 
92
                        }
 
93
                        CheckHeights();
 
94
                }
 
95
                
 
96
                [Test]
 
97
                public void RemoveInCollapsedSection()
 
98
                {
 
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));
 
105
                        }
 
106
                        for (int i = 3; i <= 5; i++) {
 
107
                                Assert.IsTrue(heightTree.GetIsCollapsed(i));
 
108
                        }
 
109
                        for (int i = 6; i <= 8; i++) {
 
110
                                Assert.IsFalse(heightTree.GetIsCollapsed(i));
 
111
                        }
 
112
                        CheckHeights();
 
113
                }
 
114
                
 
115
                [Test]
 
116
                public void RemoveEndOfCollapsedSection()
 
117
                {
 
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));
 
124
                        }
 
125
                        for (int i = 3; i <= 5; i++) {
 
126
                                Assert.IsTrue(heightTree.GetIsCollapsed(i));
 
127
                        }
 
128
                        for (int i = 6; i <= 7; i++) {
 
129
                                Assert.IsFalse(heightTree.GetIsCollapsed(i));
 
130
                        }
 
131
                        CheckHeights();
 
132
                }
 
133
                
 
134
                [Test]
 
135
                public void RemoveCollapsedSection()
 
136
                {
 
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));
 
142
                        }
 
143
                        CheckHeights();
 
144
                        Assert.AreSame(null, sec1.Start);
 
145
                        Assert.AreSame(null, sec1.End);
 
146
                        Assert.IsTrue(sec1.IsCollapsed);
 
147
                }
 
148
                
 
149
                void CheckHeights()
 
150
                {
 
151
                        HeightTests.CheckHeights(document, heightTree);
 
152
                }
 
153
        }
 
154
}