fix tests for spec magic number/compression changes

This commit is contained in:
Brandon Liu
2022-10-05 10:46:05 +08:00
parent 41b53c2c12
commit 7526a4b8b6
4 changed files with 36 additions and 34 deletions

View File

@@ -1,5 +1,6 @@
import { decompressSync } from "fflate"; import { decompressSync } from "fflate";
import v2 from "./v2"; import v2 from "./v2";
export * from './adapters';
export interface BufferPosition { export interface BufferPosition {
buf: Uint8Array; buf: Uint8Array;
@@ -134,9 +135,10 @@ const ENTRY_SIZE_BYTES = 32;
export enum Compression { export enum Compression {
Unknown = 0, Unknown = 0,
Gzip = 1, None = 1,
Brotli = 2, Gzip = 2,
Zstd = 3, Brotli = 3,
Zstd = 4,
} }
function tryDecompress(buf: ArrayBuffer, compression: Compression) { function tryDecompress(buf: ArrayBuffer, compression: Compression) {
@@ -157,7 +159,7 @@ export enum TileType {
Webp = 4, Webp = 4,
} }
const HEADER_SIZE_BYTES = 122; const HEADER_SIZE_BYTES = 127;
export interface Header { export interface Header {
specVersion: number; specVersion: number;
@@ -301,30 +303,30 @@ export function bytesToHeader(bytes: ArrayBuffer, etag?: string): Header {
const v = new DataView(bytes); const v = new DataView(bytes);
return { return {
specVersion: 3, specVersion: 3,
rootDirectoryOffset: Number(v.getBigUint64(3, true)), rootDirectoryOffset: Number(v.getBigUint64(8, true)),
rootDirectoryLength: Number(v.getBigUint64(11, true)), rootDirectoryLength: Number(v.getBigUint64(16, true)),
jsonMetadataOffset: Number(v.getBigUint64(19, true)), jsonMetadataOffset: Number(v.getBigUint64(24, true)),
jsonMetadataLength: Number(v.getBigUint64(27, true)), jsonMetadataLength: Number(v.getBigUint64(32, true)),
leafDirectoryOffset: Number(v.getBigUint64(35, true)), leafDirectoryOffset: Number(v.getBigUint64(40, true)),
leafDirectoryLength: Number(v.getBigUint64(43, true)), leafDirectoryLength: Number(v.getBigUint64(48, true)),
tileDataOffset: Number(v.getBigUint64(51, true)), tileDataOffset: Number(v.getBigUint64(56, true)),
tileDataLength: Number(v.getBigUint64(59, true)), tileDataLength: Number(v.getBigUint64(64, true)),
numAddressedTiles: Number(v.getBigUint64(67, true)), numAddressedTiles: Number(v.getBigUint64(72, true)),
numTileEntries: Number(v.getBigUint64(75, true)), numTileEntries: Number(v.getBigUint64(80, true)),
numTileContents: Number(v.getBigUint64(83, true)), numTileContents: Number(v.getBigUint64(88, true)),
clustered: v.getUint8(91) === 1, clustered: v.getUint8(96) === 1,
internalCompression: v.getUint8(92), internalCompression: v.getUint8(97),
tileCompression: v.getUint8(93), tileCompression: v.getUint8(98),
tileType: v.getUint8(94), tileType: v.getUint8(99),
minZoom: v.getUint8(95), minZoom: v.getUint8(100),
maxZoom: v.getUint8(96), maxZoom: v.getUint8(101),
minLon: v.getInt32(97, true) / 10000000, minLon: v.getInt32(102, true) / 10000000,
minLat: v.getInt32(101, true) / 10000000, minLat: v.getInt32(106, true) / 10000000,
maxLon: v.getInt32(105, true) / 10000000, maxLon: v.getInt32(110, true) / 10000000,
maxLat: v.getInt32(109, true) / 10000000, maxLat: v.getInt32(114, true) / 10000000,
centerZoom: v.getUint8(113), centerZoom: v.getUint8(118),
centerLon: v.getInt32(114, true) / 10000000, centerLon: v.getInt32(119, true) / 10000000,
centerLat: v.getInt32(118, true) / 10000000, centerLat: v.getInt32(123, true) / 10000000,
etag: etag, etag: etag,
}; };
} }

Binary file not shown.

Binary file not shown.

View File

@@ -147,20 +147,20 @@ test("cache getHeader", async (assertion) => {
const source = new TestNodeFileSource("test/data/test_fixture_1.pmtiles", "1"); const source = new TestNodeFileSource("test/data/test_fixture_1.pmtiles", "1");
const cache = new SharedPromiseCache(); const cache = new SharedPromiseCache();
const header = await cache.getHeader(source); const header = await cache.getHeader(source);
assertion.eq(header.rootDirectoryOffset, 122); assertion.eq(header.rootDirectoryOffset, 127);
assertion.eq(header.rootDirectoryLength, 25); assertion.eq(header.rootDirectoryLength, 25);
assertion.eq(header.jsonMetadataOffset, 147); assertion.eq(header.jsonMetadataOffset, 152);
assertion.eq(header.jsonMetadataLength, 239); assertion.eq(header.jsonMetadataLength, 247);
assertion.eq(header.leafDirectoryOffset, 0); assertion.eq(header.leafDirectoryOffset, 0);
assertion.eq(header.leafDirectoryLength, 0); assertion.eq(header.leafDirectoryLength, 0);
assertion.eq(header.tileDataOffset, 386); assertion.eq(header.tileDataOffset, 399);
assertion.eq(header.tileDataLength, 69); assertion.eq(header.tileDataLength, 69);
assertion.eq(header.numAddressedTiles, 1); assertion.eq(header.numAddressedTiles, 1);
assertion.eq(header.numTileEntries, 1); assertion.eq(header.numTileEntries, 1);
assertion.eq(header.numTileContents, 1); assertion.eq(header.numTileContents, 1);
assertion.eq(header.clustered, false); assertion.eq(header.clustered, false);
assertion.eq(header.internalCompression, 1); assertion.eq(header.internalCompression, 2);
assertion.eq(header.tileCompression, 1); assertion.eq(header.tileCompression, 2);
assertion.eq(header.tileType, 1); assertion.eq(header.tileType, 1);
assertion.eq(header.minZoom, 0); assertion.eq(header.minZoom, 0);
assertion.eq(header.maxZoom, 0); assertion.eq(header.maxZoom, 0);