mirror of
https://codeberg.org/scip/tablizer.git
synced 2025-12-17 04:30:56 +01:00
added unit test for descending order, fixed deduplication bug
This commit is contained in:
2
TODO.md
2
TODO.md
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user