refactor python reader to take a get_bytes function; add reader tests [#38]

This commit is contained in:
Brandon Liu
2022-04-26 16:15:03 +08:00
parent adb6f896a3
commit 3944d27833
4 changed files with 79 additions and 39 deletions

View File

@@ -0,0 +1,32 @@
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, 7)
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(1, 1, 1, b"3")
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.version, 2)
self.assertEqual(reader.root_entries, 6)
self.assertEqual(reader.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(1, 1, 1), b"3")
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")