package strucTypes5;

import de.dhbwstuttgart.parser.JavaTXParser;
import de.dhbwstuttgart.strucTypes5.algo.TI;
import de.dhbwstuttgart.strucTypes5.assumptions.AssumptionMap;
import de.dhbwstuttgart.syntaxtree.ClassOrInterface;
import de.dhbwstuttgart.syntaxtree.SourceFile;
import org.junit.Test;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

/**
 *
 * Test soll prüfen ob bei einem Aufruf von zwei mal der gleichen Klasse unterschiedlich neue Typvariablen vergeben werden
 *
 *
 */
public class NewOperatorTest3 {
	private static final String rootDirectory = System.getProperty("user.dir") + "/test/strucTypes5/";

	@Test
	public void run() {


		List<String> filenames = new ArrayList<String>();
		filenames.add("NewOperatorTest3.jav");

		JavaTXParser parser = new JavaTXParser();
		try {
			for (String filename : filenames) {

				System.out.println("Teste: " + filename);

				SourceFile sf = parser.parse(new File(rootDirectory + filename));

				SourceFile sfdebug = sf;

				ClassOrInterface mainClass = sf.getClasses().get(0);
				ClassOrInterface aClass = sf.getClasses().get(1);


				AssumptionMap assumptionMap = new AssumptionMap();

				TI ti = new TI(assumptionMap, aClass);

				TI ti1 = new TI(ti.assresult, mainClass);

			}

		} catch (Exception exc) {
			exc.printStackTrace();
			fail();
		}
		assertTrue("Tests durchlaufen", filenames.size() > 0);
	}
}
