package uk.ac.ox.zoo.seeg.abraid.mp.common.web; import org.joda.time.DateTime; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.DiseaseGroup; import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.ModelRun; import java.io.File; import java.io.IOException; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** * Tests the RasterFilePathFactory class. * Copyright (c) 2014 University of Oxford */ public class RasterFilePathFactoryTest { @Rule public TemporaryFolder testFolder = new TemporaryFolder(); ///CHECKSTYLE:SUPPRESS VisibilityModifier private RasterFilePathFactory builder; private String adminDirectory; private String resultsDirectory; @Before public void setUp() throws IOException { resultsDirectory = getResultsDirectory(); this.adminDirectory = getAdminDirectory(); builder = new RasterFilePathFactory(new File(resultsDirectory), new File(adminDirectory)); } @Test public void getFullMeanPredictionRasterFileReturnsCorrectFile() throws IOException { ModelRun modelRun = new ModelRun("testname", createMockDiseaseGroup(87), "host", DateTime.now(), DateTime.now(), DateTime.now()); File file = builder.getFullMeanPredictionRasterFile(modelRun); assertThat(file.getName()).isEqualTo("testname_mean_full.tif"); assertThat(file.getParent()).isEqualTo(resultsDirectory); } @Test public void getMaskedMeanPredictionRasterFileReturnsCorrectFile() throws IOException { ModelRun modelRun = new ModelRun("testname", createMockDiseaseGroup(87), "host", DateTime.now(), DateTime.now(), DateTime.now()); File file = builder.getMaskedMeanPredictionRasterFile(modelRun); assertThat(file.getName()).isEqualTo("testname_mean.tif"); assertThat(file.getParent()).isEqualTo(resultsDirectory); } @Test public void getFullPredictionUncertaintyRasterFileReturnsCorrectFile() throws IOException { ModelRun modelRun = new ModelRun("testname", createMockDiseaseGroup(87), "host", DateTime.now(), DateTime.now(), DateTime.now()); File file = builder.getFullPredictionUncertaintyRasterFile(modelRun); assertThat(file.getName()).isEqualTo("testname_uncertainty_full.tif"); assertThat(file.getParent()).isEqualTo(resultsDirectory); } @Test public void getMaskedPredictionUncertaintyRasterFileReturnsCorrectFile() throws IOException { ModelRun modelRun = new ModelRun("testname", createMockDiseaseGroup(87), "host", DateTime.now(), DateTime.now(), DateTime.now()); File file = builder.getMaskedPredictionUncertaintyRasterFile(modelRun); assertThat(file.getName()).isEqualTo("testname_uncertainty.tif"); assertThat(file.getParent()).isEqualTo(resultsDirectory); } @Test public void getExtentInputRasterFileReturnsCorrectFile() throws IOException { ModelRun modelRun = new ModelRun("testname", createMockDiseaseGroup(87), "host", DateTime.now(), DateTime.now(), DateTime.now()); File file = builder.getExtentInputRasterFile(modelRun); assertThat(file.getName()).isEqualTo("testname_extent.tif"); assertThat(file.getParent()).isEqualTo(resultsDirectory); } @Test public void getExtentAdminRasterFileReturnsCorrectFile() throws IOException { File file = builder.getAdminRaster(0); assertThat(file.getName()).isEqualTo("admin0qc.tif"); assertThat(file.getParent()).isEqualTo(adminDirectory); file = builder.getAdminRaster(1); assertThat(file.getName()).isEqualTo("admin1qc.tif"); assertThat(file.getParent()).isEqualTo(adminDirectory); file = builder.getAdminRaster(2); assertThat(file.getName()).isEqualTo("admin2qc.tif"); assertThat(file.getParent()).isEqualTo(adminDirectory); } private String getResultsDirectory() throws IOException { return testFolder.newFolder().getAbsolutePath(); } private String getAdminDirectory() throws IOException { return testFolder.newFolder().getAbsolutePath(); } private DiseaseGroup createMockDiseaseGroup(int id) { DiseaseGroup mock = mock(DiseaseGroup.class); when(mock.getId()).thenReturn(id); return mock; } }