MCPcopy Create free account
hub / github.com/protomaps/PMTiles / TestReaderWriter

Class TestReaderWriter

python/pmtiles/test/test_reader_writer.py:8–70  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6
7
8class TestReaderWriter(unittest.TestCase):
9 def test_roundtrip(self):
10 buf = BytesIO()
11 writer = Writer(buf)
12 writer.write_tile(zxy_to_tileid(0, 0, 0), b"1")
13 writer.write_tile(zxy_to_tileid(1, 0, 0), b"2")
14 writer.write_tile(zxy_to_tileid(2, 0, 0), b"3")
15 writer.finalize(
16 {
17 "tile_compression": Compression.UNKNOWN,
18 "tile_type": TileType.UNKNOWN,
19 },
20 {"key": "value"},
21 )
22
23 reader = Reader(MemorySource(buf.getvalue()))
24 self.assertEqual(reader.header()["version"], 3)
25 self.assertEqual(reader.header()["min_zoom"], 0)
26 self.assertEqual(reader.header()["max_zoom"], 2)
27 self.assertEqual(reader.header()["clustered"], True)
28 self.assertEqual(reader.metadata()["key"], "value")
29 self.assertEqual(reader.get(0, 0, 0), b"1")
30 self.assertEqual(reader.get(1, 0, 0), b"2")
31 self.assertEqual(reader.get(2, 0, 0), b"3")
32 self.assertEqual(reader.get(3, 0, 0), None)
33
34 def test_roundtrip_unclustered(self):
35 buf = BytesIO()
36 writer = Writer(buf)
37 writer.write_tile(zxy_to_tileid(1, 0, 0), b"2")
38 writer.write_tile(zxy_to_tileid(0, 0, 0), b"1")
39 writer.finalize(
40 {
41 "tile_compression": Compression.UNKNOWN,
42 "tile_type": TileType.UNKNOWN,
43 },
44 {},
45 )
46
47 reader = Reader(MemorySource(buf.getvalue()))
48 self.assertEqual(reader.header()["clustered"], False)
49
50 def test_all_tiles(self):
51 buf = BytesIO()
52 writer = Writer(buf)
53 writer.write_tile(zxy_to_tileid(0, 0, 0), b"1")
54 writer.write_tile(zxy_to_tileid(1, 0, 0), b"1")
55 writer.write_tile(zxy_to_tileid(2, 0, 0), b"2")
56 writer.finalize(
57 {
58 "tile_compression": Compression.UNKNOWN,
59 "tile_type": TileType.UNKNOWN,
60 },
61 {"key": "value"},
62 )
63
64 reader = Reader(MemorySource(buf.getvalue()))
65 tiles = list(all_tiles(reader.get_bytes))

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…