import { test } from "node:test"; import assert from "node:assert"; import { unshift, getUint24, getUint48, deriveLeaf, queryLeafdir, queryTile, parseEntry, EntryV2, createDirectory, } from "../v2"; test("stub data", () => { let dataview = new DataView(createDirectory([ { z: 5, x: 1000, y: 2000, offset: 1000, length: 2000, is_dir: false }, { z: 14, x: 16383, y: 16383, offset: 999999, length: 999, is_dir: false, }, ])); var z_raw = dataview.getUint8(17 + 0); var x = getUint24(dataview, 17 + 1); var y = getUint24(dataview, 17 + 4); var offset = getUint48(dataview, 17 + 7); var length = dataview.getUint32(17 + 13, true); assert.strictEqual(z_raw,14); assert.strictEqual(x,16383); assert.strictEqual(y,16383); }); test("get entry", () => { let view = new DataView(createDirectory([ { z: 5, x: 1000, y: 2000, offset: 1000, length: 2000, is_dir: false }, { z: 14, x: 16383, y: 16383, offset: 999999, length: 999, is_dir: false, }, ])); let entry = queryTile(view, 14, 16383, 16383); assert.strictEqual(entry!.z,14); assert.strictEqual(entry!.x,16383); assert.strictEqual(entry!.y,16383); assert.strictEqual(entry!.offset,999999); assert.strictEqual(entry!.length,999); assert.strictEqual(entry!.is_dir,false); assert.strictEqual(queryLeafdir(view, 14, 16383, 16383),null); }); test("get leafdir", () => { let view = new DataView(createDirectory([ { z: 14, x: 16383, y: 16383, offset: 999999, length: 999, is_dir: true, }, ])); let entry = queryLeafdir(view, 14, 16383, 16383); assert.strictEqual(entry!.z,14); assert.strictEqual(entry!.x,16383); assert.strictEqual(entry!.y,16383); assert.strictEqual(entry!.offset,999999); assert.strictEqual(entry!.length,999); assert.strictEqual(entry!.is_dir,true); assert.strictEqual(queryTile(view, 14, 16383, 16383),null); }); test("derive the leaf level", () => { let view = new DataView(createDirectory([ { z: 6, x: 3, y: 3, offset: 0, length: 0, is_dir: true, }, ])); let leaf = deriveLeaf(view,{z:7,x:6,y:6}); assert.strictEqual(leaf!.z,6); assert.strictEqual(leaf!.x,3); assert.strictEqual(leaf!.y,3); view = new DataView(createDirectory([ { z: 6, x: 3, y: 3, offset: 0, length: 0, is_dir: false, }, ])); leaf = deriveLeaf(view,{z:7,x:6,y:6}); assert.strictEqual(leaf,null); }); test("convert spec v1 directory to spec v2 directory", () => { let view = new DataView(createDirectory([ { z: 7, x: 3, y: 3, offset: 3, length: 3, is_dir: true, }, { z: 6, x: 2, y: 2, offset: 2, length: 2, is_dir: false, }, { z: 6, x: 2, y: 1, offset: 1, length: 1, is_dir: false, }, ])); let entry = queryLeafdir(view, 7, 3, 3); assert.strictEqual(entry!.offset,3); entry = queryTile(view, 6, 2, 2); assert.strictEqual(entry!.offset,2); entry = queryTile(view, 6, 2, 1); assert.strictEqual(entry!.offset,1); entry = parseEntry(view, 0); assert.strictEqual(entry!.offset,1); entry = parseEntry(view, 1); assert.strictEqual(entry!.offset,2); entry = parseEntry(view, 2); assert.strictEqual(entry!.offset,3); });