package plugindevelopment.MartinTestCases; import java.io.File; import java.io.IOException; import de.dhbwstuttgart.typeinference.Menge; import org.junit.Test; import de.dhbwstuttgart.core.MyCompiler; import de.dhbwstuttgart.core.MyCompilerAPI; import de.dhbwstuttgart.logger.LoggerConfiguration; import de.dhbwstuttgart.logger.Section; import de.dhbwstuttgart.parser.JavaParser.yyException; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet; import plugindevelopment.TypeInsertTester; import plugindevelopment.TypeInsertTests.MultipleTypesInsertTester; import junit.framework.TestCase; public class Tester extends TypeInsertTester{ public final static String rootDirectory = System.getProperty("user.dir")+"/test/plugindevelopment/MartinTestCases/"; public static void test(String sourceFileToInfere, Menge mustContain){ String gesamterSrc = ""; String inferedSource = ""; MyCompilerAPI compiler = MyCompiler.getAPI(new LoggerConfiguration().setOutput(Section.TYPEINFERENCE, System.out)); try { compiler.parse(new File(rootDirectory + sourceFileToInfere)); Menge results = compiler.typeReconstruction(); //TestCase.assertTrue("Es darf nicht mehr als eine L�sungsm�glichkeit geben und nicht "+results.size(), results.size()==1); for(TypeinferenceResultSet result : results){ TypeInsertSet point = result.getTypeInsertionPoints(); //TestCase.assertTrue("Es muss mindestens ein TypeInsertSet vorhanden sein", points.size()>0); //TestCase.assertTrue("Es muss mindestens ein TypeInsertPoint vorhanden sein", point.points.size()>0); if(point.points.size()>0){ inferedSource = point.insertAllTypes(TypeInsertTester.getFileContent(rootDirectory + sourceFileToInfere)); System.out.println(inferedSource); gesamterSrc += inferedSource; } } } catch (IOException | yyException e) { e.printStackTrace(); TestCase.fail(); } for(String containString : mustContain){ TestCase.assertTrue("\""+containString+"\" muss in den inferierten L�sungen vorkommen",gesamterSrc.contains(containString)); } } @Test public void runTests(){ Menge testFiles = new Menge(); //testFiles.add("OL3.jav"); testFiles.add("Plus1_Float_Double.jav"); ///* testFiles.add("AchimTest1.jav"); //testFiles.add("MatrixWhile.jav"); //testFiles.add("BoundedType1.jav"); testFiles.add("BoundedType2.jav"); testFiles.add("BoundedType.jav"); testFiles.add("OL2.jav"); testFiles.add("OL.jav"); testFiles.add("Simple.jav"); testFiles.add("SMatrix.jav"); testFiles.add("UnifyTest1.jav"); testFiles.add("UsecaseEight_pl.jav"); testFiles.add("UsecaseFive_pl.jav"); testFiles.add("UsecaseFour_pl.jav"); testFiles.add("Usecase_MUBTest1.jav"); testFiles.add("Usecase_MUBTest2.jav"); testFiles.add("Usecase_MUBTest3.jav"); testFiles.add("Usecase_MUBTest4.jav"); testFiles.add("Usecase_MUBTest5.jav"); testFiles.add("Usecase_MUBTest6.jav"); testFiles.add("Usecase_MUBTest.jav"); testFiles.add("UsecaseNine_pl.jav"); testFiles.add("UsecaseOne_pl.jav"); testFiles.add("UsecaseSeven_pl.jav"); testFiles.add("UsecaseSix_pl.jav"); testFiles.add("UsecaseTen_pl.jav"); testFiles.add("UsecaseThree_pl.jav"); testFiles.add("UsecaseThree_pl.orig.jav"); testFiles.add("UsecaseTwo_pl.jav"); testFiles.add("ZweiKlassen.jav"); //*/ for(String file : testFiles){ System.out.println("Testfile: "+file); Tester.test(file, new Menge()); } } }