import {
|
Cesium3DTileContentType,
|
preprocess3DTileContent,
|
} from "../../Source/Cesium.js";
|
|
describe("Scene/preprocess3DTileContent", function () {
|
function makeBinaryFile(magic) {
|
var binaryFile = new Uint8Array(magic.length + 8);
|
for (var i = 0; i < magic.length; i++) {
|
binaryFile[i] = magic.charCodeAt(i);
|
}
|
return binaryFile;
|
}
|
|
function makeJsonFile(json) {
|
var jsonString = JSON.stringify(json);
|
var jsonFile = new Uint8Array(jsonString.length);
|
for (var i = 0; i < jsonFile.length; i++) {
|
jsonFile[i] = jsonString.charCodeAt(i);
|
}
|
return jsonFile;
|
}
|
|
it("detects binary contents by magic number", function () {
|
// glb is handled in a separate test
|
var magics = ["b3dm", "i3dm", "pnts", "cmpt", "vctr", "geom", "subt"];
|
magics.forEach(function (magic) {
|
var typedArray = makeBinaryFile(magic);
|
var results = preprocess3DTileContent(typedArray.buffer);
|
expect(results).toEqual({
|
contentType: magic,
|
binaryPayload: typedArray,
|
});
|
});
|
});
|
|
it("detects external tilesets", function () {
|
var externalTileset = {
|
asset: {
|
version: "1.0",
|
},
|
geometricError: 100,
|
root: {},
|
};
|
var payload = makeJsonFile(externalTileset);
|
var results = preprocess3DTileContent(payload.buffer);
|
expect(results).toEqual({
|
contentType: Cesium3DTileContentType.EXTERNAL_TILESET,
|
jsonPayload: externalTileset,
|
});
|
});
|
|
it("labels binary glTF as glb", function () {
|
var typedArray = makeBinaryFile("glTF");
|
var results = preprocess3DTileContent(typedArray.buffer);
|
expect(results).toEqual({
|
contentType: Cesium3DTileContentType.GLTF_BINARY,
|
binaryPayload: typedArray,
|
});
|
});
|
|
it("detects gltf JSON content", function () {
|
var glTF = {
|
asset: {
|
version: "1.0",
|
},
|
meshes: [],
|
};
|
var payload = makeJsonFile(glTF);
|
var results = preprocess3DTileContent(payload.buffer);
|
expect(results).toEqual({
|
contentType: Cesium3DTileContentType.GLTF,
|
jsonPayload: glTF,
|
});
|
});
|
|
it("throws for invalid content", function () {
|
expect(function () {
|
var payload = makeBinaryFile("fake");
|
preprocess3DTileContent(payload.buffer);
|
}).toThrowRuntimeError();
|
});
|
});
|