package plugindevelopment;

import java.io.File;
import java.io.IOException;
import de.dhbwstuttgart.typeinference.Menge;

import junit.framework.TestCase;

import org.junit.Test;

import de.dhbwstuttgart.core.MyCompiler;
import de.dhbwstuttgart.core.MyCompilerAPI;
import de.dhbwstuttgart.parser.JavaParser.yyException;
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet;

public class TypeInsertSetEqualTest {


	private static final String TEST_FILE = "TypeInsertSetEqualTest.jav";
	
	@Test
	public void run(){
			String inferedSource = "";
			MyCompilerAPI compiler = MyCompiler.getAPI();
			try {
				compiler.parse(new File(TypeInsertTester.rootDirectory + TEST_FILE));
				Menge<TypeinferenceResultSet> results = compiler.typeReconstruction();
				//TestCase.assertTrue("Es darf nicht mehr als eine Lösungsmöglichkeit geben und nicht "+results.size(), results.size()==1);
				Menge<TypeInsertSet> insertSets = new Menge<TypeInsertSet>();
				for(TypeinferenceResultSet result : results){
					TypeInsertSet point = result.getTypeInsertionPoints();
					if(!insertSets.contains(point))insertSets.add(point);
					//TestCase.assertTrue("Es muss mindestens ein TypeInsertSet vorhanden sein", points.size()>0);
					
				}
				if(insertSets.size()!=1){
					TestCase.fail("Es darf nur ein TypeInsertSet geben und nicht "+insertSets.size());
				}
				
			} catch (IOException | yyException e) {
				e.printStackTrace();
				TestCase.fail();
			}
		
	}
	
}