MCPcopy
hub / github.com/qax-os/excelize / TestCalcArrayFormula

Function TestCalcArrayFormula

calc_test.go:4960–5021  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

4958}
4959
4960func TestCalcArrayFormula(t *testing.T) {
4961 t.Run("matrix_multiplication", func(t *testing.T) {
4962 f := NewFile()
4963 assert.NoError(t, f.SetSheetRow("Sheet1", "A1", &[]int{1, 2}))
4964 assert.NoError(t, f.SetSheetRow("Sheet1", "A2", &[]int{3, 4}))
4965 formulaType, ref := STCellFormulaTypeArray, "C1:C2"
4966 assert.NoError(t, f.SetCellFormula("Sheet1", "C1", "A1:A2*B1:B2",
4967 FormulaOpts{Ref: &ref, Type: &formulaType}))
4968 result, err := f.CalcCellValue("Sheet1", "C1")
4969 assert.NoError(t, err)
4970 assert.Equal(t, "2", result)
4971 result, err = f.CalcCellValue("Sheet1", "C2")
4972 assert.NoError(t, err)
4973 assert.Equal(t, "12", result)
4974 })
4975 t.Run("matrix_multiplication_with_defined_name", func(t *testing.T) {
4976 f := NewFile()
4977 assert.NoError(t, f.SetSheetRow("Sheet1", "A1", &[]int{1, 2}))
4978 assert.NoError(t, f.SetSheetRow("Sheet1", "A2", &[]int{3, 4}))
4979 assert.NoError(t, f.SetDefinedName(&DefinedName{
4980 Name: "matrix",
4981 RefersTo: "Sheet1!$A$1:$A$2",
4982 }))
4983 formulaType, ref := STCellFormulaTypeArray, "C1:C2"
4984 assert.NoError(t, f.SetCellFormula("Sheet1", "C1", "matrix*B1:B2+\"1\"",
4985 FormulaOpts{Ref: &ref, Type: &formulaType}))
4986 result, err := f.CalcCellValue("Sheet1", "C1")
4987 assert.NoError(t, err)
4988 assert.Equal(t, "3", result)
4989 result, err = f.CalcCellValue("Sheet1", "C2")
4990 assert.NoError(t, err)
4991 assert.Equal(t, "13", result)
4992 })
4993 t.Run("columm_multiplication", func(t *testing.T) {
4994 f := NewFile()
4995 assert.NoError(t, f.SetSheetRow("Sheet1", "A1", &[]int{1, 2}))
4996 assert.NoError(t, f.SetSheetRow("Sheet1", "A2", &[]int{3, 4}))
4997 formulaType, ref := STCellFormulaTypeArray, "C1:C1048576"
4998 assert.NoError(t, f.SetCellFormula("Sheet1", "C1", "A:A*B:B",
4999 FormulaOpts{Ref: &ref, Type: &formulaType}))
5000 result, err := f.CalcCellValue("Sheet1", "C1")
5001 assert.NoError(t, err)
5002 assert.Equal(t, "2", result)
5003 result, err = f.CalcCellValue("Sheet1", "C2")
5004 assert.NoError(t, err)
5005 assert.Equal(t, "12", result)
5006 })
5007 t.Run("row_multiplication", func(t *testing.T) {
5008 f := NewFile()
5009 assert.NoError(t, f.SetSheetRow("Sheet1", "A1", &[]int{1, 2}))
5010 assert.NoError(t, f.SetSheetRow("Sheet1", "A2", &[]int{3, 4}))
5011 formulaType, ref := STCellFormulaTypeArray, "A3:XFD3"
5012 assert.NoError(t, f.SetCellFormula("Sheet1", "A3", "1:1*2:2",
5013 FormulaOpts{Ref: &ref, Type: &formulaType}))
5014 result, err := f.CalcCellValue("Sheet1", "A3")
5015 assert.NoError(t, err)
5016 assert.Equal(t, "3", result)
5017 result, err = f.CalcCellValue("Sheet1", "B3")

Callers

nothing calls this directly

Calls 5

SetSheetRowMethod · 0.95
SetCellFormulaMethod · 0.95
CalcCellValueMethod · 0.95
SetDefinedNameMethod · 0.95
NewFileFunction · 0.85

Tested by

no test coverage detected