package org.societies.android.api.utilities;
import org.societies.android.api.utilities.ServiceMethodTranslator;
import org.societies.utilities.DBC.PreconditionException;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.MediumTest;
import android.util.Log;
public class TestServiceMethodTranslator extends AndroidTestCase {
private static final String LOG_TAG = TestServiceMethodTranslator.class.getName();
private static String methodsArray [] = {"getGreeting()",
"getGreeting(String appendToMessage)",
"getAnotherGreeting(String appendToMessage, int index)",
"getParcelable(String value, int number, org.societies.android.TestParcel parcel)",
"getArrays(String[ ] value, String othervalue[], int [] number, long longer [], org.societies.android.TestParcel parcel[])",
"getComplexParcelable(org.societies.api.schema.useragent.feedback.ExpFeedbackResultBean bean, Object object)",
"getSeriazable(Serializable serBean, Object object)"
};
private static String METHOD_1 = "getGreeting";
private static String METHOD_2 = "getAnotherGreeting";
private static String METHOD_3 = "getParcelable";
private static String METHOD_4 = "getArrays";
private static String METHOD_5 = "getComplexParcelable";
private static String METHOD_6 = "getSeriazable";
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_6_NAME = "othervalue";
private static String PARAM_7_NAME = "longer";
private static String PARAM_8_NAME = "bean";
private static String PARAM_9_NAME = "object";
private static String PARAM_10_NAME = "serBean";
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_11_TYPE = "org.societies.api.schema.useragent.feedback.ExpFeedbackResultBean";
private static String PARAM_12_TYPE = "Object";
private static String PARAM_13_TYPE = "Serializable";
private static String PARAM_1_ARRAY_TYPE = "String[]";
private static String PARAM_2_ARRAY_TYPE = "int[]";
private static String PARAM_3_ARRAY_TYPE = "long[]";
private static String PARAM_4_ARRAY_TYPE = "double[]";
private static String PARAM_5_ARRAY_TYPE = "float[]";
private static String PARAM_6_ARRAY_TYPE = "byte[]";
private static String PARAM_7_ARRAY_TYPE = "char[]";
private static String PARAM_8_ARRAY_TYPE = "boolean[]";
private static String PARAM_9_ARRAY_TYPE = "short[]";
private static String PARAM_10_ARRAY_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";
private static String PARAM_5_TYPE_CAP = "org.societies.api.schema.useragent.feedback.ExpFeedbackResultBean";
private static String PARAM_6_TYPE_CAP = "Object";
private static String PARAM_7_TYPE_CAP = "Serializable";
private static String PARAM_1_ARRAY_TYPE_CAP = "String[]";
private static String PARAM_2_ARRAY_TYPE_CAP = "Int[]";
private static String PARAM_3_ARRAY_TYPE_CAP = "Long[]";
private static String PARAM_4_ARRAY_TYPE_CAP = "Double[]";
protected void setUp() throws Exception {
super.setUp();
//after
}
protected void tearDown() throws Exception {
//before
super.tearDown();
}
// @MediumTest
/**
* Used to determine Android or Java array class names
*/
public void testAndroidArrayClassTypes() {
int integerArray [] = new int [10];
Log.d(LOG_TAG, "Class integer array: " + integerArray.getClass().getName());
long longArray [] = new long [10];
Log.d(LOG_TAG, "Class long array: " + longArray.getClass().getName());
double doubleArray [] = new double [10];
Log.d(LOG_TAG, "Class double array: " + doubleArray.getClass().getName());
float floatArray [] = new float [10];
Log.d(LOG_TAG, "Class float array: " + floatArray.getClass().getName());
byte byteArray [] = new byte [10];
Log.d(LOG_TAG, "Class byte array: " + byteArray.getClass().getName());
char charArray [] = new char [10];
Log.d(LOG_TAG, "Class char array: " + charArray.getClass().getName());
boolean booleanArray [] = new boolean [10];
Log.d(LOG_TAG, "Class boolean array: " + booleanArray.getClass().getName());
short shortArray [] = new short [10];
Log.d(LOG_TAG, "Class short array: " + shortArray.getClass().getName());
String stringArray [] = new String [10];
Log.d(LOG_TAG, "Class String array: " + stringArray.getClass().getName());
}
@MediumTest
public void testGetMethodIndex() throws Exception {
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(4, ServiceMethodTranslator.getMethodIndex(methodsArray, methodsArray[4]));
assertEquals(5, ServiceMethodTranslator.getMethodIndex(methodsArray, methodsArray[5]));
assertEquals(6, ServiceMethodTranslator.getMethodIndex(methodsArray, methodsArray[6]));
assertEquals(-1, ServiceMethodTranslator.getMethodIndex(methodsArray, METHOD_NON_EXIST));
}
@MediumTest
public void testGetMethodString() throws Exception {
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));
assertEquals(METHOD_4, ServiceMethodTranslator.getMethodName(methodsArray, 4));
assertEquals(METHOD_5, ServiceMethodTranslator.getMethodName(methodsArray, 5));
assertEquals(METHOD_6, ServiceMethodTranslator.getMethodName(methodsArray, 6));
}
@MediumTest
public void testGetInvalidMethodString() throws Exception {
try {
assertEquals(METHOD_3, ServiceMethodTranslator.getMethodName(methodsArray, 7));
fail("DBC PreconditionException not thrown");
} catch (PreconditionException e){
}
}
@MediumTest
public void testGetParameterNumber() throws Exception {
assertEquals(0, ServiceMethodTranslator.getParameterNumber(methodsArray[0]));
assertEquals(1, ServiceMethodTranslator.getParameterNumber(methodsArray[1]));
assertEquals(2, ServiceMethodTranslator.getParameterNumber(methodsArray[2]));
assertEquals(3, ServiceMethodTranslator.getParameterNumber(methodsArray[3]));
assertEquals(5, ServiceMethodTranslator.getParameterNumber(methodsArray[4]));
assertEquals(2, ServiceMethodTranslator.getParameterNumber(methodsArray[5]));
assertEquals(2, ServiceMethodTranslator.getParameterNumber(methodsArray[6]));
}
@MediumTest
public void testGetMethodParameterName() throws Exception {
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));
assertEquals(PARAM_3_NAME, ServiceMethodTranslator.getMethodParameterName(methodsArray[4], 0));
assertEquals(PARAM_6_NAME, ServiceMethodTranslator.getMethodParameterName(methodsArray[4], 1));
assertEquals(PARAM_4_NAME, ServiceMethodTranslator.getMethodParameterName(methodsArray[4], 2));
assertEquals(PARAM_7_NAME, ServiceMethodTranslator.getMethodParameterName(methodsArray[4], 3));
assertEquals(PARAM_5_NAME, ServiceMethodTranslator.getMethodParameterName(methodsArray[4], 4));
assertEquals(PARAM_8_NAME, ServiceMethodTranslator.getMethodParameterName(methodsArray[5], 0));
assertEquals(PARAM_9_NAME, ServiceMethodTranslator.getMethodParameterName(methodsArray[5], 1));
assertEquals(PARAM_10_NAME, ServiceMethodTranslator.getMethodParameterName(methodsArray[6], 0));
assertEquals(PARAM_9_NAME, ServiceMethodTranslator.getMethodParameterName(methodsArray[6], 1));
}
@MediumTest
public void testGetMethodParameterNames() throws Exception {
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);
assertEquals(5, ServiceMethodTranslator.getMethodParameterNames(methodsArray[4]).length);
assertEquals(2, ServiceMethodTranslator.getMethodParameterNames(methodsArray[5]).length);
assertEquals(2, ServiceMethodTranslator.getMethodParameterNames(methodsArray[6]).length);
}
@MediumTest
public void testGetMethodParameterNamesMalFormed() {
try{
assertEquals(2, ServiceMethodTranslator.getMethodParameterNames(METHOD_1).length);
fail("DBC PreconditionException not thrown");
} catch (PreconditionException e) {
}
}
@MediumTest
public void testGetParameterClasses() throws Exception {
assertEquals(0, ServiceMethodTranslator.getParameterClasses(methodsArray[0]).length);
assertEquals(1, ServiceMethodTranslator.getParameterClasses(methodsArray[1]).length);
assertEquals(Class.forName(ServiceMethodTranslator.JAVA_LANG_PREFIX + PARAM_1_TYPE), ServiceMethodTranslator.getParameterClasses(methodsArray[1])[0]);
assertEquals(2, ServiceMethodTranslator.getParameterClasses(methodsArray[2]).length);
assertEquals(3, ServiceMethodTranslator.getParameterClasses(methodsArray[3]).length);
assertEquals(5, ServiceMethodTranslator.getParameterClasses(methodsArray[4]).length);
assertEquals(2, ServiceMethodTranslator.getParameterClasses(methodsArray[5]).length);
assertEquals(Class.forName(PARAM_11_TYPE), ServiceMethodTranslator.getParameterClasses(methodsArray[5])[0]);
assertEquals(Class.forName(ServiceMethodTranslator.JAVA_LANG_PREFIX + PARAM_12_TYPE), ServiceMethodTranslator.getParameterClasses(methodsArray[5])[1]);
assertEquals(Class.forName(ServiceMethodTranslator.JAVA_IO_PREFIX + PARAM_13_TYPE), ServiceMethodTranslator.getParameterClasses(methodsArray[6])[0]);
assertEquals(Class.forName(ServiceMethodTranslator.JAVA_LANG_PREFIX + PARAM_12_TYPE), ServiceMethodTranslator.getParameterClasses(methodsArray[6])[1]);
// Class clazzes [] = ServiceMethodTranslator.getParameterClasses(methodsArray[2]);
// for (int i = 0; i < clazzes.length; i++) {
// System.out.println("Class: " + clazzes[i].getCanonicalName());
// }
}
@MediumTest
public void testCapitaliseString() throws Exception {
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));
assertEquals(PARAM_1_ARRAY_TYPE_CAP, ServiceMethodTranslator.capitaliseString(PARAM_1_ARRAY_TYPE));
assertEquals(PARAM_2_ARRAY_TYPE_CAP, ServiceMethodTranslator.capitaliseString(PARAM_2_ARRAY_TYPE));
assertEquals(PARAM_3_ARRAY_TYPE_CAP, ServiceMethodTranslator.capitaliseString(PARAM_3_ARRAY_TYPE));
assertEquals(PARAM_4_ARRAY_TYPE_CAP, ServiceMethodTranslator.capitaliseString(PARAM_4_ARRAY_TYPE));
assertEquals(PARAM_10_ARRAY_TYPE, ServiceMethodTranslator.capitaliseString(PARAM_10_ARRAY_TYPE));
assertEquals(PARAM_5_TYPE_CAP, ServiceMethodTranslator.capitaliseString(PARAM_11_TYPE));
assertEquals(PARAM_6_TYPE_CAP, ServiceMethodTranslator.capitaliseString(PARAM_12_TYPE));
assertEquals(PARAM_7_TYPE_CAP, ServiceMethodTranslator.capitaliseString(PARAM_13_TYPE));
}
@MediumTest
public void testGetMethodParameterType() throws Exception {
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(PARAM_1_ARRAY_TYPE, ServiceMethodTranslator.getMethodParameterType(methodsArray[4], 0));
assertEquals(PARAM_1_ARRAY_TYPE, ServiceMethodTranslator.getMethodParameterType(methodsArray[4], 1));
assertEquals(PARAM_2_ARRAY_TYPE, ServiceMethodTranslator.getMethodParameterType(methodsArray[4], 2));
assertEquals(PARAM_3_ARRAY_TYPE, ServiceMethodTranslator.getMethodParameterType(methodsArray[4], 3));
assertEquals(PARAM_10_ARRAY_TYPE, ServiceMethodTranslator.getMethodParameterType(methodsArray[4], 4));
assertEquals(PARAM_11_TYPE, ServiceMethodTranslator.getMethodParameterType(methodsArray[5], 0));
assertEquals(PARAM_12_TYPE, ServiceMethodTranslator.getMethodParameterType(methodsArray[5], 1));
assertEquals(PARAM_13_TYPE, ServiceMethodTranslator.getMethodParameterType(methodsArray[6], 0));
assertEquals(PARAM_12_TYPE, ServiceMethodTranslator.getMethodParameterType(methodsArray[6], 1));
assertEquals(null, ServiceMethodTranslator.getMethodParameterType(methodsArray[0], 0));
}
@MediumTest
public void testGetMethodParameterTypeCapitalised() throws Exception {
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));
assertEquals(PARAM_1_ARRAY_TYPE_CAP, ServiceMethodTranslator.getMethodParameterTypeCapitalised(methodsArray[4], 0));
assertEquals(PARAM_1_ARRAY_TYPE_CAP, ServiceMethodTranslator.getMethodParameterTypeCapitalised(methodsArray[4], 1));
assertEquals(PARAM_2_ARRAY_TYPE_CAP, ServiceMethodTranslator.getMethodParameterTypeCapitalised(methodsArray[4], 2));
assertEquals(PARAM_3_ARRAY_TYPE_CAP, ServiceMethodTranslator.getMethodParameterTypeCapitalised(methodsArray[4], 3));
assertEquals(PARAM_10_ARRAY_TYPE, ServiceMethodTranslator.getMethodParameterTypeCapitalised(methodsArray[4], 4));
assertEquals(PARAM_5_TYPE_CAP, ServiceMethodTranslator.getMethodParameterTypeCapitalised(methodsArray[5], 0));
assertEquals(PARAM_6_TYPE_CAP, ServiceMethodTranslator.getMethodParameterTypeCapitalised(methodsArray[5], 1));
assertEquals(PARAM_7_TYPE_CAP, ServiceMethodTranslator.getMethodParameterTypeCapitalised(methodsArray[6], 0));
assertEquals(PARAM_6_TYPE_CAP, ServiceMethodTranslator.getMethodParameterTypeCapitalised(methodsArray[6], 1));
}
@MediumTest
public void testGetMethodParameterTypes() throws Exception {
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);
assertEquals(5, ServiceMethodTranslator.getMethodParameterTypes(methodsArray[4]).length);
assertEquals(2, ServiceMethodTranslator.getMethodParameterTypes(methodsArray[5]).length);
assertEquals(2, ServiceMethodTranslator.getMethodParameterTypes(methodsArray[6]).length);
// String types [] = ServiceMethodTranslator.getMethodParameterTypes(methodsArray[2]);
// for (int i = 0; i < types.length; i++) {
// System.out.println("Types: " + types[i]);
// }
}
@MediumTest
public void testArrayElement() throws Exception {
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));
}
@MediumTest
public void testOtherArrayElement() throws Exception {
assertEquals(0, ServiceMethodTranslator.arrayElement(ServiceMethodTranslator.JAVA_PRIMITIVE_ARRAYS, PARAM_2_ARRAY_TYPE));
assertEquals(1, ServiceMethodTranslator.arrayElement(ServiceMethodTranslator.JAVA_PRIMITIVE_ARRAYS, PARAM_3_ARRAY_TYPE));
assertEquals(2, ServiceMethodTranslator.arrayElement(ServiceMethodTranslator.JAVA_PRIMITIVE_ARRAYS, PARAM_4_ARRAY_TYPE));
}
@MediumTest
public void testGetPrimitiveClass() throws Exception {
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));
assertEquals(Class.forName(ServiceMethodTranslator.ANDROID_PRIMITIVES_ARRAYS_CLASS_TYPE[0]), ServiceMethodTranslator.getPrimitiveClassArray(PARAM_2_ARRAY_TYPE));
assertEquals(Class.forName(ServiceMethodTranslator.ANDROID_PRIMITIVES_ARRAYS_CLASS_TYPE[1]), ServiceMethodTranslator.getPrimitiveClassArray(PARAM_3_ARRAY_TYPE));
assertEquals(Class.forName(ServiceMethodTranslator.ANDROID_PRIMITIVES_ARRAYS_CLASS_TYPE[2]), ServiceMethodTranslator.getPrimitiveClassArray(PARAM_4_ARRAY_TYPE));
assertEquals(Class.forName(ServiceMethodTranslator.ANDROID_PRIMITIVES_ARRAYS_CLASS_TYPE[3]), ServiceMethodTranslator.getPrimitiveClassArray(PARAM_5_ARRAY_TYPE));
assertEquals(Class.forName(ServiceMethodTranslator.ANDROID_PRIMITIVES_ARRAYS_CLASS_TYPE[4]), ServiceMethodTranslator.getPrimitiveClassArray(PARAM_6_ARRAY_TYPE));
assertEquals(Class.forName(ServiceMethodTranslator.ANDROID_PRIMITIVES_ARRAYS_CLASS_TYPE[5]), ServiceMethodTranslator.getPrimitiveClassArray(PARAM_7_ARRAY_TYPE));
assertEquals(Class.forName(ServiceMethodTranslator.ANDROID_PRIMITIVES_ARRAYS_CLASS_TYPE[6]), ServiceMethodTranslator.getPrimitiveClassArray(PARAM_8_ARRAY_TYPE));
assertEquals(Class.forName(ServiceMethodTranslator.ANDROID_PRIMITIVES_ARRAYS_CLASS_TYPE[7]), ServiceMethodTranslator.getPrimitiveClassArray(PARAM_9_ARRAY_TYPE));
}
}