package com.tek271.funj;
import org.junit.Test;
import static com.tek271.funj.FunctionDescriptor.dynamicFunction;
import static com.tek271.funj.FunctionDescriptor.staticFunction;
import static org.junit.Assert.assertEquals;
public class FunctionDescriptorTest {
@Test(expected = IllegalArgumentException.class)
public void dynamicFunctionFailsIfContextIsNull() {
dynamicFunction(null, "f");
}
@Test
public void dynamicFunctionCanBeCalled() {
FunctionDescriptor func = dynamicFunction(this, "dynaFunc");
Integer c = func.call(1, 2);
assertEquals(3, c.intValue());
}
@Test(expected = IllegalArgumentException.class)
public void staticFunctionFailsIfPathIsNull() {
staticFunction((String) null, "f");
}
@Test(expected = IllegalArgumentException.class)
public void staticFunctionFailsIfPathIsEmpty() {
staticFunction("", "f");
}
@Test(expected = IllegalArgumentException.class)
public void staticFunctionFailsIfClassIsNull() {
staticFunction((Class) null, "f");
}
@Test
public void staticFunctionCanBeCalled() {
FunctionDescriptor func = staticFunction(this.getClass(), "staticFunc");
assertEquals("ab", func.call("a", "b"));
}
@Test
public void staticFunctionWithFillNameCanBeCalled() {
String fullName = this.getClass().getName() + ".staticFunc";
FunctionDescriptor func = staticFunction(fullName);
assertEquals("ab", func.call("a", "b"));
}
@Test
public void toStringWithStaticFunction() {
FunctionDescriptor func = staticFunction(this.getClass(), "staticFunc");
assertEquals("static com.tek271.funj.FunctionDescriptorTest.staticFunc", func.toString());
}
@Test
public void toStringWithDynamicFunction() {
FunctionDescriptor func = dynamicFunction(this, "dynaFunc");
assertEquals("com.tek271.funj.FunctionDescriptorTest.dynaFunc", func.toString());
}
@SuppressWarnings("UnusedDeclaration")
public int dynaFunc(int a, int b) {
return a+b;
}
@SuppressWarnings("UnusedDeclaration")
public static String staticFunc(String a, String b) {
return a + b;
}
}