diff options
author | Jérôme Pogeant <p-jerome@hotmail.fr> | 2020-06-16 11:53:22 +0200 |
---|---|---|
committer | Jérôme Pogeant <p-jerome@hotmail.fr> | 2020-06-17 16:45:04 +0200 |
commit | e9a4007c17f0db01b52bb40ab744c25e0f9e9673 (patch) | |
tree | 77a52d49e75072770a1d839387647564a9932d19 /col_test.go | |
parent | 8ce48b859a3803647a247a53b3c9fd49192fd4a7 (diff) |
Implement columns iterator
Diffstat (limited to 'col_test.go')
-rw-r--r-- | col_test.go | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/col_test.go b/col_test.go index fcb1619..a130f2b 100644 --- a/col_test.go +++ b/col_test.go @@ -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() |