reallocf commented on a change in pull request #5326:
URL: https://github.com/apache/incubator-pinot/pull/5326#discussion_r419032029



##########
File path: 
pinot-core/src/test/java/org/apache/pinot/core/data/function/DefaultFunctionEvaluatorTest.java
##########
@@ -34,69 +35,72 @@
   @Test
   public void testExpressionWithColumn()
       throws Exception {
-    Method method = MyFunc.class.getDeclaredMethod("reverseString", 
String.class);
-    FunctionRegistry.registerStaticFunction(method);
-    FunctionInfo functionInfo = FunctionRegistry.resolve("reverseString", new 
Class<?>[]{Object.class});
+    MyFunc myFunc = new MyFunc();
+    FunctionRegistry functionRegistry = new FunctionRegistry(
+        
Collections.singletonList(myFunc.getClass().getDeclaredMethod("reverseString", 
String.class)));
+    FunctionInfo functionInfo = functionRegistry.resolve("reverseString", new 
Class<?>[]{Object.class});
     System.out.println(functionInfo);
     String expression = "reverseString(testColumn)";
 
-    DefaultFunctionEvaluator evaluator = new 
DefaultFunctionEvaluator(expression);
+    DefaultFunctionEvaluator evaluator = new 
DefaultFunctionEvaluator(expression, functionRegistry);
     Assert.assertEquals(evaluator.getArguments(), 
Lists.newArrayList("testColumn"));
     GenericRow row = new GenericRow();
     for (int i = 0; i < 5; i++) {
       String value = "testValue" + i;
       row.putField("testColumn", value);
       Object result = evaluator.evaluate(row);
-      Assert.assertEquals(result, new 
StringBuilder(value).reverse().toString());
+      Assert.assertEquals(result, myFunc.reverseString(value));
     }
   }
 
   @Test
   public void testExpressionWithConstant()
       throws Exception {
-    FunctionRegistry
-        
.registerStaticFunction(MyFunc.class.getDeclaredMethod("daysSinceEpoch", 
String.class, String.class));
+    MyFunc myFunc = new MyFunc();
+    FunctionRegistry functionRegistry = new FunctionRegistry(
+        
Collections.singletonList(myFunc.getClass().getDeclaredMethod("daysSinceEpoch", 
String.class, String.class)));
     String input = "1980-01-01";
     String format = "yyyy-MM-dd";
     String expression = String.format("daysSinceEpoch('%s', '%s')", input, 
format);
-    DefaultFunctionEvaluator evaluator = new 
DefaultFunctionEvaluator(expression);
+    DefaultFunctionEvaluator evaluator = new 
DefaultFunctionEvaluator(expression, functionRegistry);
     Assert.assertTrue(evaluator.getArguments().isEmpty());
     GenericRow row = new GenericRow();
     Object result = evaluator.evaluate(row);
-    Assert.assertEquals(result, MyFunc.daysSinceEpoch(input, format));
+    Assert.assertEquals(result, myFunc.daysSinceEpoch(input, format));
   }
 
   @Test
   public void testMultiFunctionExpression()
       throws Exception {
-    
FunctionRegistry.registerStaticFunction(MyFunc.class.getDeclaredMethod("reverseString",
 String.class));
-    FunctionRegistry
-        
.registerStaticFunction(MyFunc.class.getDeclaredMethod("daysSinceEpoch", 
String.class, String.class));
+    MyFunc myFunc = new MyFunc();
+    FunctionRegistry functionRegistry = new FunctionRegistry(Arrays
+        .asList(myFunc.getClass().getDeclaredMethod("reverseString", 
String.class),
+            myFunc.getClass().getDeclaredMethod("daysSinceEpoch", 
String.class, String.class)));
     String input = "1980-01-01";
-    String reversedInput = MyFunc.reverseString(input);
+    String reversedInput = myFunc.reverseString(input);
     String format = "yyyy-MM-dd";
     String expression = String.format("daysSinceEpoch(reverseString('%s'), 
'%s')", reversedInput, format);
-    DefaultFunctionEvaluator evaluator = new 
DefaultFunctionEvaluator(expression);
+    DefaultFunctionEvaluator evaluator = new 
DefaultFunctionEvaluator(expression, functionRegistry);
     Assert.assertTrue(evaluator.getArguments().isEmpty());
     GenericRow row = new GenericRow();
     Object result = evaluator.evaluate(row);
-    Assert.assertEquals(result, MyFunc.daysSinceEpoch(input, format));
+    Assert.assertEquals(result, myFunc.daysSinceEpoch(input, format));
   }
+}
 
-  private static class MyFunc {
-    static String reverseString(String input) {
-      return new StringBuilder(input).reverse().toString();
-    }
+class MyFunc {

Review comment:
       Had to pull this out into its own function (as opposed to a private 
function) in order to allow for the `clazz.newInstance()` call on line 56 of 
FunctionInvoker. Should I move this to a separate file?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to