Advertisement
damesova

TestForHavingSetMethod[Judge]

May 10th, 2019
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.59 KB | None | 0 0
  1.  
  2. import org.junit.Assert;
  3. import org.junit.Test;
  4.  
  5. import java.lang.reflect.Method;
  6. import java.util.HashMap;
  7.  
  8. public class T06TestHaveAllMethods {
  9.     private static final String CLASS_NOT_PRESENT_ERROR_MESSAGE = "Class '%s' not present";
  10.     private static final String METHOD_RETURN_TYPE_ERROR = "Method '%s' in class '%s' should have return type '%s'";
  11.  
  12.     private static final String PERSON = "Person";
  13.  
  14.  
  15.     private static final String[] methodNames = new String[]{
  16.             "getSalary",
  17.             "setSalary",
  18.             "setFirstName",
  19.             "setLastName",
  20.             "setAge",
  21.             "increaseSalary"
  22.     };
  23.  
  24.     private static final HashMap<String, Class> methodReturnTypes = new HashMap<String, Class>() {{
  25.         put("getSalary", double.class);
  26.         put("setSalary", void.class);
  27.         put("setFirstName", void.class);
  28.         put("setLastName", void.class);
  29.         put("setAge", void.class);
  30.         put("increaseSalary", void.class);
  31.     }};
  32.  
  33.     private static final HashMap<String, Class[]> methodParameters = new HashMap<String, Class[]>() {{
  34.         put("getSalary", new Class[]{});
  35.         put("setSalary", new Class[]{double.class});
  36.         put("setFirstName", new Class[]{String.class});
  37.         put("setLastName", new Class[]{String.class});
  38.         put("setAge", new Class[]{int.class});
  39.         put("increaseSalary", new Class[]{double.class});
  40.     }};
  41.  
  42.     @Test
  43.     public void test() throws NoSuchMethodException {
  44.         assertExistingMethods(methodNames);
  45.     }
  46.  
  47.     private void assertExistingMethods(String[] methodNames) throws NoSuchMethodException {
  48.         Class cl = getClass(PERSON);
  49.         for (String methodName : methodNames) {
  50.             Method method =
  51.                     methodParameters.get(methodName).length == 0
  52.                             ? cl.getDeclaredMethod(methodName)
  53.                             : cl.getDeclaredMethod(methodName, methodParameters.get(methodName));
  54.             Class<?> returnType = method.getReturnType();
  55.             Assert.assertTrue(
  56.                     String.format(METHOD_RETURN_TYPE_ERROR,
  57.                             methodName,
  58.                             PERSON,
  59.                             methodReturnTypes.get(methodName)),
  60.                     returnType.equals(methodReturnTypes.get(methodName)));
  61.         }
  62.     }
  63.  
  64.     private Class getClass(String className) {
  65.         Assert.assertTrue(String.format(CLASS_NOT_PRESENT_ERROR_MESSAGE, className),
  66.                 Classes.allClasses.containsKey(className));
  67.         return Classes.allClasses.get(className);
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement