File: sort_test.go

package info (click to toggle)
golang-github-jedib0t-go-pretty 6.2.4-1~bpo11%2B1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye-backports
  • size: 1,168 kB
  • sloc: makefile: 31; sh: 14
file content (129 lines) | stat: -rw-r--r-- 4,932 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
package table

import (
	"github.com/stretchr/testify/assert"
	"testing"
)

func TestTable_sortRows_WithName(t *testing.T) {
	table := Table{}
	table.AppendHeader(Row{"#", "First Name", "Last Name", "Salary"})
	table.AppendRows([]Row{
		{1, "Arya", "Stark", 3000},
		{11, "Sansa", "Stark", 3000},
		{20, "Jon", "Snow", 2000, "You know nothing, Jon Snow!"},
		{300, "Tyrion", "Lannister", 5000},
	})
	table.initForRenderRows()

	// sort by nothing
	assert.Equal(t, []int{0, 1, 2, 3}, table.getSortedRowIndices())

	// sort by "#"
	table.SortBy([]SortBy{{Name: "#", Mode: AscNumeric}})
	assert.Equal(t, []int{0, 1, 2, 3}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Name: "#", Mode: DscNumeric}})
	assert.Equal(t, []int{3, 2, 1, 0}, table.getSortedRowIndices())

	// sort by First Name, Last Name
	table.SortBy([]SortBy{{Name: "First Name", Mode: Asc}, {Name: "Last Name", Mode: Asc}})
	assert.Equal(t, []int{0, 2, 1, 3}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Name: "First Name", Mode: Asc}, {Name: "Last Name", Mode: Dsc}})
	assert.Equal(t, []int{0, 2, 1, 3}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Name: "First Name", Mode: Dsc}, {Name: "Last Name", Mode: Asc}})
	assert.Equal(t, []int{3, 1, 2, 0}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Name: "First Name", Mode: Dsc}, {Name: "Last Name", Mode: Dsc}})
	assert.Equal(t, []int{3, 1, 2, 0}, table.getSortedRowIndices())

	// sort by Last Name, First Name
	table.SortBy([]SortBy{{Name: "Last Name", Mode: Asc}, {Name: "First Name", Mode: Asc}})
	assert.Equal(t, []int{3, 2, 0, 1}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Name: "Last Name", Mode: Asc}, {Name: "First Name", Mode: Dsc}})
	assert.Equal(t, []int{3, 2, 1, 0}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Name: "Last Name", Mode: Dsc}, {Name: "First Name", Mode: Asc}})
	assert.Equal(t, []int{0, 1, 2, 3}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Name: "Last Name", Mode: Dsc}, {Name: "First Name", Mode: Dsc}})
	assert.Equal(t, []int{1, 0, 2, 3}, table.getSortedRowIndices())

	// sort by Unknown Column
	table.SortBy([]SortBy{{Name: "Last Name", Mode: Dsc}, {Name: "Foo Bar", Mode: Dsc}})
	assert.Equal(t, []int{0, 1, 2, 3}, table.getSortedRowIndices())

	// sort by Salary
	table.SortBy([]SortBy{{Name: "Salary", Mode: AscNumeric}})
	assert.Equal(t, []int{2, 0, 1, 3}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Name: "Salary", Mode: DscNumeric}})
	assert.Equal(t, []int{3, 0, 1, 2}, table.getSortedRowIndices())

	table.SortBy(nil)
	assert.Equal(t, []int{0, 1, 2, 3}, table.getSortedRowIndices())
}

func TestTable_sortRows_WithoutName(t *testing.T) {
	table := Table{}
	table.AppendRows([]Row{
		{1, "Arya", "Stark", 3000},
		{11, "Sansa", "Stark", 3000},
		{20, "Jon", "Snow", 2000, "You know nothing, Jon Snow!"},
		{300, "Tyrion", "Lannister", 5000},
	})
	table.initForRenderRows()

	// sort by nothing
	assert.Equal(t, []int{0, 1, 2, 3}, table.getSortedRowIndices())

	// sort by "#"
	table.SortBy([]SortBy{{Number: 1, Mode: AscNumeric}})
	assert.Equal(t, []int{0, 1, 2, 3}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Number: 1, Mode: DscNumeric}})
	assert.Equal(t, []int{3, 2, 1, 0}, table.getSortedRowIndices())

	// sort by First Name, Last Name
	table.SortBy([]SortBy{{Number: 2, Mode: Asc}, {Number: 3, Mode: Asc}})
	assert.Equal(t, []int{0, 2, 1, 3}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Number: 2, Mode: Asc}, {Number: 3, Mode: Dsc}})
	assert.Equal(t, []int{0, 2, 1, 3}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Number: 2, Mode: Dsc}, {Number: 3, Mode: Asc}})
	assert.Equal(t, []int{3, 1, 2, 0}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Number: 2, Mode: Dsc}, {Number: 3, Mode: Dsc}})
	assert.Equal(t, []int{3, 1, 2, 0}, table.getSortedRowIndices())

	// sort by Last Name, First Name
	table.SortBy([]SortBy{{Number: 3, Mode: Asc}, {Number: 2, Mode: Asc}})
	assert.Equal(t, []int{3, 2, 0, 1}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Number: 3, Mode: Asc}, {Number: 2, Mode: Dsc}})
	assert.Equal(t, []int{3, 2, 1, 0}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Number: 3, Mode: Dsc}, {Number: 2, Mode: Asc}})
	assert.Equal(t, []int{0, 1, 2, 3}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Number: 3, Mode: Dsc}, {Number: 2, Mode: Dsc}})
	assert.Equal(t, []int{1, 0, 2, 3}, table.getSortedRowIndices())

	// sort by Unknown Column
	table.SortBy([]SortBy{{Number: 3, Mode: Dsc}, {Number: 99, Mode: Dsc}})
	assert.Equal(t, []int{0, 1, 2, 3}, table.getSortedRowIndices())

	// sort by Salary
	table.SortBy([]SortBy{{Number: 4, Mode: AscNumeric}})
	assert.Equal(t, []int{2, 0, 1, 3}, table.getSortedRowIndices())

	table.SortBy([]SortBy{{Number: 4, Mode: DscNumeric}})
	assert.Equal(t, []int{3, 0, 1, 2}, table.getSortedRowIndices())

	table.SortBy(nil)
	assert.Equal(t, []int{0, 1, 2, 3}, table.getSortedRowIndices())
}