package uk.ac.ox.zoo.seeg.abraid.mp.modeloutputhandler.web; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.DiseaseExtentClass; import uk.ac.ox.zoo.seeg.abraid.mp.common.service.core.DiseaseService; import uk.ac.ox.zoo.seeg.abraid.mp.common.util.raster.RasterUtils; import java.io.File; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** * Tests the ModelOutputRasterMaskingHelper class. * Copyright (c) 2015 University of Oxford */ public class ModelOutputRasterMaskingHelperTest { private static final String TEST_DATA_PATH = "ModelOutputHandler/test/uk/ac/ox/zoo/seeg/abraid/mp/modeloutputhandler/web/testdata"; @Rule public TemporaryFolder testFolder = new TemporaryFolder(); ///CHECKSTYLE:SUPPRESS VisibilityModifier @Test public void maskRasterCorrectlyAppliesExtentAndWaterBodiesMask() throws Exception { // Arrange File extentRasterFile = new File(TEST_DATA_PATH, "extent.tif"); File waterBodiesRasterFile = new File(TEST_DATA_PATH, "waterbodies.tif"); File expectedOutputMeanRasterFile = new File(TEST_DATA_PATH, "mean_prediction.tif"); File inputMeanRasterFile = new File(TEST_DATA_PATH, "mean_prediction_full.tif"); File outputMeanRasterFile = new File(testFolder.getRoot().getAbsolutePath(), "mean_prediction_out.tif"); File inputUncertaintyRasterFile = new File(TEST_DATA_PATH, "prediction_uncertainty_full.tif"); File expectedOutputUncertaintyRasterFile = new File(TEST_DATA_PATH, "prediction_uncertainty.tif"); File outputUncertaintyRasterFile = new File(testFolder.getRoot().getAbsolutePath(), "prediction_uncertainty_out.tif"); DiseaseService mockDiseaseService = mock(DiseaseService.class); WaterBodiesMaskRasterFileLocator mockWaterBodiesMaskRasterFileLocator = mock(WaterBodiesMaskRasterFileLocator.class); DiseaseExtentClass mockAbsenceDiseaseExtentClass = mock(DiseaseExtentClass.class); when(mockWaterBodiesMaskRasterFileLocator.getFile()).thenReturn(waterBodiesRasterFile); when(mockDiseaseService.getDiseaseExtentClass(DiseaseExtentClass.ABSENCE)).thenReturn(mockAbsenceDiseaseExtentClass); when(mockAbsenceDiseaseExtentClass.getWeighting()).thenReturn(-100); ModelOutputRasterMaskingHelper target = new ModelOutputRasterMaskingHelper(mockDiseaseService, mockWaterBodiesMaskRasterFileLocator); // Act target.maskRaster(outputMeanRasterFile, inputMeanRasterFile, extentRasterFile, 0); target.maskRaster(outputUncertaintyRasterFile, inputUncertaintyRasterFile, extentRasterFile, RasterUtils.UNKNOWN_VALUE); // Assert assertThat(outputMeanRasterFile).hasContentEqualTo(expectedOutputMeanRasterFile); assertThat(outputUncertaintyRasterFile).hasContentEqualTo(expectedOutputUncertaintyRasterFile); } }