From 40ff5dc1a7d7aa42f5db9cf9dfe858cc3820b44e Mon Sep 17 00:00:00 2001 From: xuri Date: Sat, 23 Mar 2019 20:08:06 +0800 Subject: refactor: handler error instead of panic, Exported functions: SetCellStyle InsertCol RemoveCol RemoveRow InsertRow DuplicateRow DuplicateRowTo SetRowHeight GetRowHeight GetCellValue GetCellFormula GetCellHyperLink SetCellHyperLink SetCellInt SetCellBool SetCellFloat SetCellStr SetCellDefault GetCellStyle SetCellValue MergeCell SetSheetRow SetRowVisible GetRowVisible SetRowOutlineLevel GetRowOutlineLevel GetRows Columns SearchSheet AddTable GetPicture AutoFilter GetColVisible SetColVisible GetColOutlineLevel SetColOutlineLevel SetColWidth GetColWidth inner functions: adjustHelper adjustMergeCells adjustAutoFilter prepareCell setDefaultTimeStyle timeToExcelTime addDrawingChart addDrawingVML addDrawingPicture getTotalRowsCols checkRow addDrawingShape addTable --- rows_test.go | 175 +++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 98 insertions(+), 77 deletions(-) (limited to 'rows_test.go') diff --git a/rows_test.go b/rows_test.go index 50e26dd..53c0677 100644 --- a/rows_test.go +++ b/rows_test.go @@ -23,13 +23,16 @@ func TestRows(t *testing.T) { collectedRows := make([][]string, 0) for rows.Next() { - collectedRows = append(collectedRows, trimSliceSpace(rows.Columns())) + columns, err := rows.Columns() + assert.NoError(t, err) + collectedRows = append(collectedRows, trimSliceSpace(columns)) } if !assert.NoError(t, rows.Error()) { t.FailNow() } - returnedRows := xlsx.GetRows(sheet2) + returnedRows, err := xlsx.GetRows(sheet2) + assert.NoError(t, err) for i := range returnedRows { returnedRows[i] = trimSliceSpace(returnedRows[i]) } @@ -54,21 +57,22 @@ func TestRowHeight(t *testing.T) { xlsx := NewFile() sheet1 := xlsx.GetSheetName(1) - assert.Panics(t, func() { - xlsx.SetRowHeight(sheet1, 0, defaultRowHeightPixels+1.0) - }) + assert.EqualError(t, xlsx.SetRowHeight(sheet1, 0, defaultRowHeightPixels+1.0), "invalid row number 0") - assert.Panics(t, func() { - xlsx.GetRowHeight("Sheet1", 0) - }) + height, err := xlsx.GetRowHeight("Sheet1", 0) + assert.EqualError(t, err, "invalid row number 0") - xlsx.SetRowHeight(sheet1, 1, 111.0) - assert.Equal(t, 111.0, xlsx.GetRowHeight(sheet1, 1)) + assert.NoError(t, xlsx.SetRowHeight(sheet1, 1, 111.0)) + height, err = xlsx.GetRowHeight(sheet1, 1) + assert.NoError(t, err) + assert.Equal(t, 111.0, height) - xlsx.SetRowHeight(sheet1, 4, 444.0) - assert.Equal(t, 444.0, xlsx.GetRowHeight(sheet1, 4)) + assert.NoError(t, xlsx.SetRowHeight(sheet1, 4, 444.0)) + height, err = xlsx.GetRowHeight(sheet1, 4) + assert.NoError(t, err) + assert.Equal(t, 444.0, height) - err := xlsx.SaveAs(filepath.Join("test", "TestRowHeight.xlsx")) + err = xlsx.SaveAs(filepath.Join("test", "TestRowHeight.xlsx")) if !assert.NoError(t, err) { t.FailNow() } @@ -86,13 +90,11 @@ func TestRowVisibility(t *testing.T) { xlsx.SetRowVisible("Sheet3", 2, true) xlsx.GetRowVisible("Sheet3", 2) - assert.Panics(t, func() { - xlsx.SetRowVisible("Sheet3", 0, true) - }) + assert.EqualError(t, xlsx.SetRowVisible("Sheet3", 0, true), "invalid row number 0") - assert.Panics(t, func() { - xlsx.GetRowVisible("Sheet3", 0) - }) + visible, err := xlsx.GetRowVisible("Sheet3", 0) + assert.Equal(t, false, visible) + assert.EqualError(t, err, "invalid row number 0") assert.NoError(t, xlsx.SaveAs(filepath.Join("test", "TestRowVisibility.xlsx"))) } @@ -110,27 +112,23 @@ func TestRemoveRow(t *testing.T) { xlsx.SetCellHyperLink(sheet1, "A5", "https://github.com/360EntSecGroup-Skylar/excelize", "External") - assert.Panics(t, func() { - xlsx.RemoveRow(sheet1, -1) - }) + assert.EqualError(t, xlsx.RemoveRow(sheet1, -1), "invalid row number -1") - assert.Panics(t, func() { - xlsx.RemoveRow(sheet1, 0) - }) + assert.EqualError(t, xlsx.RemoveRow(sheet1, 0), "invalid row number 0") - xlsx.RemoveRow(sheet1, 4) + assert.NoError(t, xlsx.RemoveRow(sheet1, 4)) if !assert.Len(t, r.SheetData.Row, rowCount-1) { t.FailNow() } xlsx.MergeCell(sheet1, "B3", "B5") - xlsx.RemoveRow(sheet1, 2) + assert.NoError(t, xlsx.RemoveRow(sheet1, 2)) if !assert.Len(t, r.SheetData.Row, rowCount-2) { t.FailNow() } - xlsx.RemoveRow(sheet1, 4) + assert.NoError(t, xlsx.RemoveRow(sheet1, 4)) if !assert.Len(t, r.SheetData.Row, rowCount-3) { t.FailNow() } @@ -140,17 +138,17 @@ func TestRemoveRow(t *testing.T) { t.FailNow() } - xlsx.RemoveRow(sheet1, 1) + assert.NoError(t, xlsx.RemoveRow(sheet1, 1)) if !assert.Len(t, r.SheetData.Row, rowCount-4) { t.FailNow() } - xlsx.RemoveRow(sheet1, 2) + assert.NoError(t, xlsx.RemoveRow(sheet1, 2)) if !assert.Len(t, r.SheetData.Row, rowCount-5) { t.FailNow() } - xlsx.RemoveRow(sheet1, 1) + assert.NoError(t, xlsx.RemoveRow(sheet1, 1)) if !assert.Len(t, r.SheetData.Row, rowCount-6) { t.FailNow() } @@ -171,20 +169,16 @@ func TestInsertRow(t *testing.T) { xlsx.SetCellHyperLink(sheet1, "A5", "https://github.com/360EntSecGroup-Skylar/excelize", "External") - assert.Panics(t, func() { - xlsx.InsertRow(sheet1, -1) - }) + assert.EqualError(t, xlsx.InsertRow(sheet1, -1), "invalid row number -1") - assert.Panics(t, func() { - xlsx.InsertRow(sheet1, 0) - }) + assert.EqualError(t, xlsx.InsertRow(sheet1, 0), "invalid row number 0") - xlsx.InsertRow(sheet1, 1) + assert.NoError(t, xlsx.InsertRow(sheet1, 1)) if !assert.Len(t, r.SheetData.Row, rowCount+1) { t.FailNow() } - xlsx.InsertRow(sheet1, 4) + assert.NoError(t, xlsx.InsertRow(sheet1, 4)) if !assert.Len(t, r.SheetData.Row, rowCount+2) { t.FailNow() } @@ -198,11 +192,11 @@ func TestInsertRowInEmptyFile(t *testing.T) { xlsx := NewFile() sheet1 := xlsx.GetSheetName(1) r := xlsx.workSheetReader(sheet1) - xlsx.InsertRow(sheet1, 1) + assert.NoError(t, xlsx.InsertRow(sheet1, 1)) assert.Len(t, r.SheetData.Row, 0) - xlsx.InsertRow(sheet1, 2) + assert.NoError(t, xlsx.InsertRow(sheet1, 2)) assert.Len(t, r.SheetData.Row, 0) - xlsx.InsertRow(sheet1, 99) + assert.NoError(t, xlsx.InsertRow(sheet1, 99)) assert.Len(t, r.SheetData.Row, 0) assert.NoError(t, xlsx.SaveAs(filepath.Join("test", "TestInsertRowInEmptyFile.xlsx"))) } @@ -234,7 +228,7 @@ func TestDuplicateRow(t *testing.T) { xlsx.SetCellStr(sheet, "A1", cells["A1"]) xlsx.SetCellStr(sheet, "B1", cells["B1"]) - xlsx.DuplicateRow(sheet, 1) + assert.NoError(t, xlsx.DuplicateRow(sheet, 1)) if !assert.NoError(t, xlsx.SaveAs(fmt.Sprintf(outFile, "TestDuplicateRow.FromSingleRow_1"))) { t.FailNow() } @@ -243,12 +237,14 @@ func TestDuplicateRow(t *testing.T) { "A2": cells["A1"], "B2": cells["B1"], } for cell, val := range expect { - if !assert.Equal(t, val, xlsx.GetCellValue(sheet, cell), cell) { + v, err := xlsx.GetCellValue(sheet, cell) + assert.NoError(t, err) + if !assert.Equal(t, val, v, cell) { t.FailNow() } } - xlsx.DuplicateRow(sheet, 2) + assert.NoError(t, xlsx.DuplicateRow(sheet, 2)) if !assert.NoError(t, xlsx.SaveAs(fmt.Sprintf(outFile, "TestDuplicateRow.FromSingleRow_2"))) { t.FailNow() } @@ -258,7 +254,9 @@ func TestDuplicateRow(t *testing.T) { "A3": cells["A1"], "B3": cells["B1"], } for cell, val := range expect { - if !assert.Equal(t, val, xlsx.GetCellValue(sheet, cell), cell) { + v, err := xlsx.GetCellValue(sheet, cell) + assert.NoError(t, err) + if !assert.Equal(t, val, v, cell) { t.FailNow() } } @@ -269,7 +267,7 @@ func TestDuplicateRow(t *testing.T) { xlsx.SetCellStr(sheet, "A1", cells["A1"]) xlsx.SetCellStr(sheet, "B1", cells["B1"]) - xlsx.DuplicateRow(sheet, 1) + assert.NoError(t, xlsx.DuplicateRow(sheet, 1)) xlsx.SetCellStr(sheet, "A2", cells["A2"]) xlsx.SetCellStr(sheet, "B2", cells["B2"]) @@ -282,7 +280,9 @@ func TestDuplicateRow(t *testing.T) { "A2": cells["A2"], "B2": cells["B2"], } for cell, val := range expect { - if !assert.Equal(t, val, xlsx.GetCellValue(sheet, cell), cell) { + v, err := xlsx.GetCellValue(sheet, cell) + assert.NoError(t, err) + if !assert.Equal(t, val, v, cell) { t.FailNow() } } @@ -291,7 +291,7 @@ func TestDuplicateRow(t *testing.T) { t.Run("FirstOfMultipleRows", func(t *testing.T) { xlsx := newFileWithDefaults() - xlsx.DuplicateRow(sheet, 1) + assert.NoError(t, xlsx.DuplicateRow(sheet, 1)) if !assert.NoError(t, xlsx.SaveAs(fmt.Sprintf(outFile, "TestDuplicateRow.FirstOfMultipleRows"))) { t.FailNow() @@ -303,7 +303,9 @@ func TestDuplicateRow(t *testing.T) { "A4": cells["A3"], "B4": cells["B3"], } for cell, val := range expect { - if !assert.Equal(t, val, xlsx.GetCellValue(sheet, cell), cell) { + v, err := xlsx.GetCellValue(sheet, cell) + assert.NoError(t, err) + if !assert.Equal(t, val, v, cell) { t.FailNow() } } @@ -312,26 +314,35 @@ func TestDuplicateRow(t *testing.T) { t.Run("ZeroWithNoRows", func(t *testing.T) { xlsx := NewFile() - assert.Panics(t, func() { - xlsx.DuplicateRow(sheet, 0) - }) + assert.EqualError(t, xlsx.DuplicateRow(sheet, 0), "invalid row number 0") if !assert.NoError(t, xlsx.SaveAs(fmt.Sprintf(outFile, "TestDuplicateRow.ZeroWithNoRows"))) { t.FailNow() } - assert.Equal(t, "", xlsx.GetCellValue(sheet, "A1")) - assert.Equal(t, "", xlsx.GetCellValue(sheet, "B1")) - assert.Equal(t, "", xlsx.GetCellValue(sheet, "A2")) - assert.Equal(t, "", xlsx.GetCellValue(sheet, "B2")) - + val, err := xlsx.GetCellValue(sheet, "A1") + assert.NoError(t, err) + assert.Equal(t, "", val) + val, err = xlsx.GetCellValue(sheet, "B1") + assert.NoError(t, err) + assert.Equal(t, "", val) + val, err = xlsx.GetCellValue(sheet, "A2") + assert.NoError(t, err) + assert.Equal(t, "", val) + val, err = xlsx.GetCellValue(sheet, "B2") + assert.NoError(t, err) + assert.Equal(t, "", val) + + assert.NoError(t, err) expect := map[string]string{ "A1": "", "B1": "", "A2": "", "B2": "", } for cell, val := range expect { - if !assert.Equal(t, val, xlsx.GetCellValue(sheet, cell), cell) { + v, err := xlsx.GetCellValue(sheet, cell) + assert.NoError(t, err) + if !assert.Equal(t, val, v, cell) { t.FailNow() } } @@ -340,7 +351,7 @@ func TestDuplicateRow(t *testing.T) { t.Run("MiddleRowOfEmptyFile", func(t *testing.T) { xlsx := NewFile() - xlsx.DuplicateRow(sheet, 99) + assert.NoError(t, xlsx.DuplicateRow(sheet, 99)) if !assert.NoError(t, xlsx.SaveAs(fmt.Sprintf(outFile, "TestDuplicateRow.MiddleRowOfEmptyFile"))) { t.FailNow() @@ -351,7 +362,9 @@ func TestDuplicateRow(t *testing.T) { "A100": "", } for cell, val := range expect { - if !assert.Equal(t, val, xlsx.GetCellValue(sheet, cell), cell) { + v, err := xlsx.GetCellValue(sheet, cell) + assert.NoError(t, err) + if !assert.Equal(t, val, v, cell) { t.FailNow() } } @@ -360,7 +373,7 @@ func TestDuplicateRow(t *testing.T) { t.Run("WithLargeOffsetToMiddleOfData", func(t *testing.T) { xlsx := newFileWithDefaults() - xlsx.DuplicateRowTo(sheet, 1, 3) + assert.NoError(t, xlsx.DuplicateRowTo(sheet, 1, 3)) if !assert.NoError(t, xlsx.SaveAs(fmt.Sprintf(outFile, "TestDuplicateRow.WithLargeOffsetToMiddleOfData"))) { t.FailNow() @@ -372,7 +385,9 @@ func TestDuplicateRow(t *testing.T) { "A4": cells["A3"], "B4": cells["B3"], } for cell, val := range expect { - if !assert.Equal(t, val, xlsx.GetCellValue(sheet, cell), cell) { + v, err := xlsx.GetCellValue(sheet, cell) + assert.NoError(t, err) + if !assert.Equal(t, val, v, cell) { t.FailNow() } } @@ -381,7 +396,7 @@ func TestDuplicateRow(t *testing.T) { t.Run("WithLargeOffsetToEmptyRows", func(t *testing.T) { xlsx := newFileWithDefaults() - xlsx.DuplicateRowTo(sheet, 1, 7) + assert.NoError(t, xlsx.DuplicateRowTo(sheet, 1, 7)) if !assert.NoError(t, xlsx.SaveAs(fmt.Sprintf(outFile, "TestDuplicateRow.WithLargeOffsetToEmptyRows"))) { t.FailNow() @@ -393,7 +408,9 @@ func TestDuplicateRow(t *testing.T) { "A7": cells["A1"], "B7": cells["B1"], } for cell, val := range expect { - if !assert.Equal(t, val, xlsx.GetCellValue(sheet, cell), cell) { + v, err := xlsx.GetCellValue(sheet, cell) + assert.NoError(t, err) + if !assert.Equal(t, val, v, cell) { t.FailNow() } } @@ -402,7 +419,7 @@ func TestDuplicateRow(t *testing.T) { t.Run("InsertBefore", func(t *testing.T) { xlsx := newFileWithDefaults() - xlsx.DuplicateRowTo(sheet, 2, 1) + assert.NoError(t, xlsx.DuplicateRowTo(sheet, 2, 1)) if !assert.NoError(t, xlsx.SaveAs(fmt.Sprintf(outFile, "TestDuplicateRow.InsertBefore"))) { t.FailNow() @@ -415,7 +432,9 @@ func TestDuplicateRow(t *testing.T) { "A4": cells["A3"], "B4": cells["B3"], } for cell, val := range expect { - if !assert.Equal(t, val, xlsx.GetCellValue(sheet, cell), cell) { + v, err := xlsx.GetCellValue(sheet, cell) + assert.NoError(t, err) + if !assert.Equal(t, val, v, cell) { t.FailNow() } } @@ -424,7 +443,7 @@ func TestDuplicateRow(t *testing.T) { t.Run("InsertBeforeWithLargeOffset", func(t *testing.T) { xlsx := newFileWithDefaults() - xlsx.DuplicateRowTo(sheet, 3, 1) + assert.NoError(t, xlsx.DuplicateRowTo(sheet, 3, 1)) if !assert.NoError(t, xlsx.SaveAs(fmt.Sprintf(outFile, "TestDuplicateRow.InsertBeforeWithLargeOffset"))) { t.FailNow() @@ -437,7 +456,9 @@ func TestDuplicateRow(t *testing.T) { "A4": cells["A3"], "B4": cells["B3"], } for cell, val := range expect { - if !assert.Equal(t, val, xlsx.GetCellValue(sheet, cell)) { + v, err := xlsx.GetCellValue(sheet, cell) + assert.NoError(t, err) + if !assert.Equal(t, val, v) { t.FailNow() } } @@ -467,12 +488,12 @@ func TestDuplicateRowInvalidRownum(t *testing.T) { xlsx.SetCellStr(sheet, col, val) } - assert.Panics(t, func() { - xlsx.DuplicateRow(sheet, row) - }) + assert.EqualError(t, xlsx.DuplicateRow(sheet, row), fmt.Sprintf("invalid row number %d", row)) for col, val := range cells { - if !assert.Equal(t, val, xlsx.GetCellValue(sheet, col)) { + v, err := xlsx.GetCellValue(sheet, col) + assert.NoError(t, err) + if !assert.Equal(t, val, v) { t.FailNow() } } @@ -489,12 +510,12 @@ func TestDuplicateRowInvalidRownum(t *testing.T) { xlsx.SetCellStr(sheet, col, val) } - assert.Panics(t, func() { - xlsx.DuplicateRowTo(sheet, row1, row2) - }) + assert.EqualError(t, xlsx.DuplicateRowTo(sheet, row1, row2), fmt.Sprintf("invalid row number %d", row1)) for col, val := range cells { - if !assert.Equal(t, val, xlsx.GetCellValue(sheet, col)) { + v, err := xlsx.GetCellValue(sheet, col) + assert.NoError(t, err) + if !assert.Equal(t, val, v) { t.FailNow() } } -- cgit v1.2.1