Skip to content

Commit

Permalink
optimization: checking error in unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
xuri committed Dec 23, 2019
1 parent 4e4a5b9 commit 1666d04
Show file tree
Hide file tree
Showing 16 changed files with 267 additions and 246 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ go:
- 1.10.x
- 1.11.x
- 1.12.x
- 1.13.x

os:
- linux
Expand Down
18 changes: 11 additions & 7 deletions cell_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ func TestSetCellFloat(t *testing.T) {
sheet := "Sheet1"
t.Run("with no decimal", func(t *testing.T) {
f := NewFile()
f.SetCellFloat(sheet, "A1", 123.0, -1, 64)
f.SetCellFloat(sheet, "A2", 123.0, 1, 64)
assert.NoError(t, f.SetCellFloat(sheet, "A1", 123.0, -1, 64))
assert.NoError(t, f.SetCellFloat(sheet, "A2", 123.0, 1, 64))
val, err := f.GetCellValue(sheet, "A1")
assert.NoError(t, err)
assert.Equal(t, "123", val, "A1 should be 123")
Expand All @@ -66,15 +66,15 @@ func TestSetCellFloat(t *testing.T) {

t.Run("with a decimal and precision limit", func(t *testing.T) {
f := NewFile()
f.SetCellFloat(sheet, "A1", 123.42, 1, 64)
assert.NoError(t, f.SetCellFloat(sheet, "A1", 123.42, 1, 64))
val, err := f.GetCellValue(sheet, "A1")
assert.NoError(t, err)
assert.Equal(t, "123.4", val, "A1 should be 123.4")
})

t.Run("with a decimal and no limit", func(t *testing.T) {
f := NewFile()
f.SetCellFloat(sheet, "A1", 123.42, -1, 64)
assert.NoError(t, f.SetCellFloat(sheet, "A1", 123.42, -1, 64))
val, err := f.GetCellValue(sheet, "A1")
assert.NoError(t, err)
assert.Equal(t, "123.42", val, "A1 should be 123.42")
Expand All @@ -101,15 +101,17 @@ func TestGetCellFormula(t *testing.T) {
assert.EqualError(t, err, "sheet SheetN is not exist")

// Test get cell formula on no formula cell.
f.SetCellValue("Sheet1", "A1", true)
assert.NoError(t, f.SetCellValue("Sheet1", "A1", true))
_, err = f.GetCellFormula("Sheet1", "A1")
assert.NoError(t, err)
}

func ExampleFile_SetCellFloat() {
f := NewFile()
var x = 3.14159265
f.SetCellFloat("Sheet1", "A1", x, 2, 64)
if err := f.SetCellFloat("Sheet1", "A1", x, 2, 64); err != nil {
fmt.Println(err)
}
val, _ := f.GetCellValue("Sheet1", "A1")
fmt.Println(val)
// Output: 3.14
Expand All @@ -122,7 +124,9 @@ func BenchmarkSetCellValue(b *testing.B) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
for j := 0; j < len(values); j++ {
f.SetCellValue("Sheet1", fmt.Sprint(cols[j], i), values[j])
if err := f.SetCellValue("Sheet1", fmt.Sprint(cols[j], i), values[j]); err != nil {
b.Error(err)
}
}
}
}
Expand Down
22 changes: 14 additions & 8 deletions cellmerged_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,20 @@ func TestMergeCell(t *testing.T) {
assert.NoError(t, f.MergeCell("Sheet1", "H7", "B15"))
assert.NoError(t, f.MergeCell("Sheet1", "D11", "F13"))
assert.NoError(t, f.MergeCell("Sheet1", "G10", "K12"))
f.SetCellValue("Sheet1", "G11", "set value in merged cell")
f.SetCellInt("Sheet1", "H11", 100)
f.SetCellValue("Sheet1", "I11", float64(0.5))
f.SetCellHyperLink("Sheet1", "J11", "https://github.com/360EntSecGroup-Skylar/excelize", "External")
f.SetCellFormula("Sheet1", "G12", "SUM(Sheet1!B19,Sheet1!C19)")
f.GetCellValue("Sheet1", "H11")
f.GetCellValue("Sheet2", "A6") // Merged cell ref is single coordinate.
f.GetCellFormula("Sheet1", "G12")
assert.NoError(t, f.SetCellValue("Sheet1", "G11", "set value in merged cell"))
assert.NoError(t, f.SetCellInt("Sheet1", "H11", 100))
assert.NoError(t, f.SetCellValue("Sheet1", "I11", float64(0.5)))
assert.NoError(t, f.SetCellHyperLink("Sheet1", "J11", "https://github.com/360EntSecGroup-Skylar/excelize", "External"))
assert.NoError(t, f.SetCellFormula("Sheet1", "G12", "SUM(Sheet1!B19,Sheet1!C19)"))
value, err := f.GetCellValue("Sheet1", "H11")
assert.Equal(t, "0.5", value)
assert.NoError(t, err)
value, err = f.GetCellValue("Sheet2", "A6") // Merged cell ref is single coordinate.
assert.Equal(t, "", value)
assert.NoError(t, err)
value, err = f.GetCellFormula("Sheet1", "G12")
assert.Equal(t, "SUM(Sheet1!B19,Sheet1!C19)", value)
assert.NoError(t, err)

f.NewSheet("Sheet3")
assert.NoError(t, f.MergeCell("Sheet3", "D11", "F13"))
Expand Down
21 changes: 7 additions & 14 deletions chart_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func TestChartSize(t *testing.T) {
"D1": "Pear",
}
for cell, v := range categories {
xlsx.SetCellValue(sheet1, cell, v)
assert.NoError(t, xlsx.SetCellValue(sheet1, cell, v))
}

values := map[string]int{
Expand All @@ -37,29 +37,22 @@ func TestChartSize(t *testing.T) {
"D4": 8,
}
for cell, v := range values {
xlsx.SetCellValue(sheet1, cell, v)
assert.NoError(t, xlsx.SetCellValue(sheet1, cell, v))
}

xlsx.AddChart("Sheet1", "E4", `{"type":"col3DClustered","dimension":{"width":640, "height":480},`+
assert.NoError(t, xlsx.AddChart("Sheet1", "E4", `{"type":"col3DClustered","dimension":{"width":640, "height":480},`+
`"series":[{"name":"Sheet1!$A$2","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$2:$D$2"},`+
`{"name":"Sheet1!$A$3","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$3:$D$3"},`+
`{"name":"Sheet1!$A$4","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$4:$D$4"}],`+
`"title":{"name":"3D Clustered Column Chart"}}`)
`"title":{"name":"3D Clustered Column Chart"}}`))

var (
buffer bytes.Buffer
)
var buffer bytes.Buffer

// Save xlsx file by the given path.
err := xlsx.Write(&buffer)
if !assert.NoError(t, err) {
t.FailNow()
}
assert.NoError(t, xlsx.Write(&buffer))

newFile, err := OpenReader(&buffer)
if !assert.NoError(t, err) {
t.FailNow()
}
assert.NoError(t, err)

chartsNum := newFile.countCharts()
if !assert.Equal(t, 1, chartsNum, "Expected 1 chart, actual %d", chartsNum) {
Expand Down
53 changes: 35 additions & 18 deletions col_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,29 @@ func TestColumnVisibility(t *testing.T) {
t.Run("TestBook3", func(t *testing.T) {
f, err := prepareTestBook3()
assert.NoError(t, err)
f.GetColVisible("Sheet1", "B")
visible, err := f.GetColVisible("Sheet1", "B")
assert.Equal(t, true, visible)
assert.NoError(t, err)
})
}

func TestOutlineLevel(t *testing.T) {
f := NewFile()
f.GetColOutlineLevel("Sheet1", "D")
level, err := f.GetColOutlineLevel("Sheet1", "D")
assert.Equal(t, uint8(0), level)
assert.NoError(t, err)

f.NewSheet("Sheet2")
assert.NoError(t, f.SetColOutlineLevel("Sheet1", "D", 4))
f.GetColOutlineLevel("Sheet1", "D")
f.GetColOutlineLevel("Shee2", "A")

level, err = f.GetColOutlineLevel("Sheet1", "D")
assert.Equal(t, uint8(4), level)
assert.NoError(t, err)

level, err = f.GetColOutlineLevel("Shee2", "A")
assert.Equal(t, uint8(0), level)
assert.EqualError(t, err, "sheet Shee2 is not exist")

assert.NoError(t, f.SetColWidth("Sheet2", "A", "D", 13))
assert.NoError(t, f.SetColOutlineLevel("Sheet2", "B", 2))
assert.NoError(t, f.SetRowOutlineLevel("Sheet1", 2, 7))
Expand All @@ -56,7 +68,7 @@ func TestOutlineLevel(t *testing.T) {
// Test set row outline level on not exists worksheet.
assert.EqualError(t, f.SetRowOutlineLevel("SheetN", 1, 4), "sheet SheetN is not exist")
// Test get row outline level on not exists worksheet.
_, err := f.GetRowOutlineLevel("SheetN", 1)
_, err = f.GetRowOutlineLevel("SheetN", 1)
assert.EqualError(t, err, "sheet SheetN is not exist")

// Test set and get column outline level with illegal cell coordinates.
Expand All @@ -68,7 +80,7 @@ func TestOutlineLevel(t *testing.T) {
assert.EqualError(t, f.SetColOutlineLevel("SheetN", "E", 2), "sheet SheetN is not exist")

assert.EqualError(t, f.SetRowOutlineLevel("Sheet1", 0, 1), "invalid row number 0")
level, err := f.GetRowOutlineLevel("Sheet1", 2)
level, err = f.GetRowOutlineLevel("Sheet1", 2)
assert.NoError(t, err)
assert.Equal(t, uint8(7), level)

Expand All @@ -83,7 +95,7 @@ func TestOutlineLevel(t *testing.T) {

f, err = OpenFile(filepath.Join("test", "Book1.xlsx"))
assert.NoError(t, err)
f.SetColOutlineLevel("Sheet2", "B", 2)
assert.NoError(t, f.SetColOutlineLevel("Sheet2", "B", 2))
}

func TestSetColStyle(t *testing.T) {
Expand All @@ -105,13 +117,18 @@ func TestSetColStyle(t *testing.T) {

func TestColWidth(t *testing.T) {
f := NewFile()
f.SetColWidth("Sheet1", "B", "A", 12)
f.SetColWidth("Sheet1", "A", "B", 12)
f.GetColWidth("Sheet1", "A")
f.GetColWidth("Sheet1", "C")
assert.NoError(t, f.SetColWidth("Sheet1", "B", "A", 12))
assert.NoError(t, f.SetColWidth("Sheet1", "A", "B", 12))
width, err := f.GetColWidth("Sheet1", "A")
assert.Equal(t, float64(12), width)
assert.NoError(t, err)
width, err = f.GetColWidth("Sheet1", "C")
assert.Equal(t, float64(64), width)
assert.NoError(t, err)

// Test set and get column width with illegal cell coordinates.
_, err := f.GetColWidth("Sheet1", "*")
width, err = f.GetColWidth("Sheet1", "*")
assert.Equal(t, float64(64), width)
assert.EqualError(t, err, `invalid column name "*"`)
assert.EqualError(t, f.SetColWidth("Sheet1", "*", "B", 1), `invalid column name "*"`)
assert.EqualError(t, f.SetColWidth("Sheet1", "A", "*", 1), `invalid column name "*"`)
Expand All @@ -133,8 +150,8 @@ func TestInsertCol(t *testing.T) {

fillCells(f, sheet1, 10, 10)

f.SetCellHyperLink(sheet1, "A5", "https://github.com/360EntSecGroup-Skylar/excelize", "External")
f.MergeCell(sheet1, "A1", "C3")
assert.NoError(t, f.SetCellHyperLink(sheet1, "A5", "https://github.com/360EntSecGroup-Skylar/excelize", "External"))
assert.NoError(t, f.MergeCell(sheet1, "A1", "C3"))

assert.NoError(t, f.AutoFilter(sheet1, "A2", "B2", `{"column":"B","expression":"x != blanks"}`))
assert.NoError(t, f.InsertCol(sheet1, "A"))
Expand All @@ -151,11 +168,11 @@ func TestRemoveCol(t *testing.T) {

fillCells(f, sheet1, 10, 15)

f.SetCellHyperLink(sheet1, "A5", "https://github.com/360EntSecGroup-Skylar/excelize", "External")
f.SetCellHyperLink(sheet1, "C5", "https://github.com", "External")
assert.NoError(t, f.SetCellHyperLink(sheet1, "A5", "https://github.com/360EntSecGroup-Skylar/excelize", "External"))
assert.NoError(t, f.SetCellHyperLink(sheet1, "C5", "https://github.com", "External"))

f.MergeCell(sheet1, "A1", "B1")
f.MergeCell(sheet1, "A2", "B2")
assert.NoError(t, f.MergeCell(sheet1, "A1", "B1"))
assert.NoError(t, f.MergeCell(sheet1, "A2", "B2"))

assert.NoError(t, f.RemoveCol(sheet1, "A"))
assert.NoError(t, f.RemoveCol(sheet1, "A"))
Expand Down
46 changes: 18 additions & 28 deletions datavalidation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,53 +24,45 @@ func TestDataValidation(t *testing.T) {

dvRange := NewDataValidation(true)
dvRange.Sqref = "A1:B2"
dvRange.SetRange(10, 20, DataValidationTypeWhole, DataValidationOperatorBetween)
assert.NoError(t, dvRange.SetRange(10, 20, DataValidationTypeWhole, DataValidationOperatorBetween))
dvRange.SetError(DataValidationErrorStyleStop, "error title", "error body")
dvRange.SetError(DataValidationErrorStyleWarning, "error title", "error body")
dvRange.SetError(DataValidationErrorStyleInformation, "error title", "error body")
f.AddDataValidation("Sheet1", dvRange)
if !assert.NoError(t, f.SaveAs(resultFile)) {
t.FailNow()
}
assert.NoError(t, f.AddDataValidation("Sheet1", dvRange))
assert.NoError(t, f.SaveAs(resultFile))

dvRange = NewDataValidation(true)
dvRange.Sqref = "A3:B4"
dvRange.SetRange(10, 20, DataValidationTypeWhole, DataValidationOperatorGreaterThan)
assert.NoError(t, dvRange.SetRange(10, 20, DataValidationTypeWhole, DataValidationOperatorGreaterThan))
dvRange.SetInput("input title", "input body")
f.AddDataValidation("Sheet1", dvRange)
if !assert.NoError(t, f.SaveAs(resultFile)) {
t.FailNow()
}
assert.NoError(t, f.AddDataValidation("Sheet1", dvRange))
assert.NoError(t, f.SaveAs(resultFile))

dvRange = NewDataValidation(true)
dvRange.Sqref = "A5:B6"
dvRange.SetDropList([]string{"1", "2", "3"})
f.AddDataValidation("Sheet1", dvRange)
if !assert.NoError(t, f.SaveAs(resultFile)) {
t.FailNow()
}
assert.NoError(t, dvRange.SetDropList([]string{"1", "2", "3"}))
assert.NoError(t, f.AddDataValidation("Sheet1", dvRange))
assert.NoError(t, f.SaveAs(resultFile))
}

func TestDataValidationError(t *testing.T) {
resultFile := filepath.Join("test", "TestDataValidationError.xlsx")

f := NewFile()
f.SetCellStr("Sheet1", "E1", "E1")
f.SetCellStr("Sheet1", "E2", "E2")
f.SetCellStr("Sheet1", "E3", "E3")
assert.NoError(t, f.SetCellStr("Sheet1", "E1", "E1"))
assert.NoError(t, f.SetCellStr("Sheet1", "E2", "E2"))
assert.NoError(t, f.SetCellStr("Sheet1", "E3", "E3"))

dvRange := NewDataValidation(true)
dvRange.SetSqref("A7:B8")
dvRange.SetSqref("A7:B8")
dvRange.SetSqrefDropList("$E$1:$E$3", true)
assert.NoError(t, dvRange.SetSqrefDropList("$E$1:$E$3", true))

err := dvRange.SetSqrefDropList("$E$1:$E$3", false)
assert.EqualError(t, err, "cross-sheet sqref cell are not supported")

f.AddDataValidation("Sheet1", dvRange)
if !assert.NoError(t, f.SaveAs(resultFile)) {
t.FailNow()
}
assert.NoError(t, f.AddDataValidation("Sheet1", dvRange))
assert.NoError(t, f.SaveAs(resultFile))

dvRange = NewDataValidation(true)
err = dvRange.SetDropList(make([]string, 258))
Expand All @@ -79,13 +71,11 @@ func TestDataValidationError(t *testing.T) {
return
}
assert.EqualError(t, err, "data validation must be 0-255 characters")
dvRange.SetRange(10, 20, DataValidationTypeWhole, DataValidationOperatorGreaterThan)
assert.NoError(t, dvRange.SetRange(10, 20, DataValidationTypeWhole, DataValidationOperatorGreaterThan))
dvRange.SetSqref("A9:B10")

f.AddDataValidation("Sheet1", dvRange)
if !assert.NoError(t, f.SaveAs(resultFile)) {
t.FailNow()
}
assert.NoError(t, f.AddDataValidation("Sheet1", dvRange))
assert.NoError(t, f.SaveAs(resultFile))

// Test width invalid data validation formula.
dvRange.Formula1 = strings.Repeat("s", dataValidationFormulaStrLen+22)
Expand Down
2 changes: 1 addition & 1 deletion excelize.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ func (f *File) setDefaultTimeStyle(sheet, axis string, format int) error {
}
if s == 0 {
style, _ := f.NewStyle(`{"number_format": ` + strconv.Itoa(format) + `}`)
f.SetCellStyle(sheet, axis, axis, style)
_ = f.SetCellStyle(sheet, axis, axis, style)
}
return err
}
Expand Down
Loading

0 comments on commit 1666d04

Please sign in to comment.