|
|
@@ -1,12 +1,136 @@
|
|
|
package excelize
|
|
|
|
|
|
import (
|
|
|
+ "bytes"
|
|
|
"path/filepath"
|
|
|
"testing"
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
+ "github.com/stretchr/testify/require"
|
|
|
)
|
|
|
|
|
|
+func TestCols(t *testing.T) {
|
|
|
+ const sheet2 = "Sheet2"
|
|
|
+
|
|
|
+ f, err := OpenFile(filepath.Join("test", "Book1.xlsx"))
|
|
|
+ if !assert.NoError(t, err) {
|
|
|
+ t.FailNow()
|
|
|
+ }
|
|
|
+
|
|
|
+ cols, err := f.Cols(sheet2)
|
|
|
+ if !assert.NoError(t, err) {
|
|
|
+ t.FailNow()
|
|
|
+ }
|
|
|
+
|
|
|
+ var collectedRows [][]string
|
|
|
+ for cols.Next() {
|
|
|
+ rows, err := cols.Rows()
|
|
|
+ assert.NoError(t, err)
|
|
|
+ collectedRows = append(collectedRows, trimSliceSpace(rows))
|
|
|
+ }
|
|
|
+ if !assert.NoError(t, cols.Error()) {
|
|
|
+ t.FailNow()
|
|
|
+ }
|
|
|
+
|
|
|
+ returnedColumns, err := f.GetCols(sheet2)
|
|
|
+ assert.NoError(t, err)
|
|
|
+ for i := range returnedColumns {
|
|
|
+ returnedColumns[i] = trimSliceSpace(returnedColumns[i])
|
|
|
+ }
|
|
|
+ if !assert.Equal(t, collectedRows, returnedColumns) {
|
|
|
+ t.FailNow()
|
|
|
+ }
|
|
|
+
|
|
|
+ f = NewFile()
|
|
|
+ cells := []string{"C2", "C3", "C4"}
|
|
|
+ for _, cell := range cells {
|
|
|
+ assert.NoError(t, f.SetCellValue("Sheet1", cell, 1))
|
|
|
+ }
|
|
|
+ _, err = f.Rows("Sheet1")
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ f.Sheet["xl/worksheets/sheet1.xml"] = &xlsxWorksheet{
|
|
|
+ Dimension: &xlsxDimension{
|
|
|
+ Ref: "C2:C4",
|
|
|
+ },
|
|
|
+ }
|
|
|
+ _, err = f.Rows("Sheet1")
|
|
|
+ assert.NoError(t, err)
|
|
|
+}
|
|
|
+
|
|
|
+func TestColumnsIterator(t *testing.T) {
|
|
|
+ const (
|
|
|
+ sheet2 = "Sheet2"
|
|
|
+ expectedNumCol = 4
|
|
|
+ )
|
|
|
+
|
|
|
+ f, err := OpenFile(filepath.Join("test", "Book1.xlsx"))
|
|
|
+ require.NoError(t, err)
|
|
|
+
|
|
|
+ cols, err := f.Cols(sheet2)
|
|
|
+ require.NoError(t, err)
|
|
|
+
|
|
|
+ var colCount int
|
|
|
+ for cols.Next() {
|
|
|
+ colCount++
|
|
|
+ require.True(t, colCount <= expectedNumCol, "colCount is greater than expected")
|
|
|
+ }
|
|
|
+ assert.Equal(t, expectedNumCol, colCount)
|
|
|
+
|
|
|
+ f = NewFile()
|
|
|
+ cells := []string{"C2", "C3", "C4", "D2", "D3", "D4"}
|
|
|
+ for _, cell := range cells {
|
|
|
+ assert.NoError(t, f.SetCellValue("Sheet1", cell, 1))
|
|
|
+ }
|
|
|
+ f.Sheet["xl/worksheets/sheet1.xml"] = &xlsxWorksheet{
|
|
|
+ Dimension: &xlsxDimension{
|
|
|
+ Ref: "C2:D4",
|
|
|
+ },
|
|
|
+ }
|
|
|
+ cols, err = f.Cols("Sheet1")
|
|
|
+ require.NoError(t, err)
|
|
|
+
|
|
|
+ colCount = 0
|
|
|
+ for cols.Next() {
|
|
|
+ colCount++
|
|
|
+ require.True(t, colCount <= 2, "colCount is greater than expected")
|
|
|
+ }
|
|
|
+ assert.Equal(t, 2, colCount)
|
|
|
+}
|
|
|
+
|
|
|
+func TestColsError(t *testing.T) {
|
|
|
+ xlsx, err := OpenFile(filepath.Join("test", "Book1.xlsx"))
|
|
|
+ if !assert.NoError(t, err) {
|
|
|
+ t.FailNow()
|
|
|
+ }
|
|
|
+ _, err = xlsx.Cols("SheetN")
|
|
|
+ assert.EqualError(t, err, "sheet SheetN is not exist")
|
|
|
+}
|
|
|
+
|
|
|
+func TestColsRows(t *testing.T) {
|
|
|
+ f := NewFile()
|
|
|
+ f.NewSheet("Sheet1")
|
|
|
+
|
|
|
+ cols, err := f.Cols("Sheet1")
|
|
|
+ assert.EqualError(t, err, `Sheet coordinates are wrong`)
|
|
|
+
|
|
|
+ assert.NoError(t, f.SetCellValue("Sheet1", "A1", 1))
|
|
|
+ f.Sheet["xl/worksheets/sheet1.xml"] = &xlsxWorksheet{
|
|
|
+ Dimension: &xlsxDimension{
|
|
|
+ Ref: "A1:A1",
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ cols.stashCol, cols.curCol = 0, 1
|
|
|
+ cols, err = f.Cols("Sheet1")
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ // Test if token is nil
|
|
|
+ cols.decoder = f.xmlNewDecoder(bytes.NewReader(nil))
|
|
|
+ _, err = cols.Rows()
|
|
|
+ assert.NoError(t, err)
|
|
|
+}
|
|
|
+
|
|
|
func TestColumnVisibility(t *testing.T) {
|
|
|
t.Run("TestBook1", func(t *testing.T) {
|
|
|
f, err := prepareTestBook1()
|