50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package tableparse
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/xuri/excelize/v2"
|
|
)
|
|
|
|
func TestParseCSVBuildsProfile(t *testing.T) {
|
|
dir := t.TempDir()
|
|
path := filepath.Join(dir, "sales.csv")
|
|
if err := os.WriteFile(path, []byte("date,sales,orders\n8/1,100,2\n8/2,200,4\n"), 0o600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
profile, err := Parse(path, "csv")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !profile.Parsed || profile.RowCount != 2 {
|
|
t.Fatalf("profile parsed=%v rowCount=%d, want parsed=true rowCount=2", profile.Parsed, profile.RowCount)
|
|
}
|
|
if got := profile.Stats["sales"].Sum; got != 300 {
|
|
t.Fatalf("sales sum = %v, want 300", got)
|
|
}
|
|
}
|
|
|
|
func TestParseXLSXBuildsProfile(t *testing.T) {
|
|
dir := t.TempDir()
|
|
path := filepath.Join(dir, "sales.xlsx")
|
|
f := excelize.NewFile()
|
|
if err := f.SetSheetRow("Sheet1", "A1", &[]any{"date", "sales"}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := f.SetSheetRow("Sheet1", "A2", &[]any{"8/1", 120}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := f.SaveAs(path); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
profile, err := Parse(path, "xlsx")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !profile.Parsed || profile.Columns[1].Type != "number" {
|
|
t.Fatalf("profile parsed=%v sales type=%q, want parsed=true number", profile.Parsed, profile.Columns[1].Type)
|
|
}
|
|
}
|