package com.plectix.simulator.miscellaneous; import static org.junit.Assert.assertTrue; import java.io.File; import java.util.Collection; import org.apache.commons.cli.ParseException; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import com.plectix.simulator.FileNameCollectionGenerator; import com.plectix.simulator.Initializator; import com.plectix.simulator.OperationModeCollectionGenerator; import com.plectix.simulator.controller.SimulatorInputData; import com.plectix.simulator.io.SimulationDataReader; import com.plectix.simulator.simulator.SimulationArguments; import com.plectix.simulator.simulator.SimulationData; import com.plectix.simulator.simulator.Simulator; import com.plectix.simulator.staticanalysis.observables.Observables; import com.plectix.simulator.util.DefaultPropertiesForTest; import com.plectix.simulator.util.Info.InfoType; @RunWith(value = Parameterized.class) public class TestInitTime extends DefaultPropertiesForTest { private static final String separator = File.separator; private static final String testDirectory = "test.data" + separator + "initTime" + separator; private String prefixFileName = ""; private Simulator simulator; private final Double[] initTimes = { -1.0, 1.0, 1.213 }; private final Integer operationMode; @Parameters public static Collection<Object[]> data() { Collection<Object[]> fileNames = FileNameCollectionGenerator .getAllFileNames(testDirectory); return OperationModeCollectionGenerator.generate(fileNames,true); } public TestInitTime(String filename, Integer opMode) { prefixFileName = filename; operationMode = opMode; } @Test public void test() throws Exception { try{ for (int i = 0; i < initTimes.length; i++) { setup(initTimes[i]); Observables observables = simulator.getSimulationData() .getKappaSystem().getObservables(); Double time = observables.getCountTimeList().get(0).getTime(); String message = "initTime = " + initTimes[i] + "\nfirstTime = " + time + "\n"; assertTrue(message, !initTimes[i].equals(-1.0) ? initTimes[i] .equals(time) : time.equals(0.0)); }} catch (Exception e) { assertTrue("" + prefixFileName + " " + operationMode, !simulator.getSimulationData() .getKappaSystem().getObservables().getCountTimeList().isEmpty()); throw e; } } public void setup(Double initTime) throws Exception { init(testDirectory + prefixFileName, initTime); try { simulator.run(new SimulatorInputData(simulator.getSimulationData() .getSimulationArguments())); } catch (Exception e) { e.printStackTrace(); junit.framework.Assert.fail(e.getMessage()); } } public void init(String filePath, Double initTime) throws Exception { simulator = null; simulator = new Simulator(); SimulationData simulationData = simulator.getSimulationData(); SimulationArguments args = null; try { args = Initializator.prepareInitTimeArguments(filePath, initTime, operationMode); } catch (ParseException e) { e.printStackTrace(); throw new IllegalArgumentException(e); } simulationData.setSimulationArguments(InfoType.OUTPUT, args); (new SimulationDataReader(simulationData)).readAndCompile(); simulationData.getKappaSystem().initialize(); } }