Repository navigation
Expand file tree
/
Copy pathTextWrapperTests.cs
More file actions
198 lines (178 loc) · 5.48 KB
/
Copy pathTextWrapperTests.cs
File metadata and controls
198 lines (178 loc) · 5.48 KB
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
using System;
using System.Linq;
using Xunit;
using FluentAssertions;
using CSharpx;
using CommandLine.Text;
namespace CommandLine.Tests.Unit.Core
{
public class TextWrapperTests
{
private string NormalizeLineBreaks(string str)
{
return str.Replace("\r", "");
}
private void EnsureEquivalent(string a, string b)
{
//workaround build system line-end inconsistencies
NormalizeLineBreaks(a).Should().Be(NormalizeLineBreaks(b));
}
[Fact]
public void ExtraSpacesAreTreatedAsNonBreaking()
{
var input =
"here is some text with some extra spacing";
var expected = @"here is some text
with some extra
spacing";
var wrapper = new TextWrapper(input);
EnsureEquivalent(wrapper.WordWrap(20).ToText(), expected);
}
[Fact]
public void IndentWorksCorrectly()
{
var input =
@"line1
line2";
var expected = @" line1
line2";
var wrapper = new TextWrapper(input);
EnsureEquivalent(wrapper.Indent(2).ToText(), expected);
}
[Fact]
public void LongWordsAreBroken()
{
var input =
"here is some text that contains a veryLongWordThatWontFitOnASingleLine";
var expected = @"here is some text
that contains a
veryLongWordThatWont
FitOnASingleLine";
var wrapper = new TextWrapper(input);
EnsureEquivalent(wrapper.WordWrap(20).ToText(), expected);
}
[Fact]
public void NegativeColumnWidthStillProducesOutput()
{
var input = @"test";
var expected = string.Join(Environment.NewLine, input.Select(c => c.ToString()));
var wrapper = new TextWrapper(input);
EnsureEquivalent(wrapper.WordWrap(-1).ToText(), expected);
}
[Fact]
public void SimpleWrappingIsAsExpected()
{
var input =
@"here is some text that needs wrapping";
var expected = @"here is
some text
that needs
wrapping";
var wrapper = new TextWrapper(input);
EnsureEquivalent(wrapper.WordWrap(10).ToText(), expected);
}
[Fact]
public void SingleColumnStillProducesOutputForSubIndentation()
{
var input = @"test
ind";
var expected = @"t
e
s
t
i
n
d";
var wrapper = new TextWrapper(input);
EnsureEquivalent(wrapper.WordWrap(-1).ToText(), expected);
}
[Fact]
public void SpacesWithinStringAreRespected()
{
var input =
"here is some text with some extra spacing";
var expected = @"here is some
text with some extra
spacing";
var wrapper = new TextWrapper(input);
EnsureEquivalent(wrapper.WordWrap(20).ToText(), expected);
}
[Fact]
public void SubIndentationCorrectlyWrapsWhenColumnWidthRequiresIt()
{
var input = @"test
indented";
var expected = @"test
in
de
nt
ed";
var wrapper = new TextWrapper(input);
EnsureEquivalent(wrapper.WordWrap(6).ToText(), expected);
}
[Fact]
public void SubIndentationIsPreservedWhenBreakingWords()
{
var input =
"here is some text that contains \n a veryLongWordThatWontFitOnASingleLine";
var expected = @"here is some text
that contains
a
veryLongWordThatWo
ntFitOnASingleLine";
var wrapper = new TextWrapper(input);
EnsureEquivalent(wrapper.WordWrap(20).ToText(), expected);
}
[Fact]
public void WrappingAvoidsBreakingWords()
{
var input =
@"here hippopotamus is some text that needs wrapping";
var expected = @"here
hippopotamus is
some text that
needs wrapping";
var wrapper = new TextWrapper(input);
EnsureEquivalent(wrapper.WordWrap(15).ToText(), expected);
}
[Fact]
public void WrappingExtraSpacesObeySubIndent()
{
var input =
"here is some\n text with some extra spacing";
var expected = @"here is some
text
with some extra
spacing";
var wrapper = new TextWrapper(input);
EnsureEquivalent(wrapper.WordWrap(20).ToText(), expected);
}
[Fact]
public void WrappingObeysLineBreaksOfAllStyles()
{
var input =
"here is some text\nthat needs\r\nwrapping";
var expected = @"here is some text
that needs
wrapping";
var wrapper = new TextWrapper(input);
EnsureEquivalent(wrapper.WordWrap(20).ToText(), expected);
}
[Fact]
public void WrappingPreservesSubIndentation()
{
var input =
"here is some text\n that needs wrapping where we want the wrapped part to preserve indentation\nand this part to not be indented";
var expected = @"here is some text
that needs
wrapping where we
want the wrapped
part to preserve
indentation
and this part to not
be indented";
var wrapper = new TextWrapper(input);
EnsureEquivalent(wrapper.WordWrap(20).ToText(), expected);
}
}
}