summaryrefslogtreecommitdiff
path: root/pivotTable_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'pivotTable_test.go')
-rw-r--r--pivotTable_test.go127
1 files changed, 60 insertions, 67 deletions
diff --git a/pivotTable_test.go b/pivotTable_test.go
index e40dbd6..4379538 100644
--- a/pivotTable_test.go
+++ b/pivotTable_test.go
@@ -28,67 +28,53 @@ func TestAddPivotTable(t *testing.T) {
assert.NoError(t, f.AddPivotTable(&PivotTableOption{
DataRange: "Sheet1!$A$1:$E$31",
PivotTableRange: "Sheet1!$G$2:$M$34",
- Rows: []string{"Month", "Year"},
- Columns: []string{"Type"},
- Data: []string{"Sales"},
- DataSubtotal: "Sum",
- DataFieldName: "Summarize by Sum",
+ Rows: []PivotTableField{{Data: "Month"}, {Data: "Year"}},
+ Columns: []PivotTableField{{Data: "Type"}},
+ Data: []PivotTableField{{Data: "Sales", Subtotal: "Sum", Name: "Summarize by Sum"}},
}))
// Use different order of coordinate tests
assert.NoError(t, f.AddPivotTable(&PivotTableOption{
DataRange: "Sheet1!$A$1:$E$31",
PivotTableRange: "Sheet1!$U$34:$O$2",
- Rows: []string{"Month", "Year"},
- Columns: []string{"Type"},
- Data: []string{"Sales"},
- DataSubtotal: "Average",
- DataFieldName: "Summarize by Average",
+ Rows: []PivotTableField{{Data: "Month"}, {Data: "Year"}},
+ Columns: []PivotTableField{{Data: "Type"}},
+ Data: []PivotTableField{{Data: "Sales", Subtotal: "Average", Name: "Summarize by Average"}},
}))
assert.NoError(t, f.AddPivotTable(&PivotTableOption{
DataRange: "Sheet1!$A$1:$E$31",
PivotTableRange: "Sheet1!$W$2:$AC$34",
- Rows: []string{"Month", "Year"},
- Columns: []string{"Region"},
- Data: []string{"Sales"},
- DataSubtotal: "Count",
- DataFieldName: "Summarize by Count",
+ Rows: []PivotTableField{{Data: "Month"}, {Data: "Year"}},
+ Columns: []PivotTableField{{Data: "Region"}},
+ Data: []PivotTableField{{Data: "Sales", Subtotal: "Count", Name: "Summarize by Count"}},
}))
assert.NoError(t, f.AddPivotTable(&PivotTableOption{
DataRange: "Sheet1!$A$1:$E$31",
PivotTableRange: "Sheet1!$G$37:$W$50",
- Rows: []string{"Month"},
- Columns: []string{"Region", "Year"},
- Data: []string{"Sales"},
- DataSubtotal: "CountNums",
- DataFieldName: "Summarize by CountNums",
+ Rows: []PivotTableField{{Data: "Month"}},
+ Columns: []PivotTableField{{Data: "Region"}, {Data: "Year"}},
+ Data: []PivotTableField{{Data: "Sales", Subtotal: "CountNums", Name: "Summarize by CountNums"}},
}))
assert.NoError(t, f.AddPivotTable(&PivotTableOption{
DataRange: "Sheet1!$A$1:$E$31",
PivotTableRange: "Sheet1!$AE$2:$AG$33",
- Rows: []string{"Month", "Year"},
- Data: []string{"Sales"},
- DataSubtotal: "Max",
- DataFieldName: "Summarize by Max",
+ Rows: []PivotTableField{{Data: "Month"}, {Data: "Year"}},
+ Data: []PivotTableField{{Data: "Sales", Subtotal: "Max", Name: "Summarize by Max"}},
}))
f.NewSheet("Sheet2")
assert.NoError(t, f.AddPivotTable(&PivotTableOption{
DataRange: "Sheet1!$A$1:$E$31",
PivotTableRange: "Sheet2!$A$1:$AR$15",
- Rows: []string{"Month"},
- Columns: []string{"Region", "Type", "Year"},
- Data: []string{"Sales"},
- DataSubtotal: "Min",
- DataFieldName: "Summarize by Min",
+ Rows: []PivotTableField{{Data: "Month"}},
+ Columns: []PivotTableField{{Data: "Region"}, {Data: "Type"}, {Data: "Year"}},
+ Data: []PivotTableField{{Data: "Sales", Subtotal: "Min", Name: "Summarize by Min"}},
}))
assert.NoError(t, f.AddPivotTable(&PivotTableOption{
DataRange: "Sheet1!$A$1:$E$31",
PivotTableRange: "Sheet2!$A$18:$AR$54",
- Rows: []string{"Month", "Type"},
- Columns: []string{"Region", "Year"},
- Data: []string{"Sales"},
- DataSubtotal: "Product",
- DataFieldName: "Summarize by Product",
+ Rows: []PivotTableField{{Data: "Month"}, {Data: "Type"}},
+ Columns: []PivotTableField{{Data: "Region"}, {Data: "Year"}},
+ Data: []PivotTableField{{Data: "Sales", Subtotal: "Product", Name: "Summarize by Product"}},
}))
// Test empty pivot table options
@@ -97,68 +83,66 @@ func TestAddPivotTable(t *testing.T) {
assert.EqualError(t, f.AddPivotTable(&PivotTableOption{
DataRange: "Sheet1!$A$1:$A$1",
PivotTableRange: "Sheet1!$U$34:$O$2",
- Rows: []string{"Month", "Year"},
- Columns: []string{"Type"},
- Data: []string{"Sales"},
+ Rows: []PivotTableField{{Data: "Month"}, {Data: "Year"}},
+ Columns: []PivotTableField{{Data: "Type"}},
+ Data: []PivotTableField{{Data: "Sales"}},
}), `parameter 'DataRange' parsing error: parameter is invalid`)
// Test the data range of the worksheet that is not declared
assert.EqualError(t, f.AddPivotTable(&PivotTableOption{
DataRange: "$A$1:$E$31",
PivotTableRange: "Sheet1!$U$34:$O$2",
- Rows: []string{"Month", "Year"},
- Columns: []string{"Type"},
- Data: []string{"Sales"},
+ Rows: []PivotTableField{{Data: "Month"}, {Data: "Year"}},
+ Columns: []PivotTableField{{Data: "Type"}},
+ Data: []PivotTableField{{Data: "Sales"}},
}), `parameter 'DataRange' parsing error: parameter is invalid`)
// Test the worksheet declared in the data range does not exist
assert.EqualError(t, f.AddPivotTable(&PivotTableOption{
DataRange: "SheetN!$A$1:$E$31",
PivotTableRange: "Sheet1!$U$34:$O$2",
- Rows: []string{"Month", "Year"},
- Columns: []string{"Type"},
- Data: []string{"Sales"},
+ Rows: []PivotTableField{{Data: "Month"}, {Data: "Year"}},
+ Columns: []PivotTableField{{Data: "Type"}},
+ Data: []PivotTableField{{Data: "Sales"}},
}), "sheet SheetN is not exist")
// Test the pivot table range of the worksheet that is not declared
assert.EqualError(t, f.AddPivotTable(&PivotTableOption{
DataRange: "Sheet1!$A$1:$E$31",
PivotTableRange: "$U$34:$O$2",
- Rows: []string{"Month", "Year"},
- Columns: []string{"Type"},
- Data: []string{"Sales"},
+ Rows: []PivotTableField{{Data: "Month"}, {Data: "Year"}},
+ Columns: []PivotTableField{{Data: "Type"}},
+ Data: []PivotTableField{{Data: "Sales"}},
}), `parameter 'PivotTableRange' parsing error: parameter is invalid`)
// Test the worksheet declared in the pivot table range does not exist
assert.EqualError(t, f.AddPivotTable(&PivotTableOption{
DataRange: "Sheet1!$A$1:$E$31",
PivotTableRange: "SheetN!$U$34:$O$2",
- Rows: []string{"Month", "Year"},
- Columns: []string{"Type"},
- Data: []string{"Sales"},
+ Rows: []PivotTableField{{Data: "Month"}, {Data: "Year"}},
+ Columns: []PivotTableField{{Data: "Type"}},
+ Data: []PivotTableField{{Data: "Sales"}},
}), "sheet SheetN is not exist")
// Test not exists worksheet in data range
assert.EqualError(t, f.AddPivotTable(&PivotTableOption{
DataRange: "SheetN!$A$1:$E$31",
PivotTableRange: "Sheet1!$U$34:$O$2",
- Rows: []string{"Month", "Year"},
- Columns: []string{"Type"},
- Data: []string{"Sales"},
+ Rows: []PivotTableField{{Data: "Month"}, {Data: "Year"}},
+ Columns: []PivotTableField{{Data: "Type"}},
+ Data: []PivotTableField{{Data: "Sales"}},
}), "sheet SheetN is not exist")
// Test invalid row number in data range
assert.EqualError(t, f.AddPivotTable(&PivotTableOption{
DataRange: "Sheet1!$A$0:$E$31",
PivotTableRange: "Sheet1!$U$34:$O$2",
- Rows: []string{"Month", "Year"},
- Columns: []string{"Type"},
- Data: []string{"Sales"},
+ Rows: []PivotTableField{{Data: "Month"}, {Data: "Year"}},
+ Columns: []PivotTableField{{Data: "Type"}},
+ Data: []PivotTableField{{Data: "Sales"}},
}), `parameter 'DataRange' parsing error: cannot convert cell "A0" to coordinates: invalid cell name "A0"`)
assert.NoError(t, f.SaveAs(filepath.Join("test", "TestAddPivotTable1.xlsx")))
// Test with field names that exceed the length limit and invalid subtotal
assert.NoError(t, f.AddPivotTable(&PivotTableOption{
DataRange: "Sheet1!$A$1:$E$31",
PivotTableRange: "Sheet1!$G$2:$M$34",
- Rows: []string{"Month", "Year"},
- Columns: []string{"Type"},
- Data: []string{"Sales"},
- DataSubtotal: "-",
- DataFieldName: strings.Repeat("s", 256),
+ Rows: []PivotTableField{{Data: "Month"}, {Data: "Year"}},
+ Columns: []PivotTableField{{Data: "Type"}},
+ Data: []PivotTableField{{Data: "Sales", Subtotal: "-", Name: strings.Repeat("s", 256)}},
}))
// Test adjust range with invalid range
@@ -173,9 +157,9 @@ func TestAddPivotTable(t *testing.T) {
assert.EqualError(t, f.addPivotCache(0, "", &PivotTableOption{
DataRange: "$A$1:$E$31",
PivotTableRange: "Sheet1!$U$34:$O$2",
- Rows: []string{"Month", "Year"},
- Columns: []string{"Type"},
- Data: []string{"Sales"},
+ Rows: []PivotTableField{{Data: "Month"}, {Data: "Year"}},
+ Columns: []PivotTableField{{Data: "Type"}},
+ Data: []PivotTableField{{Data: "Sales"}},
}, nil), "parameter 'DataRange' parsing error: parameter is invalid")
// Test add pivot table with empty options
assert.EqualError(t, f.addPivotTable(0, 0, "", &PivotTableOption{}), "parameter 'PivotTableRange' parsing error: parameter is required")
@@ -185,11 +169,20 @@ func TestAddPivotTable(t *testing.T) {
assert.EqualError(t, f.addPivotFields(nil, &PivotTableOption{
DataRange: "$A$1:$E$31",
PivotTableRange: "Sheet1!$U$34:$O$2",
- Rows: []string{"Month", "Year"},
- Columns: []string{"Type"},
- Data: []string{"Sales"},
+ Rows: []PivotTableField{{Data: "Month"}, {Data: "Year"}},
+ Columns: []PivotTableField{{Data: "Type"}},
+ Data: []PivotTableField{{Data: "Sales"}},
}), `parameter 'DataRange' parsing error: parameter is invalid`)
// Test get pivot fields index with empty data range
- _, err = f.getPivotFieldsIndex([]string{}, &PivotTableOption{})
+ _, err = f.getPivotFieldsIndex([]PivotTableField{}, &PivotTableOption{})
assert.EqualError(t, err, `parameter 'DataRange' parsing error: parameter is required`)
}
+
+func TestInStrSlice(t *testing.T) {
+ assert.EqualValues(t, -1, inStrSlice([]string{}, ""))
+}
+
+func TestGetPivotTableFieldName(t *testing.T) {
+ f := NewFile()
+ f.getPivotTableFieldName("-", []PivotTableField{})
+}