From 7526a4b8b6617b978e53aec108a3c5d41810eb1b Mon Sep 17 00:00:00 2001 From: Brandon Liu Date: Wed, 5 Oct 2022 10:46:05 +0800 Subject: [PATCH] fix tests for spec magic number/compression changes --- js/index.ts | 58 ++++++++++++++-------------- js/test/data/test_fixture_1.pmtiles | Bin 455 -> 468 bytes js/test/data/test_fixture_2.pmtiles | Bin 452 -> 466 bytes js/test/v3.test.ts | 12 +++--- 4 files changed, 36 insertions(+), 34 deletions(-) diff --git a/js/index.ts b/js/index.ts index 4ffd185..774e8fd 100644 --- a/js/index.ts +++ b/js/index.ts @@ -1,5 +1,6 @@ import { decompressSync } from "fflate"; import v2 from "./v2"; +export * from './adapters'; export interface BufferPosition { buf: Uint8Array; @@ -134,9 +135,10 @@ const ENTRY_SIZE_BYTES = 32; export enum Compression { Unknown = 0, - Gzip = 1, - Brotli = 2, - Zstd = 3, + None = 1, + Gzip = 2, + Brotli = 3, + Zstd = 4, } function tryDecompress(buf: ArrayBuffer, compression: Compression) { @@ -157,7 +159,7 @@ export enum TileType { Webp = 4, } -const HEADER_SIZE_BYTES = 122; +const HEADER_SIZE_BYTES = 127; export interface Header { specVersion: number; @@ -301,30 +303,30 @@ export function bytesToHeader(bytes: ArrayBuffer, etag?: string): Header { const v = new DataView(bytes); return { specVersion: 3, - rootDirectoryOffset: Number(v.getBigUint64(3, true)), - rootDirectoryLength: Number(v.getBigUint64(11, true)), - jsonMetadataOffset: Number(v.getBigUint64(19, true)), - jsonMetadataLength: Number(v.getBigUint64(27, true)), - leafDirectoryOffset: Number(v.getBigUint64(35, true)), - leafDirectoryLength: Number(v.getBigUint64(43, true)), - tileDataOffset: Number(v.getBigUint64(51, true)), - tileDataLength: Number(v.getBigUint64(59, true)), - numAddressedTiles: Number(v.getBigUint64(67, true)), - numTileEntries: Number(v.getBigUint64(75, true)), - numTileContents: Number(v.getBigUint64(83, true)), - clustered: v.getUint8(91) === 1, - internalCompression: v.getUint8(92), - tileCompression: v.getUint8(93), - tileType: v.getUint8(94), - minZoom: v.getUint8(95), - maxZoom: v.getUint8(96), - minLon: v.getInt32(97, true) / 10000000, - minLat: v.getInt32(101, true) / 10000000, - maxLon: v.getInt32(105, true) / 10000000, - maxLat: v.getInt32(109, true) / 10000000, - centerZoom: v.getUint8(113), - centerLon: v.getInt32(114, true) / 10000000, - centerLat: v.getInt32(118, true) / 10000000, + rootDirectoryOffset: Number(v.getBigUint64(8, true)), + rootDirectoryLength: Number(v.getBigUint64(16, true)), + jsonMetadataOffset: Number(v.getBigUint64(24, true)), + jsonMetadataLength: Number(v.getBigUint64(32, true)), + leafDirectoryOffset: Number(v.getBigUint64(40, true)), + leafDirectoryLength: Number(v.getBigUint64(48, true)), + tileDataOffset: Number(v.getBigUint64(56, true)), + tileDataLength: Number(v.getBigUint64(64, true)), + numAddressedTiles: Number(v.getBigUint64(72, true)), + numTileEntries: Number(v.getBigUint64(80, true)), + numTileContents: Number(v.getBigUint64(88, true)), + clustered: v.getUint8(96) === 1, + internalCompression: v.getUint8(97), + tileCompression: v.getUint8(98), + tileType: v.getUint8(99), + minZoom: v.getUint8(100), + maxZoom: v.getUint8(101), + minLon: v.getInt32(102, true) / 10000000, + minLat: v.getInt32(106, true) / 10000000, + maxLon: v.getInt32(110, true) / 10000000, + maxLat: v.getInt32(114, true) / 10000000, + centerZoom: v.getUint8(118), + centerLon: v.getInt32(119, true) / 10000000, + centerLat: v.getInt32(123, true) / 10000000, etag: etag, }; } diff --git a/js/test/data/test_fixture_1.pmtiles b/js/test/data/test_fixture_1.pmtiles index 2f2c750155c8b360869706ced305276f44aca8da..c86db1f27bba6d3818bb5da5ac6b78e8f6e3303a 100644 GIT binary patch delta 309 zcmX@ke1+LEz&9i_C$*Tlo&f?Rq4W$W{T)i9Q~eW7G?cpy-TkS7Yw@yeFOW~}ZxYtGT#DBTlp3=Vp`i!lu`%Brwq*}}wd*&+)O* hkup|~wB`NAkHekzJ}mMQo+Yqub`IC=r<3a$JpgTRdj$Xh delta 277 zcmcb@e4JS(z?Zp-0RkkU^kgXgexjl{W79-S4JJm$iOG)jySok>2)y|$nv{L~Im@M( zYWsq}i9JdAJqIpvWy(I1_*<C?LCn@n#{UsujdF<1Sm&l@a%T~uM_T&upG{uV|U-2E>O`(9Bw(|!7y2>;|5A=5>!`ZH_FE}dIAX{m-y)oWOtny9F`dimUK zHvNlKKGyRGPGhcYy>6%V^T><%2%TFs9ia{H{`dX3r%>1LJLTdxpA@Av!jqQEN}2f8 zeu^{S*txAC=g1^ucFSMAX{QD4#0%CJ?Y4cv^y;6vl4Qz$m7mtWrzLKSD$LybZ;s@C Zp;xlggKw?9yN$c_>z6H0C)Y8$0RXZ;d20Xw delta 266 zcmcb_e1ushz?Zp-0RkkU^kgXgZla<%W8*|i4JJm$iOJse!d?@LUYgoZsBWFWEuF$y zty|scG~vJPwyEs7s(r@R>to9jmbm>8I`Cqr?P_g*zT3OD%(~hk*CqSqh4peBZKKJh}RMYv2 zzD`s-ELbP@Vcw@5xjBvR-bzm}*))6dAD72AM@m^e(w5h$9ZPrK`l!fTc$UDsdH*-( K-ksdT=mr3NOK}ST diff --git a/js/test/v3.test.ts b/js/test/v3.test.ts index 3770853..b938f66 100644 --- a/js/test/v3.test.ts +++ b/js/test/v3.test.ts @@ -147,20 +147,20 @@ test("cache getHeader", async (assertion) => { const source = new TestNodeFileSource("test/data/test_fixture_1.pmtiles", "1"); const cache = new SharedPromiseCache(); const header = await cache.getHeader(source); - assertion.eq(header.rootDirectoryOffset, 122); + assertion.eq(header.rootDirectoryOffset, 127); assertion.eq(header.rootDirectoryLength, 25); - assertion.eq(header.jsonMetadataOffset, 147); - assertion.eq(header.jsonMetadataLength, 239); + assertion.eq(header.jsonMetadataOffset, 152); + assertion.eq(header.jsonMetadataLength, 247); assertion.eq(header.leafDirectoryOffset, 0); assertion.eq(header.leafDirectoryLength, 0); - assertion.eq(header.tileDataOffset, 386); + assertion.eq(header.tileDataOffset, 399); assertion.eq(header.tileDataLength, 69); assertion.eq(header.numAddressedTiles, 1); assertion.eq(header.numTileEntries, 1); assertion.eq(header.numTileContents, 1); assertion.eq(header.clustered, false); - assertion.eq(header.internalCompression, 1); - assertion.eq(header.tileCompression, 1); + assertion.eq(header.internalCompression, 2); + assertion.eq(header.tileCompression, 2); assertion.eq(header.tileType, 1); assertion.eq(header.minZoom, 0); assertion.eq(header.maxZoom, 0);