package com.plectix.simulator.perturbations;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collection;
import java.util.Map;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runners.Parameterized.Parameters;
import com.plectix.simulator.OperationModeCollectionGenerator;
import com.plectix.simulator.parser.SimulationDataFormatException;
import com.plectix.simulator.staticanalysis.Rule;
import com.plectix.simulator.util.Failer;
import com.plectix.simulator.util.QuantityDataParser;
public class TestTimeCondition extends TestPerturbation {
private static final String separator = File.separator;
private static final String myPrefixFileName = "test.data" + separator
+ "perturbations" + separator;
private String myTestFileName = "";
private final Failer myFailer = new Failer();
private Rule myActiveRule;
private static Map<String, Integer> myExpectedData;
@BeforeClass
public static void initialize() throws FileNotFoundException, SimulationDataFormatException, IOException {
myExpectedData = (new QuantityDataParser(myPrefixFileName + "RateData"
+ DEFAULT_EXTENSION_FILE)).parse();
}
public TestTimeCondition(String fileName, Integer opMode) {
super(fileName, opMode);
myTestFileName = fileName;
myFailer.loadTestFile(myTestFileName);
}
@Parameters
public static Collection<Object[]> regExValues() {
return OperationModeCollectionGenerator
.generate(getAllTestFileNames(myPrefixFileName),true);
}
@Override
public String getPrefixFileName() {
return myPrefixFileName;
}
@Override
public void init() {
}
@Test
public void test() {
myActiveRule = getRuleByName("rule");
double rate = myActiveRule.getRate();
if (myExpectedData.get(myTestFileName) == null) {
myFailer.fail("Unhandled test " + myTestFileName);
} else {
double expected = myExpectedData.get(myTestFileName);
myFailer.assertDoubleEquals("Rule rate", expected, rate);
}
}
}