import { MetadataClass, TileMetadata } from "../../Source/Cesium.js"; describe("Scene/TileMetadata", function () { var tileClass = new MetadataClass({ id: "tile", class: { properties: { color: { type: "ARRAY", componentType: "FLOAT32", componentCount: 8, semantic: "COLOR", }, isSquare: { description: "Is a square tile, rather than a rectangular partial tile", componentType: "BOOLEAN", }, }, }, }); var tileExtension = { class: "tile", properties: { color: [1.0, 0.5, 0.0], isSquare: true, }, }; var tileMetadata; beforeEach(function () { tileMetadata = new TileMetadata({ tile: tileExtension, class: tileClass, }); }); it("throws without tile", function () { expect(function () { tileMetadata = new TileMetadata({ tile: undefined, class: tileClass, }); }).toThrowDeveloperError(); }); it("creates tile metadata with default values", function () { var metadata = new TileMetadata({ tile: {}, }); expect(metadata.class).toBeUndefined(); expect(metadata.extras).toBeUndefined(); expect(metadata.extensions).toBeUndefined(); }); it("creates tile metadata", function () { var properties = { color: [0.0, 0.0, 1.0], isSquare: false, }; var extras = { version: "0.0", }; var extensions = { "3DTILES_extension": {}, }; tileMetadata = new TileMetadata({ tile: { class: "tile", properties: properties, extras: extras, extensions: extensions, }, class: tileClass, }); expect(tileMetadata.class).toBe(tileClass); expect(tileMetadata.getProperty("color")).toEqual(properties.color); expect(tileMetadata.getProperty("isSquare")).toEqual(properties.isSquare); expect(tileMetadata.extras).toBe(extras); expect(tileMetadata.extensions).toBe(extensions); }); it("hasProperty returns true if the tile has this property", function () { expect(tileMetadata.hasProperty("color")).toBe(true); }); it("hasProperty returns false if the tile does not have this property", function () { expect(tileMetadata.hasProperty("numberOfPoints")).toBe(false); }); it("hasPropertyBySemantic returns true if the tile has a property with the given semantic", function () { expect(tileMetadata.hasPropertyBySemantic("COLOR")).toBe(true); }); it("hasPropertyBySemantic returns false if the tile does not have a property with the given semantic", function () { expect(tileMetadata.hasProperty("NUMBER_OF_POINTS")).toBe(false); }); it("getPropertyIds returns array of property IDs", function () { var propertyIds = tileMetadata.getPropertyIds([]); propertyIds.sort(); expect(propertyIds).toEqual(["color", "isSquare"]); }); it("getProperty returns undefined if a property does not exist", function () { expect(tileMetadata.getProperty("numberOfPoints")).not.toBeDefined(); }); it("getProperty returns the property value", function () { expect(tileMetadata.getProperty("color")).toEqual([1.0, 0.5, 0.0]); expect(tileMetadata.getProperty("isSquare")).toBe(true); }); it("setProperty returns false if property doesn't exist", function () { expect(tileMetadata.setProperty("numberOfPoints", 10)).toBe(false); }); it("setProperty sets property value", function () { expect(tileMetadata.getProperty("isSquare")).toBe(true); expect(tileMetadata.setProperty("isSquare", false)).toBe(true); expect(tileMetadata.getProperty("isSquare")).toBe(false); }); it("getPropertyBySemantic returns undefined when there's no property with the given semantic", function () { expect( tileMetadata.getPropertyBySemantic("HORIZON_OCCLUSION_POINT") ).not.toBeDefined(); }); it("getPropertyBySemantic returns the property value", function () { expect(tileMetadata.getPropertyBySemantic("COLOR")).toEqual([ 1.0, 0.5, 0.0, ]); }); it("setPropertyBySemantic sets property value", function () { expect(tileMetadata.getPropertyBySemantic("COLOR")).toEqual([ 1.0, 0.5, 0.0, ]); expect(tileMetadata.setPropertyBySemantic("COLOR", [0.0, 0.0, 0.0])).toBe( true ); expect(tileMetadata.getPropertyBySemantic("COLOR")).toEqual([ 0.0, 0.0, 0.0, ]); }); it("setPropertyBySemantic returns false if the semantic doesn't exist", function () { expect(tileMetadata.setPropertyBySemantic("NAME", "Test Tile")).toBe(false); }); });