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.
110 lines
3.3 KiB
JavaScript
110 lines
3.3 KiB
JavaScript
import { defaultValue } from "../Source/Cesium.js";
|
|
|
|
function createPackableArraySpecs(
|
|
packable,
|
|
unpackedArray,
|
|
packedArray,
|
|
stride,
|
|
namePrefix
|
|
) {
|
|
namePrefix = defaultValue(namePrefix, "");
|
|
|
|
it(namePrefix + " can pack", function () {
|
|
var actualPackedArray = packable.packArray(unpackedArray);
|
|
expect(actualPackedArray.length).toEqual(packedArray.length);
|
|
expect(actualPackedArray).toEqual(packedArray);
|
|
});
|
|
|
|
it(namePrefix + " can roundtrip", function () {
|
|
var actualPackedArray = packable.packArray(unpackedArray);
|
|
var result = packable.unpackArray(actualPackedArray);
|
|
expect(result).toEqual(unpackedArray);
|
|
});
|
|
|
|
it(namePrefix + " can unpack", function () {
|
|
var result = packable.unpackArray(packedArray);
|
|
expect(result).toEqual(unpackedArray);
|
|
});
|
|
|
|
it(namePrefix + " packArray works with typed arrays", function () {
|
|
var typedArray = new Float64Array(packedArray.length);
|
|
var result = packable.packArray(unpackedArray, typedArray);
|
|
expect(result).toEqual(new Float64Array(packedArray));
|
|
});
|
|
|
|
it(namePrefix + " packArray resizes arrays as needed", function () {
|
|
var emptyArray = [];
|
|
var result = packable.packArray(unpackedArray, emptyArray);
|
|
expect(result).toEqual(packedArray);
|
|
|
|
var largerArray = new Array(packedArray.length + 1).fill(0.0);
|
|
result = packable.packArray(unpackedArray, largerArray);
|
|
expect(result).toEqual(packedArray);
|
|
});
|
|
|
|
it(namePrefix + " packArray throws with undefined array", function () {
|
|
expect(function () {
|
|
packable.packArray(undefined);
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it(
|
|
namePrefix + " packArray throws for typed arrays of the wrong size",
|
|
function () {
|
|
expect(function () {
|
|
var tooSmall = new Float64Array(0);
|
|
packable.packArray(unpackedArray, tooSmall);
|
|
}).toThrowDeveloperError();
|
|
|
|
expect(function () {
|
|
var tooBig = new Float64Array(10);
|
|
packable.packArray(unpackedArray, tooBig);
|
|
}).toThrowDeveloperError();
|
|
}
|
|
);
|
|
|
|
it(namePrefix + " unpackArray works for typed arrays", function () {
|
|
var array = packable.unpackArray(new Float64Array(packedArray));
|
|
expect(array).toEqual(unpackedArray);
|
|
});
|
|
|
|
it(namePrefix + " unpackArray throws with undefined array", function () {
|
|
expect(function () {
|
|
packable.unpackArray(undefined);
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it(namePrefix + " unpackArray works with a result parameter", function () {
|
|
var array = [];
|
|
var result = packable.unpackArray(packedArray, array);
|
|
expect(result).toBe(array);
|
|
expect(result).toEqual(unpackedArray);
|
|
|
|
var PackableClass = packable;
|
|
array = new Array(unpackedArray.length);
|
|
for (var i = 0; i < unpackedArray.length; i++) {
|
|
array[i] = new PackableClass();
|
|
}
|
|
|
|
result = packable.unpackArray(packedArray, array);
|
|
expect(result).toBe(array);
|
|
expect(result).toEqual(unpackedArray);
|
|
});
|
|
|
|
it(
|
|
namePrefix + " unpackArray throws with array less than the minimum length",
|
|
function () {
|
|
expect(function () {
|
|
packable.unpackArray([1.0]);
|
|
}).toThrowDeveloperError();
|
|
}
|
|
);
|
|
|
|
it("unpackArray throws with array not multiple of stride", function () {
|
|
expect(function () {
|
|
packable.unpackArray(new Array(stride + 1).fill(1.0));
|
|
}).toThrowDeveloperError();
|
|
});
|
|
}
|
|
export default createPackableArraySpecs;
|