From 8b7ba5f18b6ece52ddcae1d124484cd21855805a Mon Sep 17 00:00:00 2001 From: KKlochko Date: Tue, 17 Oct 2023 22:12:55 +0300 Subject: [PATCH] Add validators to show error if a test method is invalid. --- .../factories/validators/EmptyValidator.java | 32 +++++++++++++ .../HasMethodsWithArgumentsValidator.java | 19 ++++++++ .../HasNonVoidMethodsValidator.java | 19 ++++++++ .../HasPrivateMethodsValidator.java | 20 ++++++++ .../factories/validators/MethodValidator.java | 48 +++++++++++++++++++ .../tests/factories/validators/Validator.java | 11 +++++ 6 files changed, 149 insertions(+) create mode 100644 src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/EmptyValidator.java create mode 100644 src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/HasMethodsWithArgumentsValidator.java create mode 100644 src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/HasNonVoidMethodsValidator.java create mode 100644 src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/HasPrivateMethodsValidator.java create mode 100644 src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/MethodValidator.java create mode 100644 src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/Validator.java diff --git a/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/EmptyValidator.java b/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/EmptyValidator.java new file mode 100644 index 0000000..b3cbf20 --- /dev/null +++ b/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/EmptyValidator.java @@ -0,0 +1,32 @@ +package space.kklochko.simple_jbdd.tests.factories.validators; + +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Map; + +public class EmptyValidator extends Validator { + private boolean isInvalid; + + @Override + public boolean validate(Map> methods) { + isInvalid = (methods.size() == 0); + return isInvalid; + } + + @Override + public String getErrorType() { + if(!isInvalid) + return "ok"; + + return "Error"; + } + + @Override + public String getMessage() { + if(!isInvalid) + return "ok"; + + return "ERROR!!! No blocks!!!"; + } +} + diff --git a/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/HasMethodsWithArgumentsValidator.java b/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/HasMethodsWithArgumentsValidator.java new file mode 100644 index 0000000..6d4a0f1 --- /dev/null +++ b/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/HasMethodsWithArgumentsValidator.java @@ -0,0 +1,19 @@ +package space.kklochko.simple_jbdd.tests.factories.validators; + +import java.lang.reflect.Method; + +public class HasMethodsWithArgumentsValidator extends MethodValidator { + @Override + protected boolean isMethodInvalid(Method method) { + return method.getParameterCount() != 0; + } + + @Override + public String getMessage() { + if(!isInvalid) + return "ok"; + + return String.format("ERROR!!! Methods must have no arguments!!! Check methods: %s!!!", getMethodListAsString()); + } +} + diff --git a/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/HasNonVoidMethodsValidator.java b/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/HasNonVoidMethodsValidator.java new file mode 100644 index 0000000..e2bb453 --- /dev/null +++ b/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/HasNonVoidMethodsValidator.java @@ -0,0 +1,19 @@ +package space.kklochko.simple_jbdd.tests.factories.validators; + +import java.lang.reflect.Method; + +public class HasNonVoidMethodsValidator extends MethodValidator { + @Override + protected boolean isMethodInvalid(Method method) { + return !method.getReturnType().equals(void.class); + } + + @Override + public String getMessage() { + if(!isInvalid) + return "ok"; + + return String.format("ERROR!!! Methods must have the void type!!! Check methods: %s!!!", getMethodListAsString()); + } +} + diff --git a/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/HasPrivateMethodsValidator.java b/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/HasPrivateMethodsValidator.java new file mode 100644 index 0000000..59b5f61 --- /dev/null +++ b/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/HasPrivateMethodsValidator.java @@ -0,0 +1,20 @@ +package space.kklochko.simple_jbdd.tests.factories.validators; + +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; + +public class HasPrivateMethodsValidator extends MethodValidator { + @Override + protected boolean isMethodInvalid(Method method) { + return !Modifier.isPublic(method.getModifiers()); + } + + @Override + public String getMessage() { + if(!isInvalid) + return "ok"; + + return String.format("ERROR!!! Methods must be public!!! Check method: %s!!!", getMethodListAsString()); + } +} + diff --git a/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/MethodValidator.java b/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/MethodValidator.java new file mode 100644 index 0000000..50e9e0b --- /dev/null +++ b/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/MethodValidator.java @@ -0,0 +1,48 @@ +package space.kklochko.simple_jbdd.tests.factories.validators; + +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Map; +import java.util.stream.Collectors; + +abstract public class MethodValidator extends Validator{ + protected boolean isInvalid; + + protected ArrayList invalidMethods; + + protected String getMethodListAsString() { + return invalidMethods.stream() + .map(m -> m.getName()) + .collect(Collectors.joining(", ")); + } + + abstract protected boolean isMethodInvalid(Method method); + + @Override + public boolean validate(Map> methods) { + isInvalid = false; + invalidMethods = new ArrayList<>(); + + for(var key : methods.keySet()) { + for(var method : methods.get(key)) { + if(isMethodInvalid(method)) { + isInvalid = true; + invalidMethods.add(method); + } + } + } + + return isInvalid; + } + + @Override + public String getErrorType() { + if(!isInvalid) + return "ok"; + + return "Error"; + } + + abstract public String getMessage(); +} + diff --git a/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/Validator.java b/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/Validator.java new file mode 100644 index 0000000..23afcdf --- /dev/null +++ b/src/main/java/space/kklochko/simple_jbdd/tests/factories/validators/Validator.java @@ -0,0 +1,11 @@ +package space.kklochko.simple_jbdd.tests.factories.validators; + +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Map; + +public abstract class Validator { + abstract public boolean validate(Map> methods); + abstract public String getErrorType(); + abstract public String getMessage(); +}