planetiler/planetiler-core/src/test/java/com/onthegomap/planetiler/stream/ReadableJsonStreamArchiveTe...

53 wiersze
2.0 KiB
Java

package com.onthegomap.planetiler.stream;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import com.onthegomap.planetiler.TestUtils;
import com.onthegomap.planetiler.archive.Tile;
import com.onthegomap.planetiler.config.Arguments;
import com.onthegomap.planetiler.geo.TileCoord;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
class ReadableJsonStreamArchiveTest {
@Test
void testSimple(@TempDir Path tempDir) throws IOException {
final Path jsonFile = tempDir.resolve("in.json");
final String json = """
{"type":"initialization"}
{"type":"tile","x":0,"y":0,"z":0,"encodedData":"AA=="}
{"type":"tile","x":1,"y":2,"z":3,"encodedData":"AQ=="}
{"type":"finish","metadata":%s}
""".formatted(TestUtils.MAX_METADATA_SERIALIZED);
Files.writeString(jsonFile, json);
final StreamArchiveConfig config = new StreamArchiveConfig(false, Arguments.of());
final List<Tile> expectedTiles = List.of(
new Tile(TileCoord.ofXYZ(0, 0, 0), new byte[]{0}),
new Tile(TileCoord.ofXYZ(1, 2, 3), new byte[]{1})
);
try (var reader = ReadableJsonStreamArchive.newReader(jsonFile, config)) {
try (var s = reader.getAllTiles().stream()) {
assertEquals(expectedTiles, s.toList());
}
try (var s = reader.getAllTiles().stream()) {
assertEquals(expectedTiles, s.toList());
}
assertEquals(TestUtils.MAX_METADATA_DESERIALIZED, reader.metadata());
assertEquals(TestUtils.MAX_METADATA_DESERIALIZED, reader.metadata());
assertArrayEquals(expectedTiles.get(1).bytes(), reader.getTile(TileCoord.ofXYZ(1, 2, 3)));
assertArrayEquals(expectedTiles.get(0).bytes(), reader.getTile(0, 0, 0));
assertNull(reader.getTile(4, 5, 6));
}
}
}