import { VertexAttributeSemantic } from "../../Source/Cesium.js"; describe("Scene/VertexAttributeSemantic", function () { it("hasSetIndex", function () { var semantics = [ VertexAttributeSemantic.POSITION, VertexAttributeSemantic.NORMAL, VertexAttributeSemantic.TANGENT, VertexAttributeSemantic.TEXCOORD, VertexAttributeSemantic.COLOR, VertexAttributeSemantic.JOINTS, VertexAttributeSemantic.WEIGHTS, VertexAttributeSemantic.FEATURE_ID, ]; var hasSetIndex = [false, false, false, true, true, true, true, true]; var semanticsLength = semantics.length; for (var i = 0; i < semanticsLength; ++i) { expect(VertexAttributeSemantic.hasSetIndex(semantics[i])).toBe( hasSetIndex[i] ); } }); it("hasSetIndex throws if semantic is undefined", function () { expect(function () { VertexAttributeSemantic.hasSetIndex(undefined); }).toThrowDeveloperError(); }); it("hasSetIndex throws if semantic is not a valid value", function () { expect(function () { VertexAttributeSemantic.hasSetIndex("OTHER"); }).toThrowDeveloperError(); }); it("fromGltfSemantic", function () { var gltfSemantics = [ "POSITION", "NORMAL", "TANGENT", "TEXCOORD_0", "TEXCOORD_1", "COLOR_0", "COLOR_1", "JOINTS_0", "JOINTS_1", "WEIGHTS_0", "WEIGHTS_1", "_FEATURE_ID_0", "_FEATURE_ID_1", "_BATCHID", "BATCHID", "_OTHER", ]; var expectedSemantics = [ VertexAttributeSemantic.POSITION, VertexAttributeSemantic.NORMAL, VertexAttributeSemantic.TANGENT, VertexAttributeSemantic.TEXCOORD, VertexAttributeSemantic.TEXCOORD, VertexAttributeSemantic.COLOR, VertexAttributeSemantic.COLOR, VertexAttributeSemantic.JOINTS, VertexAttributeSemantic.JOINTS, VertexAttributeSemantic.WEIGHTS, VertexAttributeSemantic.WEIGHTS, VertexAttributeSemantic.FEATURE_ID, VertexAttributeSemantic.FEATURE_ID, VertexAttributeSemantic.FEATURE_ID, VertexAttributeSemantic.FEATURE_ID, undefined, ]; var semanticsLength = gltfSemantics.length; for (var i = 0; i < semanticsLength; ++i) { expect(VertexAttributeSemantic.fromGltfSemantic(gltfSemantics[i])).toBe( expectedSemantics[i] ); } }); it("fromGltfSemantic throws if gltfSemantic is undefined", function () { expect(function () { VertexAttributeSemantic.fromGltfSemantic(undefined); }).toThrowDeveloperError(); }); it("fromPntsSemantic", function () { var pntsSemantics = [ "POSITION", "POSITION_QUANTIZED", "RGBA", "RGB", "RGB565", "NORMAL", "NORMAL_OCT16P", "BATCH_ID", ]; var expectedSemantics = [ VertexAttributeSemantic.POSITION, VertexAttributeSemantic.POSITION, VertexAttributeSemantic.COLOR, VertexAttributeSemantic.COLOR, VertexAttributeSemantic.COLOR, VertexAttributeSemantic.NORMAL, VertexAttributeSemantic.NORMAL, VertexAttributeSemantic.FEATURE_ID, ]; var semanticsLength = pntsSemantics.length; for (var i = 0; i < semanticsLength; ++i) { expect(VertexAttributeSemantic.fromPntsSemantic(pntsSemantics[i])).toBe( expectedSemantics[i] ); } }); it("fromPntsSemantic throws if pntsSemantic is undefined", function () { expect(function () { VertexAttributeSemantic.fromPntsSemantic(undefined); }).toThrowDeveloperError(); }); it("fromPntsSemantic throws if pntsSemantic is not a valid value", function () { expect(function () { VertexAttributeSemantic.fromPntsSemantic("OTHER"); }).toThrowDeveloperError(); }); it("getGlslType", function () { var semantics = [ VertexAttributeSemantic.POSITION, VertexAttributeSemantic.NORMAL, VertexAttributeSemantic.TANGENT, VertexAttributeSemantic.TEXCOORD, VertexAttributeSemantic.COLOR, VertexAttributeSemantic.JOINTS, VertexAttributeSemantic.WEIGHTS, VertexAttributeSemantic.FEATURE_ID, ]; var expectedShaderTypes = [ "vec3", "vec3", "vec3", "vec2", "vec4", "ivec4", "vec4", "int", ]; var semanticsLength = semantics.length; for (var i = 0; i < semanticsLength; ++i) { expect(VertexAttributeSemantic.getGlslType(semantics[i])).toBe( expectedShaderTypes[i] ); } }); it("getGlslType throws if semantic is undefined", function () { expect(function () { VertexAttributeSemantic.getGlslType(undefined); }).toThrowDeveloperError(); }); it("getGlslType throws if semantic is not a valid value", function () { expect(function () { VertexAttributeSemantic.getGlslType("OTHER"); }).toThrowDeveloperError(); }); it("getVariableName", function () { var semantics = [ VertexAttributeSemantic.POSITION, VertexAttributeSemantic.NORMAL, VertexAttributeSemantic.TANGENT, VertexAttributeSemantic.TEXCOORD, VertexAttributeSemantic.COLOR, VertexAttributeSemantic.JOINTS, VertexAttributeSemantic.WEIGHTS, VertexAttributeSemantic.FEATURE_ID, ]; var expectedVariableName = [ "positionMC", "normalMC", "tangentMC", "texCoord", "color", "joints", "weights", "featureId", ]; var semanticsLength = semantics.length; for (var i = 0; i < semanticsLength; ++i) { expect(VertexAttributeSemantic.getVariableName(semantics[i])).toBe( expectedVariableName[i] ); } }); it("getVariableName works with set index", function () { expect( VertexAttributeSemantic.getVariableName( VertexAttributeSemantic.FEATURE_ID, 0 ) ).toBe("featureId_0"); }); it("getVariableName throws if semantic is undefined", function () { expect(function () { VertexAttributeSemantic.getVariableName(undefined); }).toThrowDeveloperError(); }); it("getVariableName throws if semantic is not a valid value", function () { expect(function () { VertexAttributeSemantic.getVariableName("OTHER"); }).toThrowDeveloperError(); }); });