package org.societies.android.platform.utilities;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.societies.android.platform.utilities.ServiceMethodTranslator;
public class TestServiceMethodTranslator {
private static String methodsArray [] = {"getGreeting()",
"getGreeting(String appendToMessage)",
"getAnotherGreeting(String appendToMessage, int index)",
"getParcelable(String value, int number, org.societies.android.TestParcel parcel)"};
private static String METHOD_1 = "getGreeting";
private static String METHOD_2 = "getAnotherGreeting";
private static String METHOD_3 = "getParcelable";
private static String METHOD_NON_EXIST = "doesNotExist()";
private static String PARAM_1_NAME = "appendToMessage";
private static String PARAM_2_NAME = "index";
private static String PARAM_3_NAME = "value";
private static String PARAM_4_NAME = "number";
private static String PARAM_5_NAME = "parcel";
private static String PARAM_1_TYPE = "String";
private static String PARAM_2_TYPE = "int";
private static String PARAM_3_TYPE = "long";
private static String PARAM_4_TYPE = "double";
private static String PARAM_5_TYPE = "float";
private static String PARAM_6_TYPE = "byte";
private static String PARAM_7_TYPE = "char";
private static String PARAM_8_TYPE = "boolean";
private static String PARAM_9_TYPE = "short";
private static String PARAM_10_TYPE = "org.societies.android.TestParcel";
private static String PARAM_1_TYPE_CAP = "String";
private static String PARAM_2_TYPE_CAP = "Int";
private static String PARAM_3_TYPE_CAP = "Long";
private static String PARAM_4_TYPE_CAP = "Double";
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testGetMethodIndex() {
assertEquals(0, ServiceMethodTranslator.getMethodIndex(methodsArray, methodsArray[0]));
assertEquals(1, ServiceMethodTranslator.getMethodIndex(methodsArray, methodsArray[1]));
assertEquals(2, ServiceMethodTranslator.getMethodIndex(methodsArray, methodsArray[2]));
assertEquals(3, ServiceMethodTranslator.getMethodIndex(methodsArray, methodsArray[3]));
assertEquals(-1, ServiceMethodTranslator.getMethodIndex(methodsArray, METHOD_NON_EXIST));
}
@Test
public void testGetMethodString() {
assertEquals(METHOD_1, ServiceMethodTranslator.getMethodName(methodsArray, 0));
assertEquals(METHOD_1, ServiceMethodTranslator.getMethodName(methodsArray, 1));
assertEquals(METHOD_2, ServiceMethodTranslator.getMethodName(methodsArray, 2));
assertEquals(METHOD_3, ServiceMethodTranslator.getMethodName(methodsArray, 3));
}
@Test(expected= org.societies.utilities.DBC.PreconditionException.class)
public void testGetInvalidMethodString() {
assertEquals(METHOD_3, ServiceMethodTranslator.getMethodName(methodsArray, 4));
}
@Test
public void testGetParameterNumber() {
assertEquals(0, ServiceMethodTranslator.getParameterNumber(methodsArray[0]));
assertEquals(1, ServiceMethodTranslator.getParameterNumber(methodsArray[1]));
assertEquals(2, ServiceMethodTranslator.getParameterNumber(methodsArray[2]));
assertEquals(3, ServiceMethodTranslator.getParameterNumber(methodsArray[3]));
}
@Test
public void testGetMethodParameterName() {
assertEquals(null, ServiceMethodTranslator.getMethodParameterName(methodsArray[0], 0));
assertEquals(null, ServiceMethodTranslator.getMethodParameterName(methodsArray[0], 1));
assertEquals(PARAM_1_NAME, ServiceMethodTranslator.getMethodParameterName(methodsArray[1], 0));
assertEquals(null, ServiceMethodTranslator.getMethodParameterName(methodsArray[1], 1));
assertEquals(PARAM_1_NAME, ServiceMethodTranslator.getMethodParameterName(methodsArray[2], 0));
assertEquals(PARAM_2_NAME, ServiceMethodTranslator.getMethodParameterName(methodsArray[2], 1));
assertEquals(null, ServiceMethodTranslator.getMethodParameterName(methodsArray[2], 2));
assertEquals(PARAM_3_NAME, ServiceMethodTranslator.getMethodParameterName(methodsArray[3], 0));
assertEquals(PARAM_4_NAME, ServiceMethodTranslator.getMethodParameterName(methodsArray[3], 1));
assertEquals(PARAM_5_NAME, ServiceMethodTranslator.getMethodParameterName(methodsArray[3], 2));
assertEquals(null, ServiceMethodTranslator.getMethodParameterName(methodsArray[3], 3));
}
@Test
public void testGetMethodParameterNames() {
assertEquals(0, ServiceMethodTranslator.getMethodParameterNames(methodsArray[0]).length);
assertEquals(1, ServiceMethodTranslator.getMethodParameterNames(methodsArray[1]).length);
assertEquals(2, ServiceMethodTranslator.getMethodParameterNames(methodsArray[2]).length);
assertEquals(3, ServiceMethodTranslator.getMethodParameterNames(methodsArray[3]).length);
}
@Test(expected= org.societies.utilities.DBC.PreconditionException.class)
public void testGetMethodParameterNamesMalFormed() {
assertEquals(2, ServiceMethodTranslator.getMethodParameterNames(METHOD_1).length);
}
@Test
public void testGetParameterClasses() {
assertEquals(0, ServiceMethodTranslator.getParameterClasses(methodsArray[0]).length);
assertEquals(1, ServiceMethodTranslator.getParameterClasses(methodsArray[1]).length);
assertEquals(2, ServiceMethodTranslator.getParameterClasses(methodsArray[2]).length);
assertEquals(3, ServiceMethodTranslator.getParameterClasses(methodsArray[3]).length);
// Class clazzes [] = ServiceMethodTranslator.getParameterClasses(methodsArray[2]);
// for (int i = 0; i < clazzes.length; i++) {
// System.out.println("Class: " + clazzes[i].getCanonicalName());
// }
}
@Test
public void testCapitaliseString() {
assertEquals(PARAM_1_TYPE_CAP, ServiceMethodTranslator.capitaliseString(PARAM_1_TYPE));
assertEquals(PARAM_2_TYPE_CAP, ServiceMethodTranslator.capitaliseString(PARAM_2_TYPE));
assertEquals(PARAM_3_TYPE_CAP, ServiceMethodTranslator.capitaliseString(PARAM_3_TYPE));
assertEquals(PARAM_4_TYPE_CAP, ServiceMethodTranslator.capitaliseString(PARAM_4_TYPE));
assertEquals(PARAM_10_TYPE, ServiceMethodTranslator.capitaliseString(PARAM_10_TYPE));
}
@Test
public void testGetMethodParameterType() {
assertEquals(PARAM_1_TYPE, ServiceMethodTranslator.getMethodParameterType(methodsArray[1], 0));
assertEquals(PARAM_1_TYPE, ServiceMethodTranslator.getMethodParameterType(methodsArray[2], 0));
assertEquals(PARAM_2_TYPE, ServiceMethodTranslator.getMethodParameterType(methodsArray[2], 1));
assertEquals(PARAM_1_TYPE, ServiceMethodTranslator.getMethodParameterType(methodsArray[3], 0));
assertEquals(PARAM_2_TYPE, ServiceMethodTranslator.getMethodParameterType(methodsArray[3], 1));
assertEquals(PARAM_10_TYPE, ServiceMethodTranslator.getMethodParameterType(methodsArray[3], 2));
assertEquals(null, ServiceMethodTranslator.getMethodParameterType(methodsArray[0], 0));
}
@Test
public void testGetMethodParameterTypeCapitalised() {
assertEquals(PARAM_1_TYPE_CAP, ServiceMethodTranslator.getMethodParameterTypeCapitalised(methodsArray[1], 0));
assertEquals(PARAM_1_TYPE_CAP, ServiceMethodTranslator.getMethodParameterTypeCapitalised(methodsArray[2], 0));
assertEquals(PARAM_2_TYPE_CAP, ServiceMethodTranslator.getMethodParameterTypeCapitalised(methodsArray[2], 1));
assertEquals(PARAM_1_TYPE_CAP, ServiceMethodTranslator.getMethodParameterTypeCapitalised(methodsArray[3], 0));
assertEquals(PARAM_2_TYPE_CAP, ServiceMethodTranslator.getMethodParameterTypeCapitalised(methodsArray[3], 1));
assertEquals(PARAM_10_TYPE, ServiceMethodTranslator.getMethodParameterTypeCapitalised(methodsArray[3], 2));
}
@Test
public void testGetMethodParameterTypes() {
assertEquals(0, ServiceMethodTranslator.getMethodParameterTypes(methodsArray[0]).length);
assertEquals(1, ServiceMethodTranslator.getMethodParameterTypes(methodsArray[1]).length);
assertEquals(2, ServiceMethodTranslator.getMethodParameterTypes(methodsArray[2]).length);
assertEquals(3, ServiceMethodTranslator.getMethodParameterTypes(methodsArray[3]).length);
// String types [] = ServiceMethodTranslator.getMethodParameterTypes(methodsArray[2]);
// for (int i = 0; i < types.length; i++) {
// System.out.println("Types: " + types[i]);
// }
}
@Test
public void testArrayElement() {
assertEquals(0, ServiceMethodTranslator.arrayElement(ServiceMethodTranslator.JAVA_PRIMITIVES, PARAM_2_TYPE));
assertEquals(1, ServiceMethodTranslator.arrayElement(ServiceMethodTranslator.JAVA_PRIMITIVES, PARAM_3_TYPE));
assertEquals(2, ServiceMethodTranslator.arrayElement(ServiceMethodTranslator.JAVA_PRIMITIVES, PARAM_4_TYPE));
}
@Test
public void testGetPrimitiveClass() {
assertEquals(int.class, ServiceMethodTranslator.getPrimitiveClass(PARAM_2_TYPE));
assertEquals(long.class, ServiceMethodTranslator.getPrimitiveClass(PARAM_3_TYPE));
assertEquals(double.class, ServiceMethodTranslator.getPrimitiveClass(PARAM_4_TYPE));
assertEquals(float.class, ServiceMethodTranslator.getPrimitiveClass(PARAM_5_TYPE));
assertEquals(byte.class, ServiceMethodTranslator.getPrimitiveClass(PARAM_6_TYPE));
assertEquals(char.class, ServiceMethodTranslator.getPrimitiveClass(PARAM_7_TYPE));
assertEquals(boolean.class, ServiceMethodTranslator.getPrimitiveClass(PARAM_8_TYPE));
assertEquals(short.class, ServiceMethodTranslator.getPrimitiveClass(PARAM_9_TYPE));
}
}