@@ -4865,6 +4865,43 @@ func TestCalcISFORMULA(t *testing.T) {
48654865 }
48664866}
48674867
4868+ func TestCalcMODE (t * testing.T ) {
4869+ cellData := [][]interface {}{
4870+ {1 , 1 },
4871+ {1 , 1 },
4872+ {2 , 2 },
4873+ {2 , 2 },
4874+ {3 , 2 },
4875+ {3 },
4876+ {3 },
4877+ {4 },
4878+ {4 },
4879+ {4 },
4880+ }
4881+ f := prepareCalcData (cellData )
4882+ formulaList := map [string ]string {
4883+ "=MODE(A1:A10)" : "3" ,
4884+ "=MODE(B1:B6)" : "2" ,
4885+ }
4886+ for formula , expected := range formulaList {
4887+ assert .NoError (t , f .SetCellFormula ("Sheet1" , "C1" , formula ))
4888+ result , err := f .CalcCellValue ("Sheet1" , "C1" )
4889+ assert .NoError (t , err , formula )
4890+ assert .Equal (t , expected , result , formula )
4891+ }
4892+ calcError := map [string ]string {
4893+ "=MODE()" : "MODE requires at least 1 argument" ,
4894+ "=MODE(0,\" \" )" : "#VALUE!" ,
4895+ "=MODE(D1:D3)" : "#N/A" ,
4896+ }
4897+ for formula , expected := range calcError {
4898+ assert .NoError (t , f .SetCellFormula ("Sheet1" , "C1" , formula ))
4899+ result , err := f .CalcCellValue ("Sheet1" , "C1" )
4900+ assert .EqualError (t , err , expected , formula )
4901+ assert .Equal (t , "" , result , formula )
4902+ }
4903+ }
4904+
48684905func TestCalcSHEET (t * testing.T ) {
48694906 f := NewFile ()
48704907 f .NewSheet ("Sheet2" )
@@ -4914,12 +4951,18 @@ func TestCalcTTEST(t *testing.T) {
49144951 }
49154952 f := prepareCalcData (cellData )
49164953 formulaList := map [string ]string {
4917- "=TTEST(A1:A12,B1:B12,1,1)" : "0.44907068944428" ,
4918- "=TTEST(A1:A12,B1:B12,1,2)" : "0.436717306029283" ,
4919- "=TTEST(A1:A12,B1:B12,1,3)" : "0.436722015384755" ,
4920- "=TTEST(A1:A12,B1:B12,2,1)" : "0.898141378888559" ,
4921- "=TTEST(A1:A12,B1:B12,2,2)" : "0.873434612058567" ,
4922- "=TTEST(A1:A12,B1:B12,2,3)" : "0.873444030769511" ,
4954+ "=TTEST(A1:A12,B1:B12,1,1)" : "0.44907068944428" ,
4955+ "=TTEST(A1:A12,B1:B12,1,2)" : "0.436717306029283" ,
4956+ "=TTEST(A1:A12,B1:B12,1,3)" : "0.436722015384755" ,
4957+ "=TTEST(A1:A12,B1:B12,2,1)" : "0.898141378888559" ,
4958+ "=TTEST(A1:A12,B1:B12,2,2)" : "0.873434612058567" ,
4959+ "=TTEST(A1:A12,B1:B12,2,3)" : "0.873444030769511" ,
4960+ "=T.TEST(A1:A12,B1:B12,1,1)" : "0.44907068944428" ,
4961+ "=T.TEST(A1:A12,B1:B12,1,2)" : "0.436717306029283" ,
4962+ "=T.TEST(A1:A12,B1:B12,1,3)" : "0.436722015384755" ,
4963+ "=T.TEST(A1:A12,B1:B12,2,1)" : "0.898141378888559" ,
4964+ "=T.TEST(A1:A12,B1:B12,2,2)" : "0.873434612058567" ,
4965+ "=T.TEST(A1:A12,B1:B12,2,3)" : "0.873444030769511" ,
49234966 }
49244967 for formula , expected := range formulaList {
49254968 assert .NoError (t , f .SetCellFormula ("Sheet1" , "C1" , formula ))
@@ -4928,18 +4971,30 @@ func TestCalcTTEST(t *testing.T) {
49284971 assert .Equal (t , expected , result , formula )
49294972 }
49304973 calcError := map [string ]string {
4931- "=TTEST()" : "TTEST requires 4 arguments" ,
4932- "=TTEST(\" \" ,B1:B12,1,1)" : "#NUM!" ,
4933- "=TTEST(A1:A12,\" \" ,1,1)" : "#NUM!" ,
4934- "=TTEST(A1:A12,B1:B12,\" \" ,1)" : "strconv.ParseFloat: parsing \" \" : invalid syntax" ,
4935- "=TTEST(A1:A12,B1:B12,1,\" \" )" : "strconv.ParseFloat: parsing \" \" : invalid syntax" ,
4936- "=TTEST(A1:A12,B1:B12,0,1)" : "#NUM!" ,
4937- "=TTEST(A1:A12,B1:B12,1,0)" : "#NUM!" ,
4938- "=TTEST(A1:A2,B1:B1,1,1)" : "#N/A" ,
4939- "=TTEST(A13:A14,B13:B14,1,1)" : "#NUM!" ,
4940- "=TTEST(A12:A13,B12:B13,1,1)" : "#DIV/0!" ,
4941- "=TTEST(A13:A14,B13:B14,1,2)" : "#NUM!" ,
4942- "=TTEST(D1:D4,E1:E4,1,3)" : "#NUM!" ,
4974+ "=TTEST()" : "TTEST requires 4 arguments" ,
4975+ "=TTEST(\" \" ,B1:B12,1,1)" : "#NUM!" ,
4976+ "=TTEST(A1:A12,\" \" ,1,1)" : "#NUM!" ,
4977+ "=TTEST(A1:A12,B1:B12,\" \" ,1)" : "strconv.ParseFloat: parsing \" \" : invalid syntax" ,
4978+ "=TTEST(A1:A12,B1:B12,1,\" \" )" : "strconv.ParseFloat: parsing \" \" : invalid syntax" ,
4979+ "=TTEST(A1:A12,B1:B12,0,1)" : "#NUM!" ,
4980+ "=TTEST(A1:A12,B1:B12,1,0)" : "#NUM!" ,
4981+ "=TTEST(A1:A2,B1:B1,1,1)" : "#N/A" ,
4982+ "=TTEST(A13:A14,B13:B14,1,1)" : "#NUM!" ,
4983+ "=TTEST(A12:A13,B12:B13,1,1)" : "#DIV/0!" ,
4984+ "=TTEST(A13:A14,B13:B14,1,2)" : "#NUM!" ,
4985+ "=TTEST(D1:D4,E1:E4,1,3)" : "#NUM!" ,
4986+ "=T.TEST()" : "T.TEST requires 4 arguments" ,
4987+ "=T.TEST(\" \" ,B1:B12,1,1)" : "#NUM!" ,
4988+ "=T.TEST(A1:A12,\" \" ,1,1)" : "#NUM!" ,
4989+ "=T.TEST(A1:A12,B1:B12,\" \" ,1)" : "strconv.ParseFloat: parsing \" \" : invalid syntax" ,
4990+ "=T.TEST(A1:A12,B1:B12,1,\" \" )" : "strconv.ParseFloat: parsing \" \" : invalid syntax" ,
4991+ "=T.TEST(A1:A12,B1:B12,0,1)" : "#NUM!" ,
4992+ "=T.TEST(A1:A12,B1:B12,1,0)" : "#NUM!" ,
4993+ "=T.TEST(A1:A2,B1:B1,1,1)" : "#N/A" ,
4994+ "=T.TEST(A13:A14,B13:B14,1,1)" : "#NUM!" ,
4995+ "=T.TEST(A12:A13,B12:B13,1,1)" : "#DIV/0!" ,
4996+ "=T.TEST(A13:A14,B13:B14,1,2)" : "#NUM!" ,
4997+ "=T.TEST(D1:D4,E1:E4,1,3)" : "#NUM!" ,
49434998 }
49444999 for formula , expected := range calcError {
49455000 assert .NoError (t , f .SetCellFormula ("Sheet1" , "C1" , formula ))
0 commit comments