(t *testing.T)
| 4958 | } |
| 4959 | |
| 4960 | func 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") |
nothing calls this directly
no test coverage detected