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:
10
.github/workflows/go.yml
vendored
10
.github/workflows/go.yml
vendored
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user