1
0
mirror of https://github.com/pbnjay/grate.git synced 2025-07-14 10:04:16 +02:00

update xlsx tests to match xls

This commit is contained in:
Jeremy Jay
2022-02-23 01:05:14 -05:00
parent d3bb3eb21c
commit a5375a6478
3 changed files with 67 additions and 131 deletions

View File

@ -21,5 +21,11 @@ jobs:
- name: Build - name: Build
run: go build -v ./... run: go build -v ./...
- name: Test - name: Test XLS
run: go test -v ./... run: go test -v ./xls
- name: Test XLSX
run: go test -v ./xlsx
- name: Test CommonXL
run: go test -v ./commonxl

View File

@ -7,7 +7,7 @@ import (
"testing" "testing"
) )
func TestManyFiles(t *testing.T) { func TestAllFiles(t *testing.T) {
err := filepath.Walk("../testdata", func(p string, info os.FileInfo, err error) error { err := filepath.Walk("../testdata", func(p string, info os.FileInfo, err error) error {
if info.IsDir() { if info.IsDir() {
return nil return nil
@ -17,7 +17,7 @@ func TestManyFiles(t *testing.T) {
} }
wb, err := Open(p) wb, err := Open(p)
if err != nil { if err != nil {
return nil //err return err
} }
sheets, err := wb.List() sheets, err := wb.List()
@ -25,7 +25,6 @@ func TestManyFiles(t *testing.T) {
return err return err
} }
for _, s := range sheets { for _, s := range sheets {
//log.Println(s)
sheet, err := wb.Get(s) sheet, err := wb.Get(s)
if err != nil { if err != nil {
return err return err

View File

@ -1,55 +1,52 @@
package xlsx package xlsx
import ( import (
"bufio"
"log"
"os" "os"
"strings" "strings"
"testing" "testing"
"github.com/pbnjay/grate/commonxl"
) )
var testFiles = []string{ var testFilePairs = [][]string{
"../testdata/multi_test.xlsx", {"../testdata/basic.xlsx", "../testdata/basic.tsv"},
"../testdata/basic.xlsx",
"../testdata/basic2.xlsx", // TODO: custom formatter support
//{"../testdata/basic2.xlsx", "../testdata/basic2.tsv"},
// TODO: datetime and fraction formatter support
//{"../testdata/multi_test.xlsx", "../testdata/multi_test.tsv"},
} }
func TestLoading(t *testing.T) { func loadTestData(fn string, ff *commonxl.Formatter) (*commonxl.Sheet, error) {
for _, fn := range testFiles { f, err := os.Open(fn)
wb, err := Open(fn)
if err != nil { if err != nil {
t.Fatal(err) return nil, err
}
xs := &commonxl.Sheet{
Formatter: ff,
} }
sheets, err := wb.List() row := 0
if err != nil { s := bufio.NewScanner(f)
t.Fatal(err) for s.Scan() {
} record := strings.Split(s.Text(), "\t")
for _, s := range sheets { for i, val := range record {
sheet, err := wb.Get(s) xs.Put(row, i, val, 0)
if err != nil {
t.Fatal(err)
}
for sheet.Next() {
sheet.Strings()
}
}
err = wb.Close()
if err != nil {
t.Fatal(err)
} }
row++
} }
return xs, f.Close()
} }
func TestBasic(t *testing.T) { func TestBasic(t *testing.T) {
trueFile, err := os.ReadFile("../testdata/basic.tsv") for _, fnames := range testFilePairs {
if err != nil { var trueData *commonxl.Sheet
t.Skip() log.Println("Testing ", fnames[0])
}
lines := strings.Split(string(trueFile), "\n")
fn := "../testdata/basic.xlsx" wb, err := Open(fnames[0])
wb, err := Open(fn)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -58,19 +55,30 @@ func TestBasic(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
firstLoad := true
for _, s := range sheets { for _, s := range sheets {
sheet, err := wb.Get(s) sheet, err := wb.Get(s)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
xsheet := sheet.(*commonxl.Sheet)
i := 0 if firstLoad {
for sheet.Next() { trueData, err = loadTestData(fnames[1], xsheet.Formatter)
row := strings.Join(sheet.Strings(), "\t") if err != nil {
if lines[i] != row { t.Fatal(err)
t.Fatalf("line %d mismatch: '%s' <> '%s'", i, row, lines[i]) }
firstLoad = false
}
for xrow, xdata := range xsheet.Rows {
for xcol, xval := range xdata {
//t.Logf("at %s (%d,%d) expect '%v'", fnames[0], xrow, xcol, trueData.Rows[xrow][xcol])
if !trueData.Rows[xrow][xcol].Equal(xval) {
t.Logf("mismatch at %s (%d,%d): '%v' <> '%v' expected", fnames[0], xrow, xcol,
xval, trueData.Rows[xrow][xcol])
t.Fail()
}
} }
i++
} }
} }
@ -78,82 +86,5 @@ func TestBasic(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
}
func TestBasic2(t *testing.T) {
trueFile, err := os.ReadFile("../testdata/basic2.tsv")
if err != nil {
t.Skip()
}
lines := strings.Split(string(trueFile), "\n")
fn := "../testdata/basic2.xlsx"
wb, err := Open(fn)
if err != nil {
t.Fatal(err)
}
sheets, err := wb.List()
if err != nil {
t.Fatal(err)
}
for _, s := range sheets {
sheet, err := wb.Get(s)
if err != nil {
t.Fatal(err)
}
i := 0
for sheet.Next() {
row := strings.Join(sheet.Strings(), "\t")
if lines[i] != row {
t.Fatalf("line %d mismatch: '%s' <> '%s'", i, row, lines[i])
}
i++
}
}
err = wb.Close()
if err != nil {
t.Fatal(err)
}
}
func TestMulti(t *testing.T) {
trueFile, err := os.ReadFile("../testdata/multi_test.tsv")
if err != nil {
t.Skip()
}
lines := strings.Split(string(trueFile), "\n")
fn := "../testdata/multi_test.xlsx"
wb, err := Open(fn)
if err != nil {
t.Fatal(err)
}
sheets, err := wb.List()
if err != nil {
t.Fatal(err)
}
for _, s := range sheets {
sheet, err := wb.Get(s)
if err != nil {
t.Fatal(err)
}
i := 0
for sheet.Next() {
row := strings.Join(sheet.Strings(), "\t")
if lines[i] != row {
t.Fatalf("line %d mismatch: '%s' <> '%s'", i, row, lines[i])
}
i++
}
}
err = wb.Close()
if err != nil {
t.Fatal(err)
} }
} }