package com.revolsys.elevation.gridded.test; import java.io.IOException; import java.nio.file.Files; import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; import java.util.List; import org.junit.Assert; import org.junit.Test; import com.revolsys.elevation.gridded.GriddedElevationModel; import com.revolsys.elevation.gridded.compactbinary.CompactBinaryGriddedElevation; import com.revolsys.elevation.gridded.compactbinary.CompactBinaryGriddedElevationModelFile; import com.revolsys.geometry.model.GeometryFactory; import com.revolsys.util.Dates; import com.revolsys.util.Exceptions; import com.revolsys.util.WrappedException; public class CompactBinaryGriddedElevationModelTest extends GriddedElevationModelTest { @Override public List<String> getFileExtensions() { return Arrays.asList(CompactBinaryGriddedElevation.FILE_EXTENSION, CompactBinaryGriddedElevation.FILE_EXTENSION_GZ, CompactBinaryGriddedElevation.FILE_EXTENSION_ZIP); } @Test public void test200RandomAccess() { final long time = System.currentTimeMillis(); final GriddedElevationModel model = GriddedElevationModelTest .newIntArrayModelNaNOnDiagonal(3005); final String filePath = "target/test/elevation/nanDiagonal.demcb"; writeModel(model, filePath); try ( final CompactBinaryGriddedElevationModelFile actualModel = new CompactBinaryGriddedElevationModelFile( Paths.get(filePath))) { assertModelEquals(model, actualModel); } System.out .println("test200RandomAccess\t" + Dates.toEllapsedTime(time, System.currentTimeMillis())); } @Test public void test201RandomAccessMissingError() { final String filePath = "target/test/elevation/missingError.demcb"; try ( final CompactBinaryGriddedElevationModelFile actualModel = new CompactBinaryGriddedElevationModelFile( Paths.get(filePath))) { Assert.fail("Missing file should throw an exception"); } catch (final WrappedException e) { final Throwable cause = Exceptions.unwrap(e); if (cause instanceof NoSuchFileException) { // Expected result } else { throw e; } } } @Test public void test203RandomAccessMissingCreateEmpty() throws IOException { final String filePath = "target/test/elevation/missingCreateEmpty.demcb"; final Path path = Paths.get(filePath); Files.deleteIfExists(path); final GeometryFactory geometryFactory = GeometryFactory.fixed(3005, 3, 1000.0, 1000.0, 1000.0); final GriddedElevationModel expectedModel = GriddedElevationModelTest .newIntArrayModelEmpty(3005); try ( final CompactBinaryGriddedElevationModelFile actualModel = new CompactBinaryGriddedElevationModelFile( path, geometryFactory, 0, 0, 255, 255, 1)) { assertModelEquals(expectedModel, actualModel); } final GriddedElevationModel actualModel = GriddedElevationModel.newGriddedElevationModel(path); assertModelEquals(expectedModel, actualModel); } @Test public void test203RandomAccessMissingCreateValues() throws IOException { final String filePath = "target/test/elevation/missingCreateEmpty.demcb"; final Path path = Paths.get(filePath); Files.deleteIfExists(path); final GeometryFactory geometryFactory = GeometryFactory.fixed(3005, 3, 1000.0, 1000.0, 1000.0); final GriddedElevationModel expectedModel = GriddedElevationModelTest .newIntArrayModelNaNOnDiagonal(3005); try ( final CompactBinaryGriddedElevationModelFile actualModel = new CompactBinaryGriddedElevationModelFile( path, geometryFactory, 0, 0, 255, 255, 1)) { actualModel.setElevations(expectedModel); assertModelEquals(expectedModel, actualModel); } final GriddedElevationModel actualModel = GriddedElevationModel.newGriddedElevationModel(path); assertModelEquals(expectedModel, actualModel); } }