added unit test for descending order, fixed deduplication bug

This commit is contained in:
2022-10-15 16:27:04 +02:00
parent 839f33a7fc
commit fd74628259
3 changed files with 21 additions and 5 deletions

View File

@@ -1,7 +1,5 @@
## Fixes to be implemented ## Fixes to be implemented
- add unit test for descending sort order
## Features to be implemented ## Features to be implemented
- sorting by: numerical, time, duration, string(default) - sorting by: numerical, time, duration, string(default)

View File

@@ -23,6 +23,7 @@ import (
"github.com/gookit/color" "github.com/gookit/color"
"os" "os"
"regexp" "regexp"
"sort"
"strconv" "strconv"
"strings" "strings"
) )
@@ -71,8 +72,10 @@ func PrepareColumns(data *Tabdata) error {
} }
} }
// deduplicate // deduplicate: put all values into a map (value gets map key)
imap := make(map[int]int) // thereby removing duplicates, extract keys into new slice
// and sort it
imap := make(map[int]int, len(UseColumns))
for _, i := range UseColumns { for _, i := range UseColumns {
imap[i] = 0 imap[i] = 0
} }
@@ -80,6 +83,7 @@ func PrepareColumns(data *Tabdata) error {
for k := range imap { for k := range imap {
UseColumns = append(UseColumns, k) UseColumns = append(UseColumns, k)
} }
sort.Ints(UseColumns)
} }
return nil return nil
} }

View File

@@ -153,11 +153,13 @@ func TestSortPrinter(t *testing.T) {
var tests = []struct { var tests = []struct {
data Tabdata data Tabdata
sortby int sortby int
desc bool
expect string expect string
}{ }{
{ {
data: startdata, data: startdata,
sortby: 1, sortby: 1,
desc: false,
expect: `ONE(1) TWO(2) THREE(3) expect: `ONE(1) TWO(2) THREE(3)
abc 345 b1 abc 345 b1
bcd 234 a2 bcd 234 a2
@@ -167,6 +169,7 @@ cde 123 c3`,
{ {
data: startdata, data: startdata,
sortby: 2, sortby: 2,
desc: false,
expect: `ONE(1) TWO(2) THREE(3) expect: `ONE(1) TWO(2) THREE(3)
cde 123 c3 cde 123 c3
bcd 234 a2 bcd 234 a2
@@ -176,11 +179,21 @@ abc 345 b1`,
{ {
data: startdata, data: startdata,
sortby: 3, sortby: 3,
desc: false,
expect: `ONE(1) TWO(2) THREE(3) expect: `ONE(1) TWO(2) THREE(3)
bcd 234 a2 bcd 234 a2
abc 345 b1 abc 345 b1
cde 123 c3`, cde 123 c3`,
}, },
{
data: startdata,
sortby: 1,
desc: true,
expect: `ONE(1) TWO(2) THREE(3)
cde 123 c3
bcd 234 a2
abc 345 b1`,
},
} }
NoColor = true NoColor = true
@@ -188,9 +201,10 @@ cde 123 c3`,
origStdout, reader := stdout2pipe(t) origStdout, reader := stdout2pipe(t)
for _, tt := range tests { for _, tt := range tests {
testname := fmt.Sprintf("print-sorted-table-%d", tt.sortby) testname := fmt.Sprintf("print-sorted-table-by-%d-desc-%t", tt.sortby, tt.desc)
t.Run(testname, func(t *testing.T) { t.Run(testname, func(t *testing.T) {
SortByColumn = tt.sortby SortByColumn = tt.sortby
SortDescending = tt.desc
printData(&tt.data) printData(&tt.data)