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

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;