mirror of
https://github.com/protomaps/PMTiles.git
synced 2026-02-04 10:51:07 +00:00
python client: implement v3 directory serialization/deserialization
This commit is contained in:
@@ -1,5 +1,30 @@
|
||||
import unittest
|
||||
from pmtiles.tile import zxy_to_tileid, tileid_to_zxy, Entry, find_tile
|
||||
from pmtiles.tile import zxy_to_tileid, tileid_to_zxy, Entry
|
||||
from pmtiles.tile import read_varint, write_varint
|
||||
from pmtiles.tile import Entry, find_tile
|
||||
from pmtiles.tile import serialize_directory, deserialize_directory
|
||||
import io
|
||||
|
||||
|
||||
class TestVarint(unittest.TestCase):
|
||||
def test_read_varint(self):
|
||||
buf = io.BytesIO(b"\x00\x01\x7f\xe5\x8e\x26")
|
||||
self.assertEqual(read_varint(buf), 0)
|
||||
self.assertEqual(read_varint(buf), 1)
|
||||
self.assertEqual(read_varint(buf), 127)
|
||||
self.assertEqual(read_varint(buf), 624485)
|
||||
|
||||
def test_read_varint_eof(self):
|
||||
buf = io.BytesIO(b"")
|
||||
self.assertRaises(EOFError, read_varint, buf)
|
||||
|
||||
def test_write_varint(self):
|
||||
buf = io.BytesIO()
|
||||
write_varint(buf, 0)
|
||||
write_varint(buf, 1)
|
||||
write_varint(buf, 127)
|
||||
write_varint(buf, 624485)
|
||||
self.assertEqual(buf.getvalue(), b"\x00\x01\x7f\xe5\x8e\x26")
|
||||
|
||||
|
||||
class TestTileId(unittest.TestCase):
|
||||
@@ -58,3 +83,23 @@ class TestFindTile(unittest.TestCase):
|
||||
result = find_tile(entries, 150)
|
||||
self.assertEqual(result.offset, 1)
|
||||
self.assertEqual(result.length, 1)
|
||||
|
||||
|
||||
class TestDirectory(unittest.TestCase):
|
||||
def test_roundtrip(self):
|
||||
entries = [Entry(0, 0, 0, 0), Entry(1, 1, 1, 1), Entry(2, 2, 2, 2)]
|
||||
serialized = serialize_directory(entries)
|
||||
result = deserialize_directory(serialized)
|
||||
self.assertEqual(len(result), 3)
|
||||
self.assertEqual(result[0].tile_id, 0)
|
||||
self.assertEqual(result[0].offset, 0)
|
||||
self.assertEqual(result[0].length, 0)
|
||||
self.assertEqual(result[0].run_length, 0)
|
||||
self.assertEqual(result[1].tile_id, 1)
|
||||
self.assertEqual(result[1].offset, 1)
|
||||
self.assertEqual(result[1].length, 1)
|
||||
self.assertEqual(result[1].run_length, 1)
|
||||
self.assertEqual(result[2].tile_id, 2)
|
||||
self.assertEqual(result[2].offset, 2)
|
||||
self.assertEqual(result[2].length, 2)
|
||||
self.assertEqual(result[2].run_length, 2)
|
||||
|
||||
Reference in New Issue
Block a user