package uk.ac.ox.zoo.seeg.abraid.mp.modelwrapper.config.run;
import org.joda.time.DateTimeUtils;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import uk.ac.ox.zoo.seeg.abraid.mp.modelwrapper.config.ModelWrapperConfigurationService;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
/**
* Tests for RunConfigurationFactoryImpl.
* Copyright (c) 2014 University of Oxford
*/
public class RunConfigurationFactoryTest {
@Rule
public TemporaryFolder testFolder = new TemporaryFolder(); ///CHECKSTYLE:SUPPRESS VisibilityModifier
@Test
public void createDefaultConfigurationUsesCorrectDefaults() throws Exception {
// Arrange
DateTimeUtils.setCurrentMillisFixed(0);
ModelWrapperConfigurationService configurationService = mock(ModelWrapperConfigurationService.class);
RunConfigurationFactory target = new RunConfigurationFactoryImpl(configurationService);
when(configurationService.getCacheDirectory()).thenReturn("expectation1");
setupExpectedExecutionConfiguration(configurationService);
when(configurationService.getDeleteWorkspaces()).thenReturn(true);
String expectedRunName = "name123";
// Act
RunConfiguration result = target.createDefaultConfiguration(expectedRunName);
// Assert
assertThat(result.getRunName()).isEqualTo(expectedRunName);
assertThat(result.getBaseDir().getParentFile().getName()).isEqualTo("expectation1");
assertThat(result.getBaseDir().getName()).isEqualTo("runs");
assertThat(result.getDeleteWorkspace()).isEqualTo(true);
assertCorrectExecutionConfiguration(result.getExecutionConfig());
}
private void setupExpectedExecutionConfiguration(ModelWrapperConfigurationService configurationService) throws Exception {
when(configurationService.getRExecutablePath()).thenReturn("rPath");
when(configurationService.getMaxModelRunDuration()).thenReturn(1234);
}
private void assertCorrectExecutionConfiguration(ExecutionRunConfiguration result) {
assertThat(result.getRPath().toString()).isEqualTo("rPath");
assertThat(result.getMaxRuntime()).isEqualTo(1234);
}
}