/**
* Copyright 2014 VU University Medical Center.
* Licensed under the Apache License version 2.0 (see http://www.apache.org/licenses/LICENSE-2.0.html).
*/
package nl.vumc.biomedbridges.examples;
import com.google.inject.Guice;
import com.google.inject.Injector;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import nl.vumc.biomedbridges.core.Constants;
import nl.vumc.biomedbridges.core.FileUtils;
import nl.vumc.biomedbridges.core.TestGuiceModule;
import nl.vumc.biomedbridges.core.Workflow;
import nl.vumc.biomedbridges.core.WorkflowFactory;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* Unit tests for the ConcatenateExample class.
*
* @author <a href="mailto:f.debruijn@vumc.nl">Freek de Bruijn</a>
*/
public class ConcatenateExampleTest {
/**
* Test the concatenate example under normal circumstances.
*/
@Test
public void testConcatenateExampleNormal() {
final String line1 = ConcatenateExample.LINE_TEST_FILE_1;
final String line2 = ConcatenateExample.LINE_TEST_FILE_2;
final ConcatenateExample concatenateExample = initializeConcatenateExample(true, line1, line2);
assertTrue(concatenateExample.runExample(Constants.CENTRAL_GALAXY_URL));
}
/**
* Test the concatenate example when no output is generated.
*/
@Test
public void testConcatenateExampleNoOutput() {
final ConcatenateExample concatenateExample = initializeConcatenateExample(false, null, null);
assertFalse(concatenateExample.runExample(Constants.CENTRAL_GALAXY_URL));
}
/**
* Test the concatenate example when invalid output is generated.
*/
@Test
public void testConcatenateExampleInvalidOutput() {
final String line1 = ConcatenateExample.LINE_TEST_FILE_1 + " - something";
final String line2 = ConcatenateExample.LINE_TEST_FILE_2 + " - is wrong!";
final ConcatenateExample concatenateExample = initializeConcatenateExample(true, line1, line2);
assertFalse(concatenateExample.runExample(Constants.CENTRAL_GALAXY_URL));
}
/**
* Create and initialize a concatenate example instance.
*
* @param generateOutput whether an output file should be generated.
* @param line1 the first output line.
* @param line2 the second output line.
* @return the concatenate example instance.
*/
private ConcatenateExample initializeConcatenateExample(final boolean generateOutput, final String line1,
final String line2) {
// Create a Guice injector and use it to build the ConcatenateExample object.
final Injector injector = Guice.createInjector(new TestGuiceModule());
final ConcatenateExample concatenateExample = injector.getInstance(ConcatenateExample.class);
if (generateOutput)
addOutputFileToOutputMap(concatenateExample.workflowFactory, line1, line2);
return concatenateExample;
}
/**
* Add a temporary output file to the output map of the dummy workflow.
*
* @param workflowFactory the workflow factory.
* @param line1 the first output line.
* @param line2 the second output line.
*/
private void addOutputFileToOutputMap(final WorkflowFactory workflowFactory, final String line1, final String line2) {
final List<String> dummyLines = new ArrayList<>();
dummyLines.add(line1);
dummyLines.add(line2);
final File temporaryOutputFile = FileUtils.createTemporaryFile(dummyLines.toArray(new String[dummyLines.size()]));
final Workflow workflow = workflowFactory.getWorkflow(null, null, Constants.CONCATENATE_WORKFLOW);
workflow.addOutput(ConcatenateExample.OUTPUT_NAME_12, temporaryOutputFile);
}
}