Fix implementation of Array#splice (#347)

This commit is contained in:
Max Graey
2018-11-29 16:41:42 +02:00
committed by Daniel Wirtz
parent 1149abf824
commit 3c5c2cef80
7 changed files with 2371 additions and 1209 deletions

View File

@ -330,6 +330,60 @@ assert(internalCapacity<i32>(arr) == 5);
assert(arr[0] == 44);
assert(arr[1] == 42);
// Array#splice ////////////////////////////////////////////////////////////////////////////////////
var sarr: i32[] = [1, 2, 3, 4, 5];
assert(isArraysEqual<i32>(sarr.splice(0), <i32[]>[1, 2, 3, 4, 5]));
assert(isArraysEqual<i32>(sarr, <i32[]>[]));
sarr = <i32[]>[1, 2, 3, 4, 5];
assert(isArraysEqual<i32>(sarr.splice(2), <i32[]>[3, 4, 5]));
assert(isArraysEqual<i32>(sarr, <i32[]>[1, 2]));
sarr = <i32[]>[1, 2, 3, 4, 5];
assert(isArraysEqual<i32>(sarr.splice(2, 2), <i32[]>[3, 4]));
assert(isArraysEqual<i32>(sarr, <i32[]>[1, 2, 5]));
sarr = <i32[]>[1, 2, 3, 4, 5];
assert(isArraysEqual<i32>(sarr.splice(0, 1), <i32[]>[1]));
assert(isArraysEqual<i32>(sarr, <i32[]>[2, 3, 4, 5]));
sarr = <i32[]>[1, 2, 3, 4, 5];
assert(isArraysEqual<i32>(sarr.splice(-1), <i32[]>[5]));
assert(isArraysEqual<i32>(sarr, <i32[]>[1, 2, 3, 4]));
sarr = <i32[]>[1, 2, 3, 4, 5];
assert(isArraysEqual<i32>(sarr.splice(-2), <i32[]>[4, 5]));
assert(isArraysEqual<i32>(sarr, <i32[]>[1, 2, 3]));
sarr = <i32[]>[1, 2, 3, 4, 5];
assert(isArraysEqual<i32>(sarr.splice(-2, 1), <i32[]>[4]));
assert(isArraysEqual<i32>(sarr, <i32[]>[1, 2, 3, 5]));
sarr = <i32[]>[1, 2, 3, 4, 5];
assert(isArraysEqual<i32>(sarr.splice(-7, 1), <i32[]>[1]));
assert(isArraysEqual<i32>(sarr, <i32[]>[2, 3, 4, 5]));
sarr = <i32[]>[1, 2, 3, 4, 5];
assert(isArraysEqual<i32>(sarr.splice(-2, -1), <i32[]>[]));
assert(isArraysEqual<i32>(sarr, <i32[]>[1, 2, 3, 4, 5]));
sarr = <i32[]>[1, 2, 3, 4, 5];
assert(isArraysEqual<i32>(sarr.splice(1, -2), <i32[]>[]));
assert(isArraysEqual<i32>(sarr, <i32[]>[1, 2, 3, 4, 5]));
sarr = <i32[]>[1, 2, 3, 4, 5];
assert(isArraysEqual<i32>(sarr.splice(4, 0), <i32[]>[]));
assert(isArraysEqual<i32>(sarr, <i32[]>[1, 2, 3, 4, 5]));
sarr = <i32[]>[1, 2, 3, 4, 5];
assert(isArraysEqual<i32>(sarr.splice(7, 0), <i32[]>[]));
assert(isArraysEqual<i32>(sarr, <i32[]>[1, 2, 3, 4, 5]));
sarr = <i32[]>[1, 2, 3, 4, 5];
assert(isArraysEqual<i32>(sarr.splice(7, 5), <i32[]>[]));
assert(isArraysEqual<i32>(sarr, <i32[]>[1, 2, 3, 4, 5]));
// Array#findIndex /////////////////////////////////////////////////////////////////////////////////
arr[0] = 0;