Skip to content

Commit

Permalink
Update specs for 'combine' command
Browse files Browse the repository at this point in the history
  • Loading branch information
javagl committed Jun 22, 2024
1 parent 1d82377 commit 6a6ec53
Showing 1 changed file with 96 additions and 28 deletions.
124 changes: 96 additions & 28 deletions specs/tools/tilesetProcessing/TilesetCombinerSpec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,28 @@ import { TilesetOperations } from "../../../src/tools";
import { SpecHelpers } from "../../SpecHelpers";

const SPECS_DATA_BASE_DIRECTORY = SpecHelpers.getSpecsDataBaseDirectory();

const nestedExteralInput =
SPECS_DATA_BASE_DIRECTORY + "/combineTilesets/nestedExternal";
const nestedExteralOutput =
SPECS_DATA_BASE_DIRECTORY + "/output/combineTilesets/nestedExternal";

const externalsWithTransformInput =
SPECS_DATA_BASE_DIRECTORY + "/combineTilesets/externalsWithTransform";
const externalsWithTransformOutput =
SPECS_DATA_BASE_DIRECTORY + "/output/combineTilesets/externalsWithTransform";

const INPUT_BASE_DIRECTORY = SPECS_DATA_BASE_DIRECTORY + "/combineTilesets/";
const OUTPUT_BASE_DIRECTORY =
SPECS_DATA_BASE_DIRECTORY + "/output/combineTilesets/";
const overwrite = true;

describe("TilesetCombiner", function () {
fdescribe("TilesetCombiner", function () {
afterEach(function () {
SpecHelpers.forceDeleteDirectory(
SPECS_DATA_BASE_DIRECTORY + "/output/combineTilesets"
);
});

it("combines external tilesets into a single tileset", async function () {
await TilesetOperations.combine(
nestedExteralInput,
nestedExteralOutput,
overwrite
);
it("combines external tilesets into a single tileset in nestedExternal", async function () {
const testDirectoryName = "nestedExternal";
const input = INPUT_BASE_DIRECTORY + testDirectoryName;
const output = OUTPUT_BASE_DIRECTORY + testDirectoryName;

await TilesetOperations.combine(input, output, overwrite);

// Ensure that the output directory contains the expected files:
// All files of the input, except for the external tileset JSON files
const actualRelativeFiles =
SpecHelpers.collectRelativeFileNames(nestedExteralOutput);
const actualRelativeFiles = SpecHelpers.collectRelativeFileNames(output);
actualRelativeFiles.sort();
const expectedRelativeFiles = [
"README.md",
Expand All @@ -54,7 +45,7 @@ describe("TilesetCombiner", function () {
// Ensure that the single 'tileset.json' contains the
// proper content URIs for the combined output
const tilesetJsonBuffer = fs.readFileSync(
Paths.join(nestedExteralOutput, "tileset.json")
Paths.join(output, "tileset.json")
);
const tileset = JSON.parse(tilesetJsonBuffer.toString());
const actualContentUris = await SpecHelpers.collectExplicitContentUris(
Expand All @@ -73,17 +64,17 @@ describe("TilesetCombiner", function () {
expect(actualContentUris).toEqual(expectedContentUris);
});

it("retains the transforms of root nodes of external tilesets", async function () {
await TilesetOperations.combine(
externalsWithTransformInput,
externalsWithTransformOutput,
overwrite
);
it("retains the transforms of root nodes of external tilesets in externalsWithTransform", async function () {
const testDirectoryName = "externalsWithTransform";
const input = INPUT_BASE_DIRECTORY + testDirectoryName;
const output = OUTPUT_BASE_DIRECTORY + testDirectoryName;

await TilesetOperations.combine(input, output, overwrite);

// Ensure that the resulting tileset JSON contains the
// proper content transforms and bounding volumes
const tilesetJsonBuffer = fs.readFileSync(
Paths.join(externalsWithTransformOutput, "tileset.json")
Paths.join(output, "tileset.json")
);
const tileset = JSON.parse(tilesetJsonBuffer.toString());

Expand Down Expand Up @@ -122,4 +113,81 @@ describe("TilesetCombiner", function () {
const childTransformB = tileset.root.children[2].transform;
expect(childTransformB).toEqual(expectedTransformB);
});

it("generates proper content URIs for externalInSameDirectory", async function () {
const testDirectoryName = "externalInSameDirectory";
const input = INPUT_BASE_DIRECTORY + testDirectoryName;
const output = OUTPUT_BASE_DIRECTORY + testDirectoryName;

await TilesetOperations.combine(input, output, overwrite);

// Ensure that the output directory contains the expected files:
// All files of the input, except for the external tileset JSON files
const actualRelativeFiles = SpecHelpers.collectRelativeFileNames(output);
actualRelativeFiles.sort();
const expectedRelativeFiles = [
"README.md",
"sub0/tileA.b3dm",
"sub0/tileB.b3dm",
"tileset.json",
];
expect(actualRelativeFiles).toEqual(expectedRelativeFiles);

// Ensure that the single 'tileset.json' contains the
// proper content URIs for the combined output
const tilesetJsonBuffer = fs.readFileSync(
Paths.join(output, "tileset.json")
);
const tileset = JSON.parse(tilesetJsonBuffer.toString());
const actualContentUris = await SpecHelpers.collectExplicitContentUris(
tileset.root
);
actualContentUris.sort();

const expectedContentUris = ["sub0/tileA.b3dm", "sub0/tileB.b3dm"];
expect(actualContentUris).toEqual(expectedContentUris);
});

it("handles multiple contents with external tilesets in externalMultipleContents", async function () {
const testDirectoryName = "externalMultipleContents";
const input = INPUT_BASE_DIRECTORY + testDirectoryName;
const output = OUTPUT_BASE_DIRECTORY + testDirectoryName;

await TilesetOperations.combine(input, output, overwrite);

// Ensure that the output directory contains the expected files:
// All files of the input, except for the external tileset JSON files
const actualRelativeFiles = SpecHelpers.collectRelativeFileNames(output);
actualRelativeFiles.sort();
const expectedRelativeFiles = [
"README.md",
"subA/tileA0.b3dm",
"subA/tileA1.b3dm",
"subB/tileB0x.b3dm",
"subB/tileB0y.b3dm",
"tile.b3dm",
"tileset.json",
];
expect(actualRelativeFiles).toEqual(expectedRelativeFiles);

// Ensure that the single 'tileset.json' contains the
// proper content URIs for the combined output
const tilesetJsonBuffer = fs.readFileSync(
Paths.join(output, "tileset.json")
);
const tileset = JSON.parse(tilesetJsonBuffer.toString());
const actualContentUris = await SpecHelpers.collectExplicitContentUris(
tileset.root
);
actualContentUris.sort();

const expectedContentUris = [
"subA/tileA0.b3dm",
"subA/tileA1.b3dm",
"subB/tileB0x.b3dm",
"subB/tileB0y.b3dm",
"tile.b3dm",
];
expect(actualContentUris).toEqual(expectedContentUris);
});
});

0 comments on commit 6a6ec53

Please sign in to comment.