@@ -1871,13 +1871,6 @@ protected override bool TryGetField(FormulaType fieldType, string fieldName, out
1871
1871
"getAge({Name: \" Bob\" , Age: 21})" ,
1872
1872
true ,
1873
1873
21.0 ) ]
1874
- [ InlineData (
1875
- @"Employee := Type({Name: Text, Age: Number, Title: Text}); Employees := Type([Employee]); EmployeeNames := Type([{Name: Text}]);
1876
- getNames(e: Employees):EmployeeNames = ShowColumns(e, Name);
1877
- getNamesCount(e: EmployeeNames):Number = CountRows(getNames(e));" ,
1878
- "getNamesCount([{Name: \" Jim\" , Age:25}, {Name: \" Tony\" , Age:42}])" ,
1879
- true ,
1880
- 2.0 ) ]
1881
1874
[ InlineData (
1882
1875
@"Employee := Type({Name: Text, Age: Number, Title: Text});
1883
1876
getAge(e: Employee): Number = e.Age;
@@ -1946,14 +1939,55 @@ protected override bool TryGetField(FormulaType fieldType, string fieldName, out
1946
1939
true ,
1947
1940
1.0 ) ]
1948
1941
1949
- // Aggregate types with more than expected fields are not allowed in UDF
1942
+ // Aggregate types with more than expected fields are not allowed in UDF args and return types
1943
+ // Records
1950
1944
[ InlineData (
1951
1945
"f():T = {x: 5, y: 5}; T := Type({x: Number});" ,
1952
- "f().x" ,
1946
+ "" ,
1947
+ false ) ]
1948
+ [ InlineData (
1949
+ "f():T = {x: 5, y: 5}; T1 := Type([{x: Number}]); T2 := Type(RecordOf(T1));" ,
1950
+ "" ,
1951
+ false ) ]
1952
+ [ InlineData (
1953
+ "g(x:T):Number = x.n; T := Type({n: Number});" ,
1954
+ "g({x: 5, y: 5})" ,
1955
+ false ) ]
1956
+
1957
+ // Nested Records
1958
+ [ InlineData (
1959
+ "f():T = {a: 5, b: {c: {d: 5, e:42}}}; T := Type({a: Number, b: {c: {d: Number}}});" ,
1960
+ "" ,
1961
+ false ) ]
1962
+ [ InlineData (
1963
+ "g(x:T):Number = x.b.c.d; T := Type({a: Number, b: {c: {d: Number}}});" ,
1964
+ "g({a: 5, b: {c: {d: 5, e:42}}})" ,
1965
+ false ) ]
1966
+
1967
+ // Tables
1968
+ [ InlineData (
1969
+ "f():T = [{x: 5, y: 5}]; T := Type([{x: Number}]);" ,
1970
+ "" ,
1953
1971
false ) ]
1954
1972
[ InlineData (
1955
1973
"People := Type([{Name: Text, Age: Number}]); countMinors(p: People): Number = CountRows(Filter(p, Age < 18));" ,
1956
1974
"countMinors([{Name: \" Bob\" , Age: 21, Title: \" Engineer\" }, {Name: \" Alice\" , Age: 25, Title: \" Manager\" }])" ,
1975
+ false ) ]
1976
+ [ InlineData (
1977
+ @"Employee := Type({Name: Text, Age: Number, Title: Text}); Employees := Type([Employee]); EmployeeNames := Type([{Name: Text}]);
1978
+ getNames(e: Employees):EmployeeNames = ShowColumns(e, Name);
1979
+ getNamesCount(e: EmployeeNames):Number = CountRows(getNames(e));" ,
1980
+ "getNamesCount([{Name: \" Jim\" , Age:25}, {Name: \" Tony\" , Age:42}])" ,
1981
+ false ) ]
1982
+
1983
+ // Nested Tables
1984
+ [ InlineData (
1985
+ "f():T = {a: 5, b: [{c: {d: 5, e:42}}]}; T := Type([{a: Number, b: [{c: {d: Number}}]}]);" ,
1986
+ "" ,
1987
+ false ) ]
1988
+ [ InlineData (
1989
+ "g(x:T):Number = First(First(x).b).c.d; T := Type([{a: Number, b: [{c: {d: Number}}]}])" ,
1990
+ "g({a: 5, b: [{c: {d: 5, e:42}}]})" ,
1957
1991
false ) ]
1958
1992
public void UserDefinedTypeTest ( string userDefinitions , string evalExpression , bool isValid , double expectedResult = 0 )
1959
1993
{
0 commit comments