peer-at-code-parser-java/test/dev/peerat/parser/java/element/BaseElementTests.java

85 lines
2.3 KiB
Java

package dev.peerat.parser.java.element;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Supplier;
import org.junit.jupiter.api.Test;
import dev.peerat.parser.Parser;
import dev.peerat.parser.java.Class;
import dev.peerat.parser.java.ClassBase;
import dev.peerat.parser.java.Enumeration;
import dev.peerat.parser.java.Function;
import dev.peerat.parser.java.Interface;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.JavaFile;
import dev.peerat.parser.java.JavaParser;
import dev.peerat.parser.java.Variable;
public class BaseElementTests{
private int size;
private List<String> texts = new ArrayList<>();
private List<Consumer<JavaFile>> checkers = new ArrayList<>();
public void register(String text, Consumer<JavaFile> checker){
this.texts.add(text);
this.checkers.add(checker);
this.size++;
}
@Test
void main(){
String text = null;
try{
Parser<JavaElement> parser = new JavaParser();
for(int i = 0; i < size; i++){
JavaFile javaFile = new JavaFile();
parser.parse((text = texts.get(i)), javaFile);
checkers.get(i).accept(javaFile);
}
System.out.println("["+getClass().getSimpleName()+"] passed "+size+" tests");
}catch(Exception|AssertionError e){
System.err.println("["+getClass().getSimpleName()+"] failed "+text+" for cause "+e.getMessage());
}
}
public Class checkClass(JavaFile javafile){
ClassBase clazzb = javafile.getMainClass();
assertNotNull(clazzb);
assertTrue(clazzb instanceof Class);
return (Class)clazzb;
}
public Interface checkInterface(JavaFile javafile){
ClassBase clazzb = javafile.getMainClass();
assertNotNull(clazzb);
assertTrue(clazzb instanceof Interface);
return (Interface)clazzb;
}
public Enumeration checkEnum(JavaFile javafile){
ClassBase clazzb = javafile.getMainClass();
assertNotNull(clazzb);
assertTrue(clazzb instanceof Enumeration);
return (Enumeration)clazzb;
}
public Function checkFunction(JavaElement element){
assertNotNull(element);
assertTrue(element instanceof Function);
return (Function)element;
}
public Variable checkVariable(JavaElement element){
assertNotNull(element);
assertTrue(element instanceof Variable);
return (Variable)element;
}
}