forked from toolshed/abra
.gitea
cli
cmd
pkg
app
autocomplete
catalogue
client
compose
config
container
context
dns
formatter
git
integration
jsontable
jsontable.go
jsontable_test.go
limit
lint
recipe
secret
server
service
ssh
test
upstream
web
scripts
tests
.dockerignore
.drone.yml
.e2e.env.sample
.envrc.sample
.gitignore
.goreleaser.yml
AUTHORS.md
Dockerfile
LICENSE
Makefile
README.md
go.mod
go.sum
renovate.json
84 lines
1.8 KiB
Go
84 lines
1.8 KiB
Go
package jsontable
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"bytes"
|
|
"encoding/json"
|
|
|
|
"github.com/olekukonko/tablewriter"
|
|
)
|
|
|
|
var TestLine = []string{"1", "2"}
|
|
var TestGroup = [][]string{{"1", "2", "3"}, {"a", "teohunteohu", "c", "d"}, {"☺", "☹"}}
|
|
var TestKeys = []string{"key0", "key1", "key2"}
|
|
|
|
/// test creation
|
|
func TestNewTable(t *testing.T) {
|
|
var b bytes.Buffer
|
|
tbl := NewJSONTable(&b)
|
|
if tbl.NumLines() != 0 {
|
|
t.Fatalf("Something went weird when making table (should have 0 lines)")
|
|
}
|
|
}
|
|
|
|
/// test adding things
|
|
func TestTableAdd(t *testing.T) {
|
|
var b bytes.Buffer
|
|
tbl := NewJSONTable(&b)
|
|
|
|
tbl.Append(TestLine)
|
|
if tbl.NumLines() != 1 {
|
|
t.Fatalf("Appending a line does not result in a length of 1.")
|
|
}
|
|
|
|
tbl.AppendBulk(TestGroup)
|
|
numlines := tbl.NumLines()
|
|
if numlines != (len(TestGroup) + 1) {
|
|
t.Fatalf("Appending two lines does not result in a length of 4 (length is %d).", numlines)
|
|
}
|
|
}
|
|
|
|
/// test JSON output is parsable
|
|
func TestJsonParsable(t *testing.T) {
|
|
var b bytes.Buffer
|
|
tbl := NewJSONTable(&b)
|
|
|
|
tbl.AppendBulk(TestGroup)
|
|
tbl.SetHeader(TestKeys)
|
|
|
|
tbl.JSONRender()
|
|
|
|
var son []map[string]interface{}
|
|
|
|
err := json.Unmarshal(b.Bytes(), &son)
|
|
|
|
if err != nil {
|
|
t.Fatalf("Did not produce parsable JSON: %s", err.Error())
|
|
}
|
|
}
|
|
|
|
/// test identical commands to a tablewriter and jsontable produce the same rendered output
|
|
func TestTableWriter(t *testing.T) {
|
|
var bjson bytes.Buffer
|
|
var btable bytes.Buffer
|
|
|
|
tbl := NewJSONTable(&bjson)
|
|
|
|
tbl.AppendBulk(TestGroup)
|
|
tbl.SetHeader(TestKeys)
|
|
tbl.Render()
|
|
|
|
wtbl := tablewriter.NewWriter(&btable)
|
|
|
|
wtbl.AppendBulk(TestGroup)
|
|
wtbl.SetHeader(TestKeys)
|
|
wtbl.Render()
|
|
|
|
if bytes.Compare(bjson.Bytes(), btable.Bytes()) != 0 {
|
|
t.Fatalf("JSON table and TableWriter produce non-identical outputs.\n%s\n%s", bjson.Bytes(), btable.Bytes())
|
|
}
|
|
}
|
|
|
|
/// FIXME test different output formats when captions etc. are added
|