mirror of
https://github.com/protomaps/PMTiles.git
synced 2026-02-04 10:51:07 +00:00
fix tests for spec magic number/compression changes
This commit is contained in:
58
js/index.ts
58
js/index.ts
@@ -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.
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user