96 lines
2.6 KiB
JavaScript
96 lines
2.6 KiB
JavaScript
description(
|
|
"Tests the code path in typedArray.set that may have to do a copy via an intermediate buffer because the source and destination overlap and have different size elements (source is smaller than destination)."
|
|
);
|
|
|
|
function foo_reference(n) {
|
|
var array = new Int32Array(n + 1);
|
|
for (var i = 0; i < n; ++i)
|
|
array[i] = 42 + i;
|
|
var array2 = new Int32Array(array);
|
|
array2.set(new Uint8Array(array.buffer, 0, n), 1);
|
|
return array2;
|
|
}
|
|
|
|
function foo(n) {
|
|
var array = new Int32Array(n + 1);
|
|
for (var i = 0; i < n; ++i)
|
|
array[i] = 42 + i;
|
|
array.set(new Uint8Array(array.buffer, 0, n), 1);
|
|
return array;
|
|
}
|
|
|
|
function bar_reference(n) {
|
|
var array = new Int32Array(n + 1);
|
|
for (var i = 0; i < n; ++i)
|
|
array[i + 1] = 42 + i;
|
|
var array2 = new Int32Array(array);
|
|
array2.set(new Uint8Array(array.buffer, (n + 1) * 4 - n), 0);
|
|
return array2;
|
|
}
|
|
|
|
function bar(n) {
|
|
var array = new Int32Array(n + 1);
|
|
for (var i = 0; i < n; ++i)
|
|
array[i + 1] = 42 + i;
|
|
array.set(new Uint8Array(array.buffer, (n + 1) * 4 - n), 0);
|
|
return array;
|
|
}
|
|
|
|
function baz_reference(n) {
|
|
var array = new Int32Array(n);
|
|
for (var i = 0; i < n; ++i)
|
|
array[i] = 42 + i;
|
|
var array2 = new Int32Array(array);
|
|
array2.set(new Uint8Array(array.buffer, 0, n));
|
|
return array2;
|
|
}
|
|
|
|
function baz(n) {
|
|
var array = new Int32Array(n);
|
|
for (var i = 0; i < n; ++i)
|
|
array[i] = 42 + i;
|
|
array.set(new Uint8Array(array.buffer, 0, n));
|
|
return array;
|
|
}
|
|
|
|
function fuz_reference(n) {
|
|
var array = new Int32Array(n);
|
|
for (var i = 0; i < n; ++i)
|
|
array[i] = 42 + i;
|
|
var array2 = new Int32Array(array);
|
|
array2.set(new Uint8Array(array.buffer, n * 4 - n));
|
|
return array2;
|
|
}
|
|
|
|
function fuz(n) {
|
|
var array = new Int32Array(n);
|
|
for (var i = 0; i < n; ++i)
|
|
array[i] = 42 + i;
|
|
array.set(new Uint8Array(array.buffer, n * 4 - n));
|
|
return array;
|
|
}
|
|
|
|
function thingy_reference(n) {
|
|
var array = new Int32Array(n);
|
|
for (var i = 0; i < n; ++i)
|
|
array[i] = 42 + i;
|
|
var array2 = new Int32Array(array);
|
|
array2.set(new Uint8Array(array.buffer, 4, n));
|
|
return array2;
|
|
}
|
|
|
|
function thingy(n) {
|
|
var array = new Int32Array(n);
|
|
for (var i = 0; i < n; ++i)
|
|
array[i] = 42 + i;
|
|
array.set(new Uint8Array(array.buffer, 4, n));
|
|
return array;
|
|
}
|
|
|
|
shouldBe("foo(10)", "foo_reference(10)");
|
|
shouldBe("bar(10)", "bar_reference(10)");
|
|
shouldBe("baz(10)", "baz_reference(10)");
|
|
shouldBe("fuz(10)", "fuz_reference(10)");
|
|
shouldBe("thingy(10)", "thingy_reference(10)");
|
|
|