import { BatchTexture, Color } from "../../Source/Cesium.js"; import createScene from "../createScene.js"; describe( "Scene/BatchTexture", function () { var scene; var mockOwner = {}; var mockTileset = { _statistics: { batchTableByteLength: 0, }, }; beforeAll(function () { scene = createScene(); }); var result = new Color(); it("throws without featuresLength", function () { expect(function () { return new BatchTexture({ featuresLength: undefined, owner: mockOwner, }); }).toThrowDeveloperError(); }); it("throws without owner", function () { expect(function () { return new BatchTexture({ featuresLength: 1, owner: undefined, }); }).toThrowDeveloperError(); }); it("setShow throws with invalid batchId", function () { var batchTexture = new BatchTexture({ owner: mockOwner, featuresLength: 1, }); expect(function () { batchTexture.setShow(); }).toThrowDeveloperError(); expect(function () { batchTexture.setShow(-1); }).toThrowDeveloperError(); expect(function () { batchTexture.setShow(1); }).toThrowDeveloperError(); }); it("setShow throws with undefined value", function () { var batchTexture = new BatchTexture({ owner: mockOwner, featuresLength: 1, }); expect(function () { batchTexture.setShow(0); }).toThrowDeveloperError(); }); it("setShow sets show", function () { var batchTexture = new BatchTexture({ owner: mockOwner, featuresLength: 1, }); // Batch table resources are undefined by default expect(batchTexture._batchValues).toBeUndefined(); expect(batchTexture._batchTexture).toBeUndefined(); // Check that batch table resources are still undefined because value is true by default batchTexture.setShow(0, true); batchTexture.update(mockTileset, scene.frameState); expect(batchTexture._batchValues).toBeUndefined(); expect(batchTexture._batchTexture).toBeUndefined(); expect(batchTexture.getShow(0)).toEqual(true); // Check that batch values are dirty and resources are created when value changes batchTexture.setShow(0, false); expect(batchTexture._batchValuesDirty).toEqual(true); batchTexture.update(mockTileset, scene.frameState); expect(batchTexture._batchValues).toBeDefined(); expect(batchTexture._batchTexture).toBeDefined(); expect(batchTexture._batchValuesDirty).toEqual(false); expect(batchTexture.getShow(0)).toEqual(false); // Check that dirty stays false when value is the same batchTexture.setShow(0, false); expect(batchTexture._batchValuesDirty).toEqual(false); expect(batchTexture.getShow(0)).toEqual(false); }); it("getShow throws with invalid batchId", function () { var batchTexture = new BatchTexture({ owner: mockOwner, featuresLength: 1, }); expect(function () { batchTexture.getShow(); }).toThrowDeveloperError(); expect(function () { batchTexture.getShow(-1); }).toThrowDeveloperError(); expect(function () { batchTexture.getShow(1); }).toThrowDeveloperError(); }); it("getShow", function () { var batchTexture = new BatchTexture({ owner: mockOwner, featuresLength: 1, }); // Show is true by default expect(batchTexture.getShow(0)).toEqual(true); batchTexture.setShow(0, false); expect(batchTexture.getShow(0)).toEqual(false); }); it("setColor throws with invalid batchId", function () { var batchTexture = new BatchTexture({ owner: mockOwner, featuresLength: 1, }); expect(function () { batchTexture.setColor(); }).toThrowDeveloperError(); expect(function () { batchTexture.setColor(-1); }).toThrowDeveloperError(); expect(function () { batchTexture.setColor(1); }).toThrowDeveloperError(); }); it("setColor throws with undefined value", function () { var batchTexture = new BatchTexture({ owner: mockOwner, featuresLength: 1, }); expect(function () { batchTexture.setColor(0); }).toThrowDeveloperError(); }); it("setColor", function () { var batchTexture = new BatchTexture({ owner: mockOwner, featuresLength: 1, }); // Batch table resources are undefined by default expect(batchTexture._batchValues).toBeUndefined(); expect(batchTexture._batchTexture).toBeUndefined(); // Check that batch table resources are still undefined because value is true by default batchTexture.setColor(0, Color.WHITE); batchTexture.update(mockTileset, scene.frameState); expect(batchTexture._batchValues).toBeUndefined(); expect(batchTexture._batchTexture).toBeUndefined(); expect(batchTexture.getColor(0, result)).toEqual(Color.WHITE); // Check that batch values are dirty and resources are created when value changes batchTexture.setColor(0, Color.YELLOW); expect(batchTexture._batchValuesDirty).toEqual(true); batchTexture.update(mockTileset, scene.frameState); expect(batchTexture._batchValues).toBeDefined(); expect(batchTexture._batchTexture).toBeDefined(); expect(batchTexture._batchValuesDirty).toEqual(false); expect(batchTexture.getColor(0, result)).toEqual(Color.YELLOW); // Check that dirty stays false when value is the same batchTexture.setColor(0, Color.YELLOW); expect(batchTexture._batchValuesDirty).toEqual(false); expect(batchTexture.getColor(0, result)).toEqual(Color.YELLOW); }); it("setAllColor throws with undefined value", function () { var batchTexture = new BatchTexture({ owner: mockOwner, featuresLength: 1, }); expect(function () { batchTexture.setAllColor(); }).toThrowDeveloperError(); }); it("setAllColor", function () { var batchTexture = new BatchTexture({ owner: mockOwner, featuresLength: 2, }); batchTexture.setAllColor(Color.YELLOW); expect(batchTexture.getColor(0, result)).toEqual(Color.YELLOW); expect(batchTexture.getColor(1, result)).toEqual(Color.YELLOW); }); it("setAllShow throws with undefined value", function () { var batchTexture = new BatchTexture({ owner: mockOwner, featuresLength: 1, }); expect(function () { batchTexture.setAllShow(); }).toThrowDeveloperError(); }); it("setAllShow", function () { var batchTexture = new BatchTexture({ owner: mockOwner, featuresLength: 2, }); batchTexture.setAllShow(false); expect(batchTexture.getShow(0)).toBe(false); expect(batchTexture.getShow(1)).toBe(false); }); it("getColor throws with invalid batchId", function () { var batchTexture = new BatchTexture({ owner: mockOwner, featuresLength: 1, }); expect(function () { batchTexture.getColor(); }).toThrowDeveloperError(); expect(function () { batchTexture.getColor(-1); }).toThrowDeveloperError(); expect(function () { batchTexture.getColor(1); }).toThrowDeveloperError(); }); it("getColor throws with undefined result", function () { var batchTexture = new BatchTexture({ owner: mockOwner, featuresLength: 1, }); expect(function () { batchTexture.getColor(0); }).toThrowDeveloperError(); }); it("getColor", function () { var batchTexture = new BatchTexture({ owner: mockOwner, featuresLength: 1, }); // Color is true by default expect(batchTexture.getColor(0, result)).toEqual(Color.WHITE); batchTexture.setColor(0, Color.YELLOW); expect(batchTexture.getColor(0, result)).toEqual(Color.YELLOW); }); }, "WebGL" );