diff options
author | xuri <xuri.me@gmail.com> | 2022-03-02 00:05:37 +0800 |
---|---|---|
committer | xuri <xuri.me@gmail.com> | 2022-03-02 00:05:37 +0800 |
commit | 3971e8a48b25614dfe685c4766c1bb66cd22fe18 (patch) | |
tree | 0d9577c8a79d4eb4b801a9b343199461d1f198dd /calc_test.go | |
parent | 1efa2838875efe06a9a4b7b1d582f70205de3aa5 (diff) |
ref #65, new formula functions: COVAR, COVARIANCE.P, EXPON.DIST and EXPONDIST
Diffstat (limited to 'calc_test.go')
-rw-r--r-- | calc_test.go | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/calc_test.go b/calc_test.go index d01f31b..a804b58 100644 --- a/calc_test.go +++ b/calc_test.go @@ -834,6 +834,14 @@ func TestCalcCellValue(t *testing.T) { "=KURT(F1:F9)": "-1.03350350255137", "=KURT(F1,F2:F9)": "-1.03350350255137", "=KURT(INT(1),MUNIT(2))": "-3.33333333333334", + // EXPON.DIST + "=EXPON.DIST(0.5,1,TRUE)": "0.393469340287367", + "=EXPON.DIST(0.5,1,FALSE)": "0.606530659712633", + "=EXPON.DIST(2,1,TRUE)": "0.864664716763387", + // EXPONDIST + "=EXPONDIST(0.5,1,TRUE)": "0.393469340287367", + "=EXPONDIST(0.5,1,FALSE)": "0.606530659712633", + "=EXPONDIST(2,1,TRUE)": "0.864664716763387", // NORM.DIST "=NORM.DIST(0.8,1,0.3,TRUE)": "0.252492537546923", "=NORM.DIST(50,40,20,FALSE)": "0.017603266338215", @@ -2315,6 +2323,20 @@ func TestCalcCellValue(t *testing.T) { // KURT "=KURT()": "KURT requires at least 1 argument", "=KURT(F1,INT(1))": "#DIV/0!", + // EXPON.DIST + "=EXPON.DIST()": "EXPON.DIST requires 3 arguments", + "=EXPON.DIST(\"\",1,TRUE)": "strconv.ParseFloat: parsing \"\": invalid syntax", + "=EXPON.DIST(0,\"\",TRUE)": "strconv.ParseFloat: parsing \"\": invalid syntax", + "=EXPON.DIST(0,1,\"\")": "strconv.ParseBool: parsing \"\": invalid syntax", + "=EXPON.DIST(-1,1,TRUE)": "#NUM!", + "=EXPON.DIST(1,0,TRUE)": "#NUM!", + // EXPONDIST + "=EXPONDIST()": "EXPONDIST requires 3 arguments", + "=EXPONDIST(\"\",1,TRUE)": "strconv.ParseFloat: parsing \"\": invalid syntax", + "=EXPONDIST(0,\"\",TRUE)": "strconv.ParseFloat: parsing \"\": invalid syntax", + "=EXPONDIST(0,1,\"\")": "strconv.ParseBool: parsing \"\": invalid syntax", + "=EXPONDIST(-1,1,TRUE)": "#NUM!", + "=EXPONDIST(1,0,TRUE)": "#NUM!", // NORM.DIST "=NORM.DIST()": "NORM.DIST requires 4 arguments", // NORMDIST @@ -3707,6 +3729,45 @@ func TestCalcAVERAGEIF(t *testing.T) { } } +func TestCalcCOVAR(t *testing.T) { + cellData := [][]interface{}{ + {"array1", "array2"}, + {2, 22.9}, + {7, 33.49}, + {8, 34.5}, + {3, 27.61}, + {4, 19.5}, + {1, 10.11}, + {6, 37.9}, + {5, 31.08}, + } + f := prepareCalcData(cellData) + formulaList := map[string]string{ + "=COVAR(A1:A9,B1:B9)": "16.633125", + "=COVAR(A2:A9,B2:B9)": "16.633125", + "=COVARIANCE.P(A1:A9,B1:B9)": "16.633125", + "=COVARIANCE.P(A2:A9,B2:B9)": "16.633125", + } + for formula, expected := range formulaList { + assert.NoError(t, f.SetCellFormula("Sheet1", "C1", formula)) + result, err := f.CalcCellValue("Sheet1", "C1") + assert.NoError(t, err, formula) + assert.Equal(t, expected, result, formula) + } + calcError := map[string]string{ + "=COVAR()": "COVAR requires 2 arguments", + "=COVAR(A2:A9,B3:B3)": "#N/A", + "=COVARIANCE.P()": "COVARIANCE.P requires 2 arguments", + "=COVARIANCE.P(A2:A9,B3:B3)": "#N/A", + } + for formula, expected := range calcError { + assert.NoError(t, f.SetCellFormula("Sheet1", "C1", formula)) + result, err := f.CalcCellValue("Sheet1", "C1") + assert.EqualError(t, err, expected, formula) + assert.Equal(t, "", result, formula) + } +} + func TestCalcFORMULATEXT(t *testing.T) { f, formulaText := NewFile(), "=SUM(B1:C1)" assert.NoError(t, f.SetCellFormula("Sheet1", "A1", formulaText)) |