package com.plectix.simulator.commandline; import java.io.File; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import junit.framework.Assert; import org.junit.Test; import com.plectix.simulator.controller.SimulatorInputData; import com.plectix.simulator.parser.EasyReader; import com.plectix.simulator.simulator.Simulator; import com.plectix.simulator.simulator.SimulatorCommandLine; import com.plectix.simulator.simulator.api.OperationType; import com.plectix.simulator.simulator.api.steps.AbstractOperation; import com.plectix.simulator.simulator.api.steps.CommandLineDefinedWorkflow; @SuppressWarnings("serial") public class TestCommandLineHandling { @Test public void test() throws Exception { String dataDirectory = "test.data" + File.separator + "commandLine" + File.separator; EasyReader linesFileReader = new EasyReader(dataDirectory + "commandLines.test"); EasyReader operationsFileReader = new EasyReader(dataDirectory + "operations.test"); String line = linesFileReader.getLine(); String operations = operationsFileReader.getLine(); while (line != null && operations != null) { String[] commandLineArgs = line.split(" "); String[] operationModeifiers = operations.split(", "); testCommandLine(commandLineArgs, operationModeifiers); line = linesFileReader.getLine(); operations = operationsFileReader.getLine(); } } private void testCommandLine(String[] commandLine, String[] operations) throws Exception { Set<String> operationsSet = new HashSet<String>(); for (String operation : operations) { operationsSet.add(operation); } Assert.assertEquals(operationsSet, operationsToStrings(this.getResult(commandLine))); } private final Set<String> operationsToStrings(Set<OperationType> set) { Set<String> result = new HashSet<String>(); for (OperationType operation : set) { result.add(operation.name()); } return result; } private Set<OperationType> getResult(String[] commandLineArgs) throws Exception { SimulatorCommandLine commandLine = new SimulatorCommandLine(commandLineArgs); SimulatorInputData inputData = new SimulatorInputData(commandLine.getSimulationArguments()); final List<AbstractOperation<?>> list = new CommandLineDefinedWorkflow(new Simulator(), inputData).checkoutOperationsSet(); Set<OperationType> set = new LinkedHashSet<OperationType>() {{ for (AbstractOperation<?> operation : list) { add(operation.getType()); } }}; return set; } }