JavaPatternMatching/test/plugindevelopment/TypeInsertTester.java

75 lines
2.9 KiB
Java
Raw Normal View History

2014-03-09 10:44:12 +00:00
package plugindevelopment;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Vector;
2014-10-09 10:01:16 +00:00
import de.dhbwstuttgart.logger.Logger;
2014-11-04 12:47:05 +00:00
import de.dhbwstuttgart.logger.LoggerConfiguration;
import de.dhbwstuttgart.logger.Section;
2014-09-02 08:33:54 +00:00
import de.dhbwstuttgart.core.MyCompiler;
import de.dhbwstuttgart.core.MyCompilerAPI;
import de.dhbwstuttgart.parser.JavaParser.yyException;
2014-09-02 08:33:54 +00:00
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertPoint;
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet;
2014-03-09 10:44:12 +00:00
import junit.framework.TestCase;
2014-03-09 12:03:30 +00:00
public class TypeInsertTester{
2014-03-09 10:44:12 +00:00
private static Logger inferencelog = Logger.getLogger(TypeInsertTester.class.getName());
static{
{
2014-11-04 12:47:05 +00:00
Logger.setStandardConfiguration(new LoggerConfiguration().setOutput(Section.TYPEINFERENCE, System.out));
2014-10-09 10:01:16 +00:00
/*
// Ausgabeoptionen fuer die Logger
ConsoleAppender logAppender = new ConsoleAppender(new SimpleLayout());
logAppender.setTarget("System.out");
logAppender.activateOptions();
inferencelog.addAppender(logAppender); //Bei den Tests wird der Log auch in System.out geschrieben.
2014-10-09 10:01:16 +00:00
*/
}
}
2014-03-18 19:18:57 +00:00
static final String rootDirectory = System.getProperty("user.dir")+"/test/plugindevelopment/";
2014-03-09 10:44:12 +00:00
public static void test(String sourceFileToInfere, String solutionFile){
String inferedSource = "";
MyCompilerAPI compiler = MyCompiler.getAPI();
try {
compiler.parse(new File(rootDirectory + sourceFileToInfere));
Vector<TypeinferenceResultSet> results = compiler.typeReconstruction();
2014-03-18 19:18:57 +00:00
TestCase.assertTrue("Es darf nicht mehr als eine L<>sungsm<73>glichkeit geben und nicht "+results.size(), results.size()==1);
2014-03-09 10:44:12 +00:00
for(TypeinferenceResultSet result : results){
TypeInsertSet point = result.getTypeInsertionPoints();
//TestCase.assertTrue("Es muss mindestens ein TypeInsertSet vorhanden sein", points.size()>0);
if(point.points.size()>0){
2014-03-09 10:44:12 +00:00
inferedSource = point.insertAllTypes(getFileContent(rootDirectory + sourceFileToInfere));
String solutionSource = getFileContent(rootDirectory + solutionFile);
System.out.println("\nInferierter Source:\n"+inferedSource);
2014-03-09 12:03:30 +00:00
TestCase.assertTrue("Nicht das erwartete Ergebnis", inferedSource.equals(solutionSource));
2014-03-09 10:44:12 +00:00
}
}
} catch (IOException | yyException e) {
e.printStackTrace();
2014-03-09 12:03:30 +00:00
TestCase.fail();
2014-03-09 10:44:12 +00:00
}
}
//Source: https://stackoverflow.com/questions/326390/how-to-create-a-java-string-from-the-contents-of-a-file
2014-04-09 12:12:55 +00:00
//PS: ben<65>tigt Java 7
public static String getFileContent(String path)throws IOException
2014-03-09 10:44:12 +00:00
{
byte[] encoded = Files.readAllBytes(Paths.get(path));
return StandardCharsets.UTF_8.decode(ByteBuffer.wrap(encoded)).toString();
}
2014-03-09 10:44:12 +00:00
}