Compare commits

...
2 Commits
Author SHA1 Message Date
KKlochko 6a3d7f4f42 Add the test block decorator. 2023-09-23 21:41:42 +03:00
KKlochko 6feb7f87dc Add abstract and simple test commands. 2023-09-23 21:34:54 +03:00
4 changed files with 164 additions and 0 deletions
@@ -0,0 +1,43 @@
package space.kklochko.simple_jbdd.tests.commands;
import space.kklochko.simple_jbdd.tests.Test;
import java.util.Map;
import java.util.TreeMap;
public abstract class AbstractTestCommand<T extends Test> {
protected String type;
protected String label;
public AbstractTestCommand(String label) {
setLabel(label);
}
public abstract boolean test();
public Map<String, String> getLabels() {
Map<String, String> labels = new TreeMap<String, String>();
labels.put(getType(), this.getLabel());
return labels;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public void setLabel(String label) {
this.label = label;
}
public String getLabel() {
return label;
}
public abstract void setObject(T object);
public abstract T getObject();
}
@@ -0,0 +1,27 @@
package space.kklochko.simple_jbdd.tests.commands;
import space.kklochko.simple_jbdd.tests.Test;
public class SimpleTestCommand<T extends Test> extends AbstractTestCommand<T> {
protected T object;
public SimpleTestCommand(String label, T object) {
super(label);
setObject(object);
setType("Title");
}
@Override
public boolean test() {
return true;
}
public void setObject(T object) {
this.object = object;
}
public T getObject() {
return object;
}
}
@@ -0,0 +1,55 @@
package space.kklochko.simple_jbdd.tests.commands.decorators;
import space.kklochko.simple_jbdd.tests.Test;
import space.kklochko.simple_jbdd.tests.commands.AbstractTestCommand;
import java.lang.reflect.Method;
import java.util.Map;
public abstract class AbstractDecorator<T extends Test> extends AbstractTestCommand<T> {
protected AbstractTestCommand<T> command;
protected Method method;
public AbstractDecorator(String label, AbstractTestCommand<T> command) {
super(label);
setCommand(command);
}
public abstract boolean test();
public Map<String, String> getLabels() {
Map<String, String> labels = getCommand().getLabels();
labels.put(getType(), this.getLabel());
return labels;
}
public abstract boolean runMethod();
public void setMethod(Method method) {
this.method = method;
}
public Method getMethod() {
return method;
}
@Override
public void setObject(T object) {
command.setObject(object);
}
@Override
public T getObject() {
return command.getObject();
}
public AbstractTestCommand<T> getCommand() {
return command;
}
public void setCommand(AbstractTestCommand<T> command) {
this.command = command;
}
}
@@ -0,0 +1,39 @@
package space.kklochko.simple_jbdd.tests.commands.decorators;
import space.kklochko.simple_jbdd.tests.Test;
import space.kklochko.simple_jbdd.tests.commands.AbstractTestCommand;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class BlockDecorator<T extends Test> extends AbstractDecorator<T> {
public BlockDecorator(String label, AbstractTestCommand<T> command, Method method, String type) {
super(label, command);
setType(type);
setMethod(method);
}
public boolean test() {
boolean result = runMethod();
if(!result)
return false;
return getCommand().test();
}
public boolean runMethod() {
try {
method.setAccessible(true);
method.invoke(getCommand().getObject());
return true;
} catch (InvocationTargetException e) {
System.err.println(e.getMessage());
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
System.err.println("Check access modifiers.");
throw new RuntimeException(e);
}
};
}