File: page_test.go

package info (click to toggle)
bombadillo 2.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 412 kB
  • sloc: makefile: 59
file content (130 lines) | stat: -rw-r--r-- 2,196 bytes parent folder | download
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
package main

import (
	"reflect"
	"testing"
)

func Test_WrapContent_Wrapped_Line_Length(t *testing.T) {
	type fields struct {
		WrappedContent []string
		RawContent     string
		Links          []string
		Location       Url
		ScrollPosition int
		FoundLinkLines []int
		SearchTerm     string
		SearchIndex    int
		FileType       string
		WrapWidth      int
		Color          bool
	}
	type args struct {
		width    int
		maxWidth int
		color    bool
	}

	// create a Url for use by the MakePage function
	url, _ := MakeUrl("gemini://rawtext.club")

	tests := []struct {
		name    string
		input   string
		expects []string
		args    args
	}{
		{
			"Short line that doesn't wrap",
			"0123456789\n",
			[]string{
				"0123456789",
				"",
			},
			args{
				10,
				10,
				false,
			},
		},
		{
			"multiple words should wrap at the right point",
			"01 345 789 123456789 123456789 123456789 123456789\n",
			[]string{
				"01 345 789",
				"123456789 ",
				"123456789 ",
				"123456789 ",
				"123456789",
				"",
			},
			args{
				10,
				10,
				false,
			},
		},
		{
			"Long line wrapped to 10 columns, leading spaces omitted when wrapping",
			"0123456789 123456789 123456789 123456789 123456789\n",
			[]string{
				"0123456789",
				"123456789 ",
				"123456789 ",
				"123456789 ",
				"123456789",
				"",
			},
			args{
				10,
				10,
				false,
			},
		},
		{
			"Intentional leading spaces aren't trimmed",
			"01 345\n 789 123456789\n",
			[]string{
				"01 345",
				" 789 ",
				"123456789",
				"",
			},
			args{
				10,
				10,
				false,
			},
		},
		{
			"Unicode line endings that should not wrap",
			"LF\u000A" +
				"CR+LF\u000D\u000A" +
				"NEL\u0085" +
				"LS\u2028" +
				"PS\u2029",
			[]string{
				"LF",
				"CR+LF",
				"NEL",
				"LS",
				"PS",
				"",
			},
			args{
				10,
				10,
				false,
			},
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			p := MakePage(url, tt.input, []string{""})
			p.WrapContent(tt.args.width-1, tt.args.maxWidth, tt.args.color)
			if !reflect.DeepEqual(p.WrappedContent, tt.expects) {
				t.Errorf("Test failed - %s\nexpects %s\nactual  %s", tt.name, tt.expects, p.WrappedContent)
			}
		})
	}
}