package com.linkedin.parseq.lambda; import java.util.Optional; import java.util.concurrent.Callable; import java.util.function.BiConsumer; import java.util.function.BiFunction; import java.util.function.Consumer; import java.util.function.Function; import java.util.regex.Matcher; import java.util.regex.Pattern; import static org.testng.Assert.assertTrue; class BaseTest { static String staticFunction(String s) { return s; } static String staticCallable() { return ""; } static void staticConsumer(String s) { } String function(String s) { return s; } String callable() { return ""; } void consumer(String s) { } static BaseTest staticField = new TestMethodInv(); BaseTest noParamMethod() { return new BaseTest(); } static BaseTest noParamStaticMethod() { return staticField; } BaseTest paramMethod(long x, String y) { return this; } static BaseTest paramStaticMethod(long x, String y) { return staticField; } String functionTwo(String s1, String s2) { return s1 + s2; } void consumerTwo(String s1, String s2) { } ASMBasedTaskDescriptor _asmBasedTaskDescriptor = new ASMBasedTaskDescriptor(); Optional<String> getDescriptionForFunction(Function<String, String> f) { return _asmBasedTaskDescriptor.getLambdaClassDescription(f.getClass().getName()); } Optional<String> getDescriptionForBiFunction(BiFunction<String, String, String> f) { return _asmBasedTaskDescriptor.getLambdaClassDescription(f.getClass().getName()); } Optional<String> getDescriptionForCallable(Callable<String> c) { return _asmBasedTaskDescriptor.getLambdaClassDescription(c.getClass().getName()); } Optional<String> getDescriptionForCallableInteger(Callable<Integer> c) { return _asmBasedTaskDescriptor.getLambdaClassDescription(c.getClass().getName()); } Optional<String> getDescriptionForConsumer(Consumer<String> c) { return _asmBasedTaskDescriptor.getLambdaClassDescription(c.getClass().getName()); } Optional<String> getDescriptionForBiConsumer(BiConsumer<String, String> c) { return _asmBasedTaskDescriptor.getLambdaClassDescription(c.getClass().getName()); } void assertNameMatch(String inferredFunction, String callerMethodName, String callerClassName, String lambdaClassDescription) { if (inferredFunction.isEmpty()) { Pattern p = Pattern.compile(callerMethodName + "\\(" + callerClassName + ":\\d+\\)"); Matcher m = p.matcher(lambdaClassDescription); assertTrue(m.matches()); } else { Pattern p = Pattern.compile(Pattern.quote(inferredFunction) + " " + callerMethodName + "\\(" + callerClassName+ ":\\d+\\)"); Matcher m = p.matcher(lambdaClassDescription); assertTrue(m.matches()); } } void assertNameMatch(String inferredFunction, String callerMethodName, String callerClassName, int lineNumber, String lambdaClassDescription) { if (inferredFunction.isEmpty()) { assertTrue(lambdaClassDescription.equalsIgnoreCase(callerMethodName + "(" + callerClassName + ":" + lineNumber + ")")); } else { assertTrue(lambdaClassDescription.equals(inferredFunction + " " + callerMethodName + "(" + callerClassName+ ":" + lineNumber + ")")); } } }