File: render_tsv_test.go

package info (click to toggle)
golang-github-jedib0t-go-pretty 6.5.9-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,700 kB
  • sloc: makefile: 28; sh: 14
file content (187 lines) | stat: -rw-r--r-- 4,389 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
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
package table

import (
	"fmt"
	"testing"
)

func TestTable_RenderTSV(t *testing.T) {
	tests := []struct {
		name   string
		tw     func() Writer
		output string
	}{
		{
			tw: func() Writer {
				tw := NewWriter()
				tw.AppendHeader(testHeader)
				tw.AppendRows(testRows)
				tw.AppendRow(testRowMultiLine)
				tw.AppendRow(testRowTabs)
				tw.AppendRow(testRowDoubleQuotes)
				tw.AppendFooter(testFooter)
				tw.SetCaption(testCaption)
				tw.SetTitle(testTitle1)
				return tw
			},
			output: `
Game of Thrones
#	First Name	Last Name	Salary	
1	Arya	Stark	3000	
20	Jon	Snow	2000	You know nothing, Jon Snow!
300	Tyrion	Lannister	5000	
0	Winter	Is	0	"Coming.
The North Remembers!
This is known."
0	Valar	Morghulis	0	"Faceless    Men"
0	Valar	Morghulis	0	"Faceless""Men"
		Total	10000	
A Song of Ice and Fire`,
		},
		{
			name: "Auto index",
			tw: func() Writer {
				tw := NewWriter()
				for rowIdx := 0; rowIdx < 10; rowIdx++ {
					row := make(Row, 10)
					for colIdx := 0; colIdx < 10; colIdx++ {
						row[colIdx] = fmt.Sprintf("%s%d", AutoIndexColumnID(colIdx), rowIdx+1)
					}
					tw.AppendRow(row)
				}
				for rowIdx := 0; rowIdx < 1; rowIdx++ {
					row := make(Row, 10)
					for colIdx := 0; colIdx < 10; colIdx++ {
						row[colIdx] = AutoIndexColumnID(colIdx) + "F"
					}
					tw.AppendFooter(row)
				}
				tw.SetAutoIndex(true)
				tw.SetStyle(StyleLight)
				return tw
			},
			output: `
	A	B	C	D	E	F	G	H	I	J
1	A1	B1	C1	D1	E1	F1	G1	H1	I1	J1
2	A2	B2	C2	D2	E2	F2	G2	H2	I2	J2
3	A3	B3	C3	D3	E3	F3	G3	H3	I3	J3
4	A4	B4	C4	D4	E4	F4	G4	H4	I4	J4
5	A5	B5	C5	D5	E5	F5	G5	H5	I5	J5
6	A6	B6	C6	D6	E6	F6	G6	H6	I6	J6
7	A7	B7	C7	D7	E7	F7	G7	H7	I7	J7
8	A8	B8	C8	D8	E8	F8	G8	H8	I8	J8
9	A9	B9	C9	D9	E9	F9	G9	H9	I9	J9
10	A10	B10	C10	D10	E10	F10	G10	H10	I10	J10
	AF	BF	CF	DF	EF	FF	GF	HF	IF	JF`,
		},
		{
			name: "Empty",
			tw: func() Writer {
				tw := NewWriter()
				return tw
			},
			output: ``,
		},
		{
			name: "Every column hidden",
			tw: func() Writer {
				tw := NewWriter()
				tw.AppendHeader(testHeader)
				tw.AppendRows(testRows)
				tw.AppendFooter(testFooter)
				tw.SortBy([]SortBy{
					{Name: "Salary", Mode: DscNumeric},
				})
				tw.SetColumnConfigs(generateColumnConfigsWithHiddenColumns([]int{0, 1, 2, 3, 4}))
				return tw
			},
			output: ``,
		},
		{
			name: "First column hidden",
			tw: func() Writer {
				tw := NewWriter()
				tw.AppendHeader(testHeader)
				tw.AppendRows(testRows)
				tw.AppendFooter(testFooter)
				tw.SortBy([]SortBy{
					{Name: "Salary", Mode: DscNumeric},
				})
				tw.SetColumnConfigs(generateColumnConfigsWithHiddenColumns([]int{0}))
				return tw
			},
			output: `
First Name	Last Name	Salary	
>>Tyrion	Lannister<<	5013	
>>Arya	Stark<<	3013	
>>Jon	Snow<<	2013	~You know nothing, Jon Snow!~
	Total	10000	`,
		},
		{
			name: "Column hidden in the middle",
			tw: func() Writer {
				tw := NewWriter()
				tw.AppendHeader(testHeader)
				tw.AppendRows(testRows)
				tw.AppendFooter(testFooter)
				tw.SortBy([]SortBy{
					{Name: "Salary", Mode: DscNumeric},
				})
				tw.SetColumnConfigs(generateColumnConfigsWithHiddenColumns([]int{1}))
				return tw
			},
			output: `
#	Last Name	Salary	
307	Lannister<<	5013	
8	Stark<<	3013	
27	Snow<<	2013	~You know nothing, Jon Snow!~
	Total	10000	`,
		},
		{
			name: "Last column hidden",
			tw: func() Writer {
				tw := NewWriter()
				tw.AppendHeader(testHeader)
				tw.AppendRows(testRows)
				tw.AppendFooter(testFooter)
				tw.SortBy([]SortBy{
					{Name: "Salary", Mode: DscNumeric},
				})
				tw.SetColumnConfigs(generateColumnConfigsWithHiddenColumns([]int{4}))
				return tw
			},
			output: `
#	First Name	Last Name	Salary
307	>>Tyrion	Lannister<<	5013
8	>>Arya	Stark<<	3013
27	>>Jon	Snow<<	2013
		Total	10000`,
		},
		{
			name: "Sorted",
			tw: func() Writer {
				tw := NewWriter()
				tw.AppendHeader(testHeader)
				tw.AppendRows(testRows)
				tw.AppendRow(Row{11, "Sansa", "Stark", 6000})
				tw.AppendFooter(testFooter)
				tw.SortBy([]SortBy{{Name: "Last Name", Mode: Asc}, {Name: "First Name", Mode: Asc}})
				return tw
			},
			output: `
#	First Name	Last Name	Salary	
300	Tyrion	Lannister	5000	
20	Jon	Snow	2000	You know nothing, Jon Snow!
1	Arya	Stark	3000	
11	Sansa	Stark	6000	
		Total	10000	`,
		},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			output := tt.tw().RenderTSV()
			compareOutput(t, output, tt.output)
		})
	}
}