@@ -1843,6 +1843,35 @@ func TestCalcCellValue(t *testing.T) {
1843
1843
"=TEXT(567.9,\" $#,##0.00\" )" : "$567.90" ,
1844
1844
"=TEXT(-5,\" + $#,##0.00;- $#,##0.00;$0.00\" )" : "- $5.00" ,
1845
1845
"=TEXT(5,\" + $#,##0.00;- $#,##0.00;$0.00\" )" : "+ $5.00" ,
1846
+ // TEXTAFTER
1847
+ "=TEXTAFTER(\" Red riding hood's, red hood\" ,\" hood\" )" : "'s, red hood" ,
1848
+ "=TEXTAFTER(\" Red riding hood's, red hood\" ,\" HOOD\" ,1,1)" : "'s, red hood" ,
1849
+ "=TEXTAFTER(\" Red riding hood's, red hood\" ,\" basket\" ,1,0,0,\" x\" )" : "x" ,
1850
+ "=TEXTAFTER(\" Red riding hood's, red hood\" ,\" basket\" ,1,0,1,\" x\" )" : "" ,
1851
+ "=TEXTAFTER(\" Red riding hood's, red hood\" ,\" hood\" ,-1)" : "" ,
1852
+ "=TEXTAFTER(\" Jones,Bob\" ,\" ,\" )" : "Bob" ,
1853
+ "=TEXTAFTER(\" 12 ft x 20 ft\" ,\" x \" )" : "20 ft" ,
1854
+ "=TEXTAFTER(\" ABX-112-Red-Y\" ,\" -\" ,1)" : "112-Red-Y" ,
1855
+ "=TEXTAFTER(\" ABX-112-Red-Y\" ,\" -\" ,2)" : "Red-Y" ,
1856
+ "=TEXTAFTER(\" ABX-112-Red-Y\" ,\" -\" ,-1)" : "Y" ,
1857
+ "=TEXTAFTER(\" ABX-112-Red-Y\" ,\" -\" ,-2)" : "Red-Y" ,
1858
+ "=TEXTAFTER(\" ABX-112-Red-Y\" ,\" -\" ,-3)" : "112-Red-Y" ,
1859
+ "=TEXTAFTER(\" ABX-123-Red-XYZ\" ,\" -\" ,-4,0,1)" : "ABX-123-Red-XYZ" ,
1860
+ "=TEXTAFTER(\" ABX-123-Red-XYZ\" ,\" A\" )" : "BX-123-Red-XYZ" ,
1861
+ // TEXTBEFORE
1862
+ "=TEXTBEFORE(\" Red riding hood's, red hood\" ,\" hood\" )" : "Red riding " ,
1863
+ "=TEXTBEFORE(\" Red riding hood's, red hood\" ,\" HOOD\" ,1,1)" : "Red riding " ,
1864
+ "=TEXTBEFORE(\" Red riding hood's, red hood\" ,\" basket\" ,1,0,0,\" x\" )" : "x" ,
1865
+ "=TEXTBEFORE(\" Red riding hood's, red hood\" ,\" basket\" ,1,0,1,\" x\" )" : "Red riding hood's, red hood" ,
1866
+ "=TEXTBEFORE(\" Red riding hood's, red hood\" ,\" hood\" ,-1)" : "Red riding hood's, red " ,
1867
+ "=TEXTBEFORE(\" Jones,Bob\" ,\" ,\" )" : "Jones" ,
1868
+ "=TEXTBEFORE(\" 12 ft x 20 ft\" ,\" x \" )" : "12 ft" ,
1869
+ "=TEXTBEFORE(\" ABX-112-Red-Y\" ,\" -\" ,1)" : "ABX" ,
1870
+ "=TEXTBEFORE(\" ABX-112-Red-Y\" ,\" -\" ,2)" : "ABX-112" ,
1871
+ "=TEXTBEFORE(\" ABX-112-Red-Y\" ,\" -\" ,-1)" : "ABX-112-Red" ,
1872
+ "=TEXTBEFORE(\" ABX-112-Red-Y\" ,\" -\" ,-2)" : "ABX-112" ,
1873
+ "=TEXTBEFORE(\" ABX-123-Red-XYZ\" ,\" -\" ,4,0,1)" : "ABX-123-Red-XYZ" ,
1874
+ "=TEXTBEFORE(\" ABX-112-Red-Y\" ,\" A\" )" : "" ,
1846
1875
// TEXTJOIN
1847
1876
"=TEXTJOIN(\" -\" ,TRUE,1,2,3,4)" : "1-2-3-4" ,
1848
1877
"=TEXTJOIN(A4,TRUE,A1:B2)" : "1040205" ,
@@ -3879,6 +3908,24 @@ func TestCalcCellValue(t *testing.T) {
3879
3908
"=TEXT()" : {"#VALUE!" , "TEXT requires 2 arguments" },
3880
3909
"=TEXT(NA(),\" \" )" : {"#N/A" , "#N/A" },
3881
3910
"=TEXT(0,NA())" : {"#N/A" , "#N/A" },
3911
+ // TEXTAFTER
3912
+ "=TEXTAFTER()" : {"#VALUE!" , "TEXTAFTER requires at least 2 arguments" },
3913
+ "=TEXTAFTER(\" Red riding hood's, red hood\" ,\" hood\" ,1,0,0,\" \" ,0)" : {"#VALUE!" , "TEXTAFTER accepts at most 6 arguments" },
3914
+ "=TEXTAFTER(\" Red riding hood's, red hood\" ,\" hood\" ,\" \" )" : {"#VALUE!" , "strconv.ParseFloat: parsing \" \" : invalid syntax" },
3915
+ "=TEXTAFTER(\" Red riding hood's, red hood\" ,\" hood\" ,1,\" \" )" : {"#VALUE!" , "strconv.ParseBool: parsing \" \" : invalid syntax" },
3916
+ "=TEXTAFTER(\" Red riding hood's, red hood\" ,\" hood\" ,1,0,\" \" )" : {"#VALUE!" , "strconv.ParseBool: parsing \" \" : invalid syntax" },
3917
+ "=TEXTAFTER(\" \" ,\" hood\" )" : {"#N/A" , "#N/A" },
3918
+ "=TEXTAFTER(\" Red riding hood's, red hood\" ,\" hood\" ,0)" : {"#VALUE!" , "#VALUE!" },
3919
+ "=TEXTAFTER(\" Red riding hood's, red hood\" ,\" hood\" ,28)" : {"#VALUE!" , "#VALUE!" },
3920
+ // TEXTBEFORE
3921
+ "=TEXTBEFORE()" : {"#VALUE!" , "TEXTBEFORE requires at least 2 arguments" },
3922
+ "=TEXTBEFORE(\" Red riding hood's, red hood\" ,\" hood\" ,1,0,0,\" \" ,0)" : {"#VALUE!" , "TEXTBEFORE accepts at most 6 arguments" },
3923
+ "=TEXTBEFORE(\" Red riding hood's, red hood\" ,\" hood\" ,\" \" )" : {"#VALUE!" , "strconv.ParseFloat: parsing \" \" : invalid syntax" },
3924
+ "=TEXTBEFORE(\" Red riding hood's, red hood\" ,\" hood\" ,1,\" \" )" : {"#VALUE!" , "strconv.ParseBool: parsing \" \" : invalid syntax" },
3925
+ "=TEXTBEFORE(\" Red riding hood's, red hood\" ,\" hood\" ,1,0,\" \" )" : {"#VALUE!" , "strconv.ParseBool: parsing \" \" : invalid syntax" },
3926
+ "=TEXTBEFORE(\" \" ,\" hood\" )" : {"#N/A" , "#N/A" },
3927
+ "=TEXTBEFORE(\" Red riding hood's, red hood\" ,\" hood\" ,0)" : {"#VALUE!" , "#VALUE!" },
3928
+ "=TEXTBEFORE(\" Red riding hood's, red hood\" ,\" hood\" ,28)" : {"#VALUE!" , "#VALUE!" },
3882
3929
// TEXTJOIN
3883
3930
"=TEXTJOIN()" : {"#VALUE!" , "TEXTJOIN requires at least 3 arguments" },
3884
3931
"=TEXTJOIN(\" \" ,\" \" ,1)" : {"#VALUE!" , "#VALUE!" },
@@ -4739,9 +4786,27 @@ func TestCalcCompareFormulaArg(t *testing.T) {
4739
4786
rhs = newListFormulaArg ([]formulaArg {newBoolFormulaArg (true )})
4740
4787
assert .Equal (t , compareFormulaArg (lhs , rhs , newNumberFormulaArg (matchModeMaxLess ), false ), criteriaEq )
4741
4788
4789
+ lhs = newListFormulaArg ([]formulaArg {newNumberFormulaArg (1 )})
4790
+ rhs = newListFormulaArg ([]formulaArg {newNumberFormulaArg (0 )})
4791
+ assert .Equal (t , compareFormulaArg (lhs , rhs , newNumberFormulaArg (matchModeMaxLess ), false ), criteriaG )
4792
+
4742
4793
assert .Equal (t , compareFormulaArg (formulaArg {Type : ArgUnknown }, formulaArg {Type : ArgUnknown }, newNumberFormulaArg (matchModeMaxLess ), false ), criteriaErr )
4743
4794
}
4744
4795
4796
+ func TestCalcCompareFormulaArgMatrix (t * testing.T ) {
4797
+ lhs := newMatrixFormulaArg ([][]formulaArg {{newEmptyFormulaArg ()}})
4798
+ rhs := newMatrixFormulaArg ([][]formulaArg {{newEmptyFormulaArg (), newEmptyFormulaArg ()}})
4799
+ assert .Equal (t , compareFormulaArgMatrix (lhs , rhs , newNumberFormulaArg (matchModeMaxLess ), false ), criteriaL )
4800
+
4801
+ lhs = newMatrixFormulaArg ([][]formulaArg {{newEmptyFormulaArg (), newEmptyFormulaArg ()}})
4802
+ rhs = newMatrixFormulaArg ([][]formulaArg {{newEmptyFormulaArg ()}})
4803
+ assert .Equal (t , compareFormulaArgMatrix (lhs , rhs , newNumberFormulaArg (matchModeMaxLess ), false ), criteriaG )
4804
+
4805
+ lhs = newMatrixFormulaArg ([][]formulaArg {{newNumberFormulaArg (1 )}})
4806
+ rhs = newMatrixFormulaArg ([][]formulaArg {{newNumberFormulaArg (0 )}})
4807
+ assert .Equal (t , compareFormulaArgMatrix (lhs , rhs , newNumberFormulaArg (matchModeMaxLess ), false ), criteriaG )
4808
+ }
4809
+
4745
4810
func TestCalcTRANSPOSE (t * testing.T ) {
4746
4811
cellData := [][]interface {}{
4747
4812
{"a" , "d" },
0 commit comments