DSDSServer2024/build/build.20240805/static/js/Cesium-1.53/Specs/createPackableSpecs.js

98 lines
3.7 KiB
JavaScript
Raw Normal View History

define([
'Core/defaultValue',
'Core/defined',
'Core/Math'
], function(
defaultValue,
defined,
CesiumMath) {
'use strict';
function createPackableSpecs(packable, instance, packedInstance, namePrefix) {
namePrefix = defaultValue(namePrefix, '');
it(namePrefix + ' can pack', function() {
var packedArray = [];
var returnArray = packable.pack(instance, packedArray);
expect(returnArray).toBe(packedArray);
var packedLength = defined(packable.packedLength) ? packable.packedLength : instance.packedLength;
expect(packedArray.length).toEqual(packedLength);
expect(packedArray).toEqualEpsilon(packedInstance, CesiumMath.EPSILON15);
});
it(namePrefix + ' can roundtrip', function() {
var packedArray = [];
packable.pack(instance, packedArray);
var result = packable.unpack(packedArray);
expect(instance).toEqual(result);
});
it(namePrefix + ' can unpack', function() {
var result = packable.unpack(packedInstance);
expect(result).toEqual(instance);
});
it(namePrefix + ' can pack with startingIndex', function() {
var packedArray = [0];
var expected = packedArray.concat(packedInstance);
packable.pack(instance, packedArray, 1);
expect(packedArray).toEqualEpsilon(expected, CesiumMath.EPSILON15);
});
it(namePrefix + ' can unpack with startingIndex', function() {
var packedArray = [0].concat(packedInstance);
var result = packable.unpack(packedArray, 1);
expect(instance).toEqual(result);
});
it(namePrefix + ' pack throws with undefined value', function() {
var array = [];
expect(function() {
packable.pack(undefined, array);
}).toThrowDeveloperError();
});
it(namePrefix + ' pack throws with undefined array', function() {
expect(function() {
packable.pack(instance, undefined);
}).toThrowDeveloperError();
});
it(namePrefix + ' unpack throws with undefined array', function() {
expect(function() {
packable.unpack(undefined);
}).toThrowDeveloperError();
});
if (typeof packable.convertPackedArrayForInterpolation === 'function') {
it(namePrefix + ' packs and unpacks for interpolation.', function() {
var packedForInterpolation = [];
packable.convertPackedArrayForInterpolation(packedInstance, 0, 0, packedForInterpolation);
var value = packable.unpackInterpolationResult(packedForInterpolation, packedInstance, 0, 0);
var result = packable.unpack(packedInstance);
expect(value).toEqual(result);
});
it(namePrefix + ' convertPackedArrayForInterpolation throws without array.', function(){
expect(function() {
packable.convertPackedArrayForInterpolation(undefined);
}).toThrowDeveloperError();
});
it(namePrefix + ' unpackInterpolationResult throws without packed array.', function(){
expect(function() {
packable.unpackInterpolationResult(undefined, []);
}).toThrowDeveloperError();
});
it(namePrefix + ' unpackInterpolationResult throws without source array.', function(){
expect(function() {
packable.unpackInterpolationResult([], undefined);
}).toThrowDeveloperError();
});
}
}
return createPackableSpecs;
});