You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: wrap_test.go
+95-65Lines changed: 95 additions & 65 deletions
Original file line number
Diff line number
Diff line change
@@ -1,13 +1,16 @@
1
-
packagewrap
1
+
packagewrap_test
2
2
3
3
import (
4
4
"fmt"
5
5
"strings"
6
6
"testing"
7
7
8
+
"github.com/bbrks/wrap"
8
9
"github.com/stretchr/testify/assert"
9
10
)
10
11
12
+
varw=wrap.NewWrapper()
13
+
11
14
// tests contains various line lengths to test our wrap functions.
12
15
vartests= []int{-5, 0, 5, 10, 25, 80, 120, 500}
13
16
@@ -20,13 +23,13 @@ var loremIpsums = []string{
20
23
"Duis ac ornare erat. Nulla in odio eget ante tristique dignissim a non erat. Sed non nisi vitae arcu dapibus porta vitae dignissim ante. Cras et fringilla turpis. Maecenas arcu nibh, tempus euismod pretium eget, hendrerit vitae arcu. Sed vel dolor quam. Etiam consequat sed dolor ut elementum. Quisque dictum tempor pretium. Sed eu sollicitudin mi, in commodo ante.",
21
24
}
22
25
23
-
funcTestLine(t*testing.T) {
26
+
funcTestWrapper_Wrap(t*testing.T) {
24
27
// Test multiple line lengths.
25
28
for_, l:=rangetests {
26
29
27
30
// Test each input line individually.
28
31
for_, s:=rangeloremIpsums {
29
-
wrapped:=Line(s, l)
32
+
wrapped:=w.Wrap(s, l)
30
33
31
34
// Assert that each output line is no longer than the limit.
32
35
for_, v:=rangestrings.Split(wrapped, "\n") {
@@ -51,75 +54,26 @@ func TestLine(t *testing.T) {
51
54
}
52
55
}
53
56
54
-
funcTestLineWithPrefix(t*testing.T) {
55
-
varprefix="// "
56
-
// Test multiple line lengths.
57
-
for_, l:=rangetests {
58
-
59
-
// Test each input line individually.
60
-
for_, s:=rangeloremIpsums {
61
-
wrapped:=LineWithPrefix(s, prefix, l)
62
-
63
-
// Assert that each output line is no longer than the limit.
64
-
for_, v:=rangestrings.Split(wrapped, "\n") {
65
-
if!strings.HasPrefix(s, prefix) {
66
-
continue
67
-
}
68
-
69
-
// Only check lines which contain more than one word.
70
-
if!strings.Contains(v, " ") {
71
-
continue
72
-
}
73
-
74
-
// If length < 1, the string remains unchaged.
75
-
ifl<1 {
76
-
assert.Equal(t, prefix+s, v)
77
-
continue
78
-
}
79
-
80
-
assert.True(t, len(v) <=l,
81
-
fmt.Sprintf("Line length greater than %d: %s", l, v))
varloremIpsum="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vulputate quam nibh, et faucibus enim gravida vel. Integer bibendum lectus et erat semper fermentum quis a risus. Fusce dignissim tempus metus non pretium. Nunc sagittis magna nec purus porttitor mollis. Pellentesque feugiat quam eget laoreet aliquet. Donec gravida congue massa, et sollicitudin turpis lacinia a. Fusce non tortor magna. Cras vel finibus tellus."
106
-
107
-
// Wrap when lines exceed 80 chars and prepend a comment prefix.
// // Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vulputate quam
111
-
// // nibh, et faucibus enim gravida vel. Integer bibendum lectus et erat semper
112
-
// // fermentum quis a risus. Fusce dignissim tempus metus non pretium. Nunc
113
-
// // sagittis magna nec purus porttitor mollis. Pellentesque feugiat quam eget
114
-
// // laoreet aliquet. Donec gravida congue massa, et sollicitudin turpis lacinia
115
-
// // a. Fusce non tortor magna. Cras vel finibus tellus.
116
-
}
117
-
118
-
funcExampleLine() {
72
+
funcExampleWrapper_Wrap() {
119
73
varloremIpsum="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vulputate quam nibh, et faucibus enim gravida vel. Integer bibendum lectus et erat semper fermentum quis a risus. Fusce dignissim tempus metus non pretium. Nunc sagittis magna nec purus porttitor mollis. Pellentesque feugiat quam eget laoreet aliquet. Donec gravida congue massa, et sollicitudin turpis lacinia a. Fusce non tortor magna. Cras vel finibus tellus."
120
74
121
75
// Wrap when lines exceed 80 chars.
122
-
fmt.Println(Line(loremIpsum, 80))
76
+
fmt.Println(w.Wrap(loremIpsum, 80))
123
77
// Output:
124
78
// Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vulputate quam
125
79
// nibh, et faucibus enim gravida vel. Integer bibendum lectus et erat semper
@@ -129,11 +83,71 @@ func ExampleLine() {
129
83
// non tortor magna. Cras vel finibus tellus.
130
84
}
131
85
132
-
funcExampleLine_short() {
86
+
funcExampleWrapper_Wrap_paragraphs() {
87
+
varloremIpsum=`Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pulvinar augue vel dui gravida, sed convallis ante aliquam. Morbi euismod felis in justo lobortis, eu egestas quam cursus. Ut ut tellus mattis, porttitor leo ut, porttitor ex. Nulla suscipit molestie ligula, quis porta nulla pellentesque ac. Cras ut vestibulum orci. Phasellus ante nisl, dignissim non nunc eget, dapibus convallis orci. Integer vel euismod mauris. Integer tortor elit, vestibulum eget augue vitae, vehicula commodo sapien. Integer iaculis maximus dui, vitae rutrum magna congue at. Praesent varius quam vitae rhoncus fringilla. Quisque ac ex sit amet enim aliquam rutrum in in tortor. Sed sit amet est finibus, congue purus et, ultrices quam. Aenean felis velit, ullamcorper at sagittis ut, aliquam eu mauris.
88
+
89
+
Phasellus vel lorem venenatis, condimentum risus quis, ultricies risus. Vivamus porttitor lorem sit amet bibendum congue. Mauris sem enim, rutrum in ipsum eget, porttitor placerat diam. Pellentesque ut pharetra augue. Maecenas in ante eget ex efficitur tincidunt. Cras ut ultrices nisl. Donec tristique tincidunt eros condimentum tempus. Morbi libero urna, pretium id turpis vel, cursus efficitur orci. Mauris ut elit felis. Duis ultrices nisl eget accumsan consectetur. Nullam blandit elit vel vulputate scelerisque. Nulla facilisi. Cras quis maximus odio. Nam orci est, tempor ac arcu eget, tincidunt consectetur risus. Donec quis faucibus velit.
90
+
91
+
Maecenas rhoncus semper nisi non luctus. Nam accumsan malesuada urna vel vehicula. Nullam quis dui in augue tristique sollicitudin. Praesent vulputate condimentum vestibulum. Morbi tincidunt consectetur velit non accumsan. Praesent sit amet vestibulum purus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla rhoncus urna ut aliquet congue. Sed ornare dignissim orci non imperdiet. Maecenas nec magna bibendum, cursus nisi ac, commodo arcu.
92
+
93
+
Sed auctor id leo at molestie. Donec sed cursus massa. Morbi semper lobortis dui. Sed mattis sem a molestie sodales. Cras consequat sapien semper, pretium nulla a, dignissim massa. Aliquam non ornare lacus. Cras gravida lorem tellus, et consectetur ante sodales ut.
94
+
95
+
Nunc mi enim, aliquam quis bibendum sed, commodo quis nulla. Aliquam vulputate arcu a volutpat semper. Donec nec mauris eros. Suspendisse velit ante, fermentum a odio non, porta dignissim nunc. Vestibulum condimentum at massa at malesuada. Etiam augue purus, interdum a est pretium, cursus interdum eros. Vestibulum et ligula dignissim, suscipit arcu et, congue sem. Integer posuere mauris id scelerisque sagittis. Proin cursus congue sem, nec pulvinar neque auctor eget. Suspendisse vitae mi ipsum. Nullam sed mauris posuere, accumsan ligula vitae, viverra tellus. Morbi quam turpis, sagittis vitae arcu vel, tempus sagittis neque. Vivamus dolor purus, blandit ac condimentum a, interdum in ipsum.`
96
+
97
+
fmt.Println(w.Wrap(loremIpsum, 80))
98
+
// Output:
99
+
// Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pulvinar augue vel
100
+
// dui gravida, sed convallis ante aliquam. Morbi euismod felis in justo lobortis,
101
+
// eu egestas quam cursus. Ut ut tellus mattis, porttitor leo ut, porttitor ex.
102
+
// Nulla suscipit molestie ligula, quis porta nulla pellentesque ac. Cras ut
103
+
// vestibulum orci. Phasellus ante nisl, dignissim non nunc eget, dapibus
// porttitor lorem sit amet bibendum congue. Mauris sem enim, rutrum in ipsum
113
+
// eget, porttitor placerat diam. Pellentesque ut pharetra augue. Maecenas in ante
114
+
// eget ex efficitur tincidunt. Cras ut ultrices nisl. Donec tristique tincidunt
115
+
// eros condimentum tempus. Morbi libero urna, pretium id turpis vel, cursus
116
+
// efficitur orci. Mauris ut elit felis. Duis ultrices nisl eget accumsan
117
+
// consectetur. Nullam blandit elit vel vulputate scelerisque. Nulla facilisi.
118
+
// Cras quis maximus odio. Nam orci est, tempor ac arcu eget, tincidunt
119
+
// consectetur risus. Donec quis faucibus velit.
120
+
//
121
+
// Maecenas rhoncus semper nisi non luctus. Nam accumsan malesuada urna vel
122
+
// vehicula. Nullam quis dui in augue tristique sollicitudin. Praesent vulputate
123
+
// condimentum vestibulum. Morbi tincidunt consectetur velit non accumsan.
124
+
// Praesent sit amet vestibulum purus. Orci varius natoque penatibus et magnis dis
125
+
// parturient montes, nascetur ridiculus mus. Nulla rhoncus urna ut aliquet
126
+
// congue. Sed ornare dignissim orci non imperdiet. Maecenas nec magna bibendum,
127
+
// cursus nisi ac, commodo arcu.
128
+
//
129
+
// Sed auctor id leo at molestie. Donec sed cursus massa. Morbi semper lobortis
130
+
// dui. Sed mattis sem a molestie sodales. Cras consequat sapien semper, pretium
131
+
// nulla a, dignissim massa. Aliquam non ornare lacus. Cras gravida lorem tellus,
132
+
// et consectetur ante sodales ut.
133
+
//
134
+
// Nunc mi enim, aliquam quis bibendum sed, commodo quis nulla. Aliquam vulputate
135
+
// arcu a volutpat semper. Donec nec mauris eros. Suspendisse velit ante,
136
+
// fermentum a odio non, porta dignissim nunc. Vestibulum condimentum at massa at
137
+
// malesuada. Etiam augue purus, interdum a est pretium, cursus interdum eros.
138
+
// Vestibulum et ligula dignissim, suscipit arcu et, congue sem. Integer posuere
139
+
// mauris id scelerisque sagittis. Proin cursus congue sem, nec pulvinar neque
140
+
// auctor eget. Suspendisse vitae mi ipsum. Nullam sed mauris posuere, accumsan
141
+
// ligula vitae, viverra tellus. Morbi quam turpis, sagittis vitae arcu vel,
142
+
// tempus sagittis neque. Vivamus dolor purus, blandit ac condimentum a, interdum
143
+
// in ipsum.
144
+
}
145
+
146
+
funcExampleWrapper_Wrap_short() {
133
147
varloremIpsum="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vulputate quam nibh, et faucibus enim gravida vel. Integer bibendum lectus et erat semper fermentum quis a risus. Fusce dignissim tempus metus non pretium. Nunc sagittis magna nec purus porttitor mollis. Pellentesque feugiat quam eget laoreet aliquet. Donec gravida congue massa, et sollicitudin turpis lacinia a. Fusce non tortor magna. Cras vel finibus tellus."
134
148
135
149
// Wrap on every word.
136
-
fmt.Println(Line(loremIpsum, 1))
150
+
fmt.Println(w.Wrap(loremIpsum, 1))
137
151
// Output:
138
152
// Lorem
139
153
// ipsum
@@ -199,3 +213,19 @@ func ExampleLine_short() {
199
213
// finibus
200
214
// tellus.
201
215
}
216
+
217
+
funcExampleWrapper_Wrap_hyphens() {
218
+
varloremIpsum=`
219
+
In this particular example, I will spam a lot of hyphenated words, which should wrap at some point, and test the multi-breakpoint feature of this package.
220
+
221
+
The girl was accident-prone, good-looking, quick-thinking, carbon-neutral, bad-tempered, sport-mad, fair-haired, camera-ready, and finally open-mouthed.
222
+
`
223
+
224
+
fmt.Println(w.Wrap(loremIpsum, 80))
225
+
// Output:
226
+
// In this particular example, I will spam a lot of hyphenated words, which should
227
+
// wrap at some point, and test the multi-breakpoint feature of this package.
228
+
//
229
+
// The girl was accident-prone, good-looking, quick-thinking, carbon-neutral, bad
230
+
// tempered, sport-mad, fair-haired, camera-ready, and finally open-mouthed.
0 commit comments