@@ -6379,6 +6379,35 @@ func TestCalcCellResolver(t *testing.T) {
63796379 assert .NoError (t , err )
63806380 assert .Equal (t , expected , result )
63816381 }
6382+ // Test calculates formula that reference date and error type cells
6383+ assert .NoError (t , f .SetCellValue ("Sheet1" , "C1" , "20200208T080910.123" ))
6384+ assert .NoError (t , f .SetCellValue ("Sheet1" , "C2" , "2020-07-10 15:00:00.000" ))
6385+ assert .NoError (t , f .SetCellValue ("Sheet1" , "C3" , formulaErrorDIV ))
6386+ ws , ok := f .Sheet .Load ("xl/worksheets/sheet1.xml" )
6387+ assert .True (t , ok )
6388+ ws .(* xlsxWorksheet ).SheetData .Row [0 ].C [2 ].T = "d"
6389+ ws .(* xlsxWorksheet ).SheetData .Row [0 ].C [2 ].V = "20200208T080910.123"
6390+ ws .(* xlsxWorksheet ).SheetData .Row [1 ].C [2 ].T = "d"
6391+ ws .(* xlsxWorksheet ).SheetData .Row [1 ].C [2 ].V = "2020-07-10 15:00:00.000"
6392+ ws .(* xlsxWorksheet ).SheetData .Row [2 ].C [2 ].T = "e"
6393+ ws .(* xlsxWorksheet ).SheetData .Row [2 ].C [2 ].V = formulaErrorDIV
6394+ for _ , tbl := range [][]string {
6395+ {"D1" , "=SUM(C1,1)" , "43870.3397004977" },
6396+ {"D2" , "=LEN(C2)" , "23" },
6397+ {"D3" , "=IFERROR(C3,TRUE)" , "TRUE" },
6398+ } {
6399+ assert .NoError (t , f .SetCellFormula ("Sheet1" , tbl [0 ], tbl [1 ]))
6400+ result , err := f .CalcCellValue ("Sheet1" , tbl [0 ])
6401+ assert .NoError (t , err )
6402+ assert .Equal (t , tbl [2 ], result )
6403+ }
6404+ // Test calculates formula that reference invalid cell
6405+ assert .NoError (t , f .SetCellValue ("Sheet1" , "E1" , "E1" ))
6406+ assert .NoError (t , f .SetCellFormula ("Sheet1" , "F1" , "=LEN(E1)" ))
6407+ f .SharedStrings = nil
6408+ f .Pkg .Store (defaultXMLPathSharedStrings , MacintoshCyrillicCharset )
6409+ _ , err := f .CalcCellValue ("Sheet1" , "F1" )
6410+ assert .EqualError (t , err , "XML syntax error on line 1: invalid UTF-8" )
63826411}
63836412
63846413func TestEvalInfixExp (t * testing.T ) {
0 commit comments