package com.plectix.simulator.parser; import java.io.File; import java.io.PrintWriter; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import com.plectix.simulator.Initializator; import com.plectix.simulator.TestRunner; import com.plectix.simulator.parser.abstractmodel.KappaModel; import com.plectix.simulator.parser.abstractmodel.reader.KappaModelCreator; import com.plectix.simulator.simulator.SimulationArguments; import com.plectix.simulator.util.Failer; import com.plectix.simulator.util.FileComparator; public class TestParser extends TestRunner { private static final String ABSTRACT = "abstract"; private static final String myTestFileNamePrefix = RunParserTests .getFileNamePrefix(); private static final String separator = File.separator; private static final String resultsDir = myTestFileNamePrefix + "results" + separator; private static final String sourceDir = myTestFileNamePrefix + "source" + separator; private static final String compareDir = myTestFileNamePrefix + "compare" + separator; private static final String fileWithPerturbations = "perturbations" + DEFAULT_EXTENSION_FILE; private static final String fileWithStories = "stories" + DEFAULT_EXTENSION_FILE; private boolean isStorify; private void prepareResult(String fileName, boolean isStorify) throws Exception { PrintWriter pw = null; try { // SimulationData simulationData = new SimulationData(); // OperationManager manager = new OperationManager(simulationData.getKappaSystem()); // KappaFile kf = manager.perform(new KappaFileLoadingOperation(simulationData)); KappaFile kf = (new KappaFileReader(sourceDir + fileName, true)).parse(); SimulationArguments args = Initializator .prepareDefaultArguments(sourceDir + fileName, null); KappaModel model = new KappaModelCreator(args).createModel(kf); pw = new PrintWriter(resultsDir + ABSTRACT + fileName); pw.print(model.toString()); pw.close(); TestSimulationData dataTest = new TestSimulationData(model, isStorify); dataTest.build(); pw = new PrintWriter(resultsDir + fileName); pw.print(dataTest.getData()); } catch (DocumentFormatException e) { e.printStackTrace(); junit.framework.Assert.fail(e.getMessage()); } finally { if (pw != null) { pw.close(); } } } @BeforeClass public static void init() { File resultDir = new File(resultsDir); resultDir.mkdir(); } @Before public void parseFile() { try { isStorify = false; prepareResult(fileWithPerturbations, isStorify); isStorify = true; prepareResult(fileWithStories, isStorify); } catch (Exception e) { e.printStackTrace(); Assert.fail(e.getMessage()); } } private void test(String fileName) { Failer failer = new Failer(); int line; try { line = new FileComparator(compareDir + fileName, resultsDir + fileName).compare(); if (line != -1) { failer.fail("Files differ in line " + line); } } catch (Exception e) { failer.fail(e.getMessage()); } } @Test public void testAbstractPerturbations() { String fileName = ABSTRACT + fileWithPerturbations; test(fileName); } @Test public void testAbstractStory() { String fileName = ABSTRACT + fileWithStories; test(fileName); } // TODO: THINKING... // @Test // public void testPerturbations() { // String fileName = fileWithPerturbations; // test(fileName); // // } @Test public void testStory() { String fileName = fileWithStories; test(fileName); } // @AfterClass public static void clear() { String dirName = resultsDir; File fileDir = new File(dirName); for (String fileName : fileDir.list()) { (new File(fileName)).delete(); } } }