public void TestInvalidChainingArrow() { var func1 = new ArrowWorkerFunction( new ArrowUdfWrapper <Int32Array, StringArray, StringArray>( (numbers, strings) => (StringArray)ToArrowArray( Enumerable.Range(0, strings.Length) .Select(i => $"{strings.GetString(i)}:{numbers.Values[i]}") .ToArray())).Execute); var func2 = new ArrowWorkerFunction( new ArrowUdfWrapper <StringArray, StringArray>( (strings) => (StringArray)ToArrowArray( Enumerable.Range(0, strings.Length) .Select(i => $"outer1:{strings.GetString(i)}") .ToArray())).Execute); IArrowArray[] input = new[] { ToArrowArray(new[] { 100 }), ToArrowArray(new[] { "name" }) }; // The order does not align since workerFunction2 is executed first. ArrowWorkerFunction chainedFunc1 = ArrowWorkerFunction.Chain(func2, func1); Assert.ThrowsAny <Exception>(() => chainedFunc1.Func(input, new[] { 0, 1 })); }
public void TestArrowWorkerFunction() { var func = new ArrowWorkerFunction( new ArrowUdfWrapper <StringArray, StringArray>( (str) => str).Execute); string[] input = { "arg1" }; ArrowTestUtils.AssertEquals( input[0], func.Func(new[] { ToArrowArray(input) }, new[] { 0 })); }
public void TestChainingArrowWorkerFunction() { var func1 = new ArrowWorkerFunction( new ArrowUdfWrapper <Int32Array, StringArray, StringArray>( (numbers, strings) => (StringArray)ToArrowArray( Enumerable.Range(0, strings.Length) .Select(i => $"{strings.GetString(i)}:{numbers.Values[i]}") .ToArray())).Execute); var func2 = new ArrowWorkerFunction( new ArrowUdfWrapper <StringArray, StringArray>( (strings) => (StringArray)ToArrowArray( Enumerable.Range(0, strings.Length) .Select(i => $"outer1:{strings.GetString(i)}") .ToArray())).Execute); var func3 = new ArrowWorkerFunction( new ArrowUdfWrapper <StringArray, StringArray>( (strings) => (StringArray)ToArrowArray( Enumerable.Range(0, strings.Length) .Select(i => $"outer2:{strings.GetString(i)}") .ToArray())).Execute); var input = new IArrowArray[] { ToArrowArray(new[] { 100 }), ToArrowArray(new[] { "name" }) }; // Validate one-level chaining. ArrowWorkerFunction chainedFunc1 = ArrowWorkerFunction.Chain(func1, func2); AssertEquals( "outer1:name:100", chainedFunc1.Func(input, new[] { 0, 1 })); // Validate two-level chaining. ArrowWorkerFunction chainedFunc2 = ArrowWorkerFunction.Chain(chainedFunc1, func3); AssertEquals( "outer2:outer1:name:100", chainedFunc2.Func(input, new[] { 0, 1 })); }
public void TestArrowWorkerFunctionForBool() { var func = new ArrowWorkerFunction( new ArrowUdfWrapper <string, bool, bool>( (str, flag) => flag || str.Contains("true")).Execute); IArrowArray[] input = new[] { ToArrowArray(new[] { "arg1_true", "arg1_true", "arg1_false", "arg1_false" }), ToArrowArray(new[] { true, false, true, false }), }; var results = (BooleanArray)func.Func(0, input, new[] { 0, 1 }); Assert.Equal(4, results.Length); Assert.True(results.GetBoolean(0)); Assert.True(results.GetBoolean(1)); Assert.True(results.GetBoolean(2)); Assert.False(results.GetBoolean(3)); }
public void TestArrowWorkerFunctionForBool() { var func = new ArrowWorkerFunction( new ArrowUdfWrapper <StringArray, BooleanArray, BooleanArray>( (strings, flags) => (BooleanArray)ToArrowArray( Enumerable.Range(0, strings.Length) .Select(i => flags.GetBoolean(i) || strings.GetString(i).Contains("true")) .ToArray())).Execute); IArrowArray[] input = new[] { ToArrowArray(new[] { "arg1_true", "arg1_true", "arg1_false", "arg1_false" }), ToArrowArray(new[] { true, false, true, false }), }; var results = (BooleanArray)func.Func(input, new[] { 0, 1 }); Assert.Equal(4, results.Length); Assert.True(results.GetBoolean(0)); Assert.True(results.GetBoolean(1)); Assert.True(results.GetBoolean(2)); Assert.False(results.GetBoolean(3)); }