Merge pull request #206 from protomaps/python-writer-improvements

python writer improvements
This commit is contained in:
Brandon Liu
2023-06-23 11:39:51 +08:00
committed by GitHub
5 changed files with 76 additions and 41 deletions

View File

@@ -1,30 +0,0 @@
import unittest
from io import BytesIO
from pmtiles.writer import Writer
from pmtiles.reader import Reader, MemorySource
class TestReader(unittest.TestCase):
def test_roundtrip(self):
buf = BytesIO()
# writer = Writer(buf, 5)
# writer.write_tile(1, 0, 0, b"0")
# writer.write_tile(1, 0, 1, b"1")
# writer.write_tile(1, 1, 0, b"2")
# writer.write_tile(2, 0, 0, b"4")
# writer.write_tile(3, 0, 0, b"5")
# writer.write_tile(2, 0, 1, b"6")
# writer.write_tile(3, 0, 2, b"7")
# writer.finalize({"key": "value"})
# reader = Reader(MemorySource(buf.getvalue()))
# self.assertEqual(reader.header().version, 2)
# self.assertEqual(reader.header().metadata["key"], "value")
# self.assertEqual(reader.get(1, 0, 0), b"0")
# self.assertEqual(reader.get(1, 0, 1), b"1")
# self.assertEqual(reader.get(1, 1, 0), b"2")
# self.assertEqual(reader.get(2, 0, 0), b"4")
# self.assertEqual(reader.get(3, 0, 0), b"5")
# self.assertEqual(reader.get(2, 0, 1), b"6")
# self.assertEqual(reader.get(3, 0, 2), b"7")
# self.assertEqual(reader.get(1, 1, 1), None)

View File

@@ -0,0 +1,48 @@
import unittest
from io import BytesIO
from pmtiles.writer import Writer
from pmtiles.reader import Reader, MemorySource
from pmtiles.tile import Compression, TileType, tileid_to_zxy, zxy_to_tileid
class TestReaderWriter(unittest.TestCase):
def test_roundtrip(self):
buf = BytesIO()
writer = Writer(buf)
writer.write_tile(zxy_to_tileid(0, 0, 0), b"1")
writer.write_tile(zxy_to_tileid(1, 0, 0), b"2")
writer.write_tile(zxy_to_tileid(2, 0, 0), b"3")
writer.finalize(
{
"tile_compression": Compression.UNKNOWN,
"tile_type": TileType.UNKNOWN,
},
{"key": "value"},
)
reader = Reader(MemorySource(buf.getvalue()))
self.assertEqual(reader.header()["version"], 3)
self.assertEqual(reader.header()["min_zoom"], 0)
self.assertEqual(reader.header()["max_zoom"], 2)
self.assertEqual(reader.header()["clustered"], True)
self.assertEqual(reader.metadata()["key"], "value")
self.assertEqual(reader.get(0, 0, 0), b"1")
self.assertEqual(reader.get(1, 0, 0), b"2")
self.assertEqual(reader.get(2, 0, 0), b"3")
self.assertEqual(reader.get(3, 0, 0), None)
def test_roundtrip_unclustered(self):
buf = BytesIO()
writer = Writer(buf)
writer.write_tile(zxy_to_tileid(1, 0, 0), b"2")
writer.write_tile(zxy_to_tileid(0, 0, 0), b"1")
writer.finalize(
{
"tile_compression": Compression.UNKNOWN,
"tile_type": TileType.UNKNOWN,
},
{},
)
reader = Reader(MemorySource(buf.getvalue()))
self.assertEqual(reader.header()["clustered"], False)

View File

@@ -1 +0,0 @@
import unittest