@@ -4865,6 +4865,43 @@ func TestCalcISFORMULA(t *testing.T) {
4865
4865
}
4866
4866
}
4867
4867
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
+
4868
4905
func TestCalcSHEET (t * testing.T ) {
4869
4906
f := NewFile ()
4870
4907
f .NewSheet ("Sheet2" )
@@ -4914,12 +4951,18 @@ func TestCalcTTEST(t *testing.T) {
4914
4951
}
4915
4952
f := prepareCalcData (cellData )
4916
4953
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" ,
4923
4966
}
4924
4967
for formula , expected := range formulaList {
4925
4968
assert .NoError (t , f .SetCellFormula ("Sheet1" , "C1" , formula ))
@@ -4928,18 +4971,30 @@ func TestCalcTTEST(t *testing.T) {
4928
4971
assert .Equal (t , expected , result , formula )
4929
4972
}
4930
4973
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!" ,
4943
4998
}
4944
4999
for formula , expected := range calcError {
4945
5000
assert .NoError (t , f .SetCellFormula ("Sheet1" , "C1" , formula ))
0 commit comments