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.
Cesium-Prequel/Specs/createPackableArraySpecs.js

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;