package com.googlecode.jsonrpc4j;
import org.junit.Test;
import java.util.Map;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
public class ReflectionUtilTest {
@Test
public void noParams() throws Exception {
assertEquals(0, ((Object[]) ReflectionUtil.parseArguments(JsonRpcTestService.class.getMethod("noParams"), null)).length);
Object[] arguments = new Object[0];
assertSame(arguments, ReflectionUtil.parseArguments(JsonRpcTestService.class.getMethod("noParams"), arguments));
}
@Test
public void noNamedParams() throws Exception {
Object[] arguments = {"1", 2};
assertSame(arguments, ReflectionUtil.parseArguments(JsonRpcTestService.class.getMethod("noNamedParams", String.class, int.class), arguments));
}
@Test(expected = RuntimeException.class)
public void someNamedParams() throws Exception {
ReflectionUtil.parseArguments(JsonRpcTestService.class.getMethod("someNamedParams", String.class, int.class), null);
}
@Test
public void allNamedParams() throws Exception {
Object[] arguments = {"1", 2};
@SuppressWarnings("unchecked")
Map<String, Object> namedParams = (Map<String, Object>) ReflectionUtil.parseArguments(JsonRpcTestService.class.getMethod("allNamedParams", String.class, int.class), arguments);
assertEquals(2, namedParams.size());
assertEquals("1", namedParams.get("one"));
assertEquals(2, namedParams.get("two"));
}
@Test
public void noNamedParamsPassParamsAuto() throws Exception {
Object[] arguments = {"1", 2};
assertSame(arguments, ReflectionUtil.parseArguments(JsonRpcTestService.class.getMethod("noNamedParamsPassParamsAuto", String.class, int.class), arguments));
}
@Test(expected = RuntimeException.class)
public void someNamedParamsPassParamsAuto() throws Exception {
ReflectionUtil.parseArguments(JsonRpcTestService.class.getMethod("someNamedParamsPassParamsAuto", String.class, int.class), null);
}
@Test
public void allNamedParamsPassParamsAuto() throws Exception {
Object[] arguments = {"1", 2};
@SuppressWarnings("unchecked")
Map<String, Object> namedParams = (Map<String, Object>) ReflectionUtil.parseArguments(JsonRpcTestService.class.getMethod("allNamedParamsPassParamsAuto", String.class, int.class), arguments);
assertEquals(2, namedParams.size());
assertEquals("1", namedParams.get("one"));
assertEquals(2, namedParams.get("two"));
}
@Test
public void noNamedParamsPassParamsArray() throws Exception {
Object[] arguments = {"1", 2};
assertSame(arguments, ReflectionUtil.parseArguments(JsonRpcTestService.class.getMethod("noNamedParamsPassParamsArray", String.class, int.class), arguments));
}
@Test(expected = RuntimeException.class)
public void someNamedParamsPassParamsArray() throws Exception {
ReflectionUtil.parseArguments(JsonRpcTestService.class.getMethod("someNamedParamsPassParamsArray", String.class, int.class), null);
}
@Test
public void allNamedParamsPassParamsArray() throws Exception {
Object[] arguments = {"1", 2};
Object[] params = (Object[]) ReflectionUtil.parseArguments(JsonRpcTestService.class.getMethod("allNamedParamsPassParamsArray", String.class, int.class), arguments);
assertEquals(2, params.length);
assertEquals("1", params[0]);
assertEquals(2, params[1]);
}
@Test(expected = RuntimeException.class)
public void noNamedParamsPassParamsObject() throws Exception {
Object[] arguments = {"1", 2};
ReflectionUtil.parseArguments(JsonRpcTestService.class.getMethod("noNamedParamsPassParamsObject", String.class, int.class), arguments);
}
@Test(expected = RuntimeException.class)
public void someNamedParamsPassParamsObject() throws Exception {
ReflectionUtil.parseArguments(JsonRpcTestService.class.getMethod("someNamedParamsPassParamsObject", String.class, int.class), null);
}
@Test
public void allNamedParamsPassParamsObject() throws Exception {
Object[] arguments = {"1", 2};
@SuppressWarnings("unchecked")
Map<String, Object> namedParams = (Map<String, Object>) ReflectionUtil.parseArguments(JsonRpcTestService.class.getMethod("allNamedParamsPassParamsAuto", String.class, int.class), arguments);
assertEquals(2, namedParams.size());
assertEquals("1", namedParams.get("one"));
assertEquals(2, namedParams.get("two"));
}
private interface JsonRpcTestService {
void noParams();
void noNamedParams(String one, int two);
void someNamedParams(@JsonRpcParam("one") String one, int two);
void allNamedParams(@JsonRpcParam("one") String one, @JsonRpcParam("two") int two);
@JsonRpcMethod(value = "noNamedParamsPassParamsAuto", paramsPassMode = JsonRpcParamsPassMode.AUTO)
void noNamedParamsPassParamsAuto(String one, int two);
@JsonRpcMethod(value = "someNamedParamsPassParamsAuto", paramsPassMode = JsonRpcParamsPassMode.AUTO)
void someNamedParamsPassParamsAuto(@JsonRpcParam("one") String one, int two);
@JsonRpcMethod(value = "allNamedParamsPassParamsAuto", paramsPassMode = JsonRpcParamsPassMode.AUTO)
void allNamedParamsPassParamsAuto(@JsonRpcParam("one") String one, @JsonRpcParam("two") int two);
@JsonRpcMethod(value = "noNamedParamsPassParamsArray", paramsPassMode = JsonRpcParamsPassMode.ARRAY)
void noNamedParamsPassParamsArray(String one, int two);
@JsonRpcMethod(value = "someNamedParamsPassParamsArray", paramsPassMode = JsonRpcParamsPassMode.ARRAY)
void someNamedParamsPassParamsArray(@JsonRpcParam("one") String one, int two);
@JsonRpcMethod(value = "allNamedParamsPassParamsArray", paramsPassMode = JsonRpcParamsPassMode.ARRAY)
void allNamedParamsPassParamsArray(@JsonRpcParam("one") String one, @JsonRpcParam("two") int two);
@JsonRpcMethod(value = "noNamedParamsPassParamsObject", paramsPassMode = JsonRpcParamsPassMode.OBJECT)
void noNamedParamsPassParamsObject(String one, int two);
@JsonRpcMethod(value = "someNamedParamsPassParamsObject", paramsPassMode = JsonRpcParamsPassMode.OBJECT)
void someNamedParamsPassParamsObject(@JsonRpcParam("one") String one, int two);
@JsonRpcMethod(value = "allNamedParamsPassParamsObject", paramsPassMode = JsonRpcParamsPassMode.OBJECT)
void allNamedParamsPassParamsObject(@JsonRpcParam("one") String one, @JsonRpcParam("two") int two);
}
}