You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.4 KiB
JavaScript
111 lines
3.4 KiB
JavaScript
import { defaultValue } from "../Source/Cesium.js";
|
|
import { defined } from "../Source/Cesium.js";
|
|
import { Math as CesiumMath } from "../Source/Cesium.js";
|
|
|
|
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();
|
|
}
|
|
);
|
|
}
|
|
}
|
|
export default createPackableSpecs;
|