12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- // Copyright (C) 2015 André Bargull. All rights reserved.
- // This code is governed by the BSD license found in the LICENSE file.
- /*---
- description: |
- Collection of functions used to assert the correctness of TypedArray objects.
- ---*/
- /**
- * Array containing every typed array constructor.
- */
- var typedArrayConstructors = [
- Float64Array,
- Float32Array,
- Int32Array,
- Int16Array,
- Int8Array,
- Uint32Array,
- Uint16Array,
- Uint8Array,
- Uint8ClampedArray
- ];
- var floatArrayConstructors = typedArrayConstructors.slice(0, 2);
- var intArrayConstructors = typedArrayConstructors.slice(2, 7);
- /**
- * The %TypedArray% intrinsic constructor function.
- */
- var TypedArray = Object.getPrototypeOf(Int8Array);
- /**
- * Callback for testing a typed array constructor.
- *
- * @callback typedArrayConstructorCallback
- * @param {Function} Constructor the constructor object to test with.
- */
- /**
- * Calls the provided function for every typed array constructor.
- *
- * @param {typedArrayConstructorCallback} f - the function to call for each typed array constructor.
- * @param {Array} selected - An optional Array with filtered typed arrays
- */
- function testWithTypedArrayConstructors(f, selected) {
- var constructors = selected || typedArrayConstructors;
- for (var i = 0; i < constructors.length; ++i) {
- var constructor = constructors[i];
- try {
- f(constructor);
- } catch (e) {
- e.message += " (Testing with " + constructor.name + ".)";
- throw e;
- }
- }
- }
- /**
- * Helper for conversion operations on TypedArrays, the expected values
- * properties are indexed in order to match the respective value for each
- * TypedArray constructor
- * @param {Function} fn - the function to call for each constructor and value.
- * will be called with the constructor, value, expected
- * value, and a initial value that can be used to avoid
- * a false positive with an equivalent expected value.
- */
- function testTypedArrayConversions(byteConversionValues, fn) {
- var values = byteConversionValues.values;
- var expected = byteConversionValues.expected;
- testWithTypedArrayConstructors(function(TA) {
- var name = TA.name.slice(0, -5);
- return values.forEach(function(value, index) {
- var exp = expected[name][index];
- var initial = 0;
- if (exp === 0) {
- initial = 1;
- }
- fn(TA, value, exp, initial);
- });
- });
- }
|