mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-18 01:11:32 +00:00
Add Array#fill (#250)
This commit is contained in:
@ -10,8 +10,54 @@ function internalCapacity<T>(array: Array<T>): i32 {
|
||||
return buffer.byteLength >> alignof<T>();
|
||||
}
|
||||
|
||||
// Checks if two arrays are equal
|
||||
function isArraysEqual<T>(a: Array<T>, b: Array<T>, len: i32 = 0): bool {
|
||||
if (!len) {
|
||||
len = a.length;
|
||||
if (len != b.length) return false;
|
||||
if (a === b) return true;
|
||||
}
|
||||
for (let i = 0; i < len; i++) {
|
||||
if (isFloat<T>()) {
|
||||
if (isNaN(a[i]) == isNaN(b[i])) continue;
|
||||
}
|
||||
if (a[i] != b[i]) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
var arr = new Array<i32>();
|
||||
|
||||
// Array#fill //////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
var arr8: u8[] = [1, 2, 3, 4, 5];
|
||||
|
||||
arr8.fill(1, 1, 3);
|
||||
assert(isArraysEqual<u8>(arr8, <u8[]>[1, 1, 1, 4, 5]));
|
||||
|
||||
arr8.fill(0);
|
||||
assert(isArraysEqual<u8>(arr8, <u8[]>[0, 0, 0, 0, 0]));
|
||||
|
||||
arr8.fill(1, 0, -3);
|
||||
assert(isArraysEqual<u8>(arr8, <u8[]>[1, 1, 0, 0, 0]));
|
||||
|
||||
arr8.fill(2, -2);
|
||||
assert(isArraysEqual<u8>(arr8, <u8[]>[1, 1, 0, 2, 2]));
|
||||
|
||||
var arr32: u32[] = [1, 2, 3, 4, 5];
|
||||
|
||||
arr32.fill(1, 1, 3);
|
||||
assert(isArraysEqual<u32>(arr32, <u32[]>[1, 1, 1, 4, 5]));
|
||||
|
||||
arr32.fill(0);
|
||||
assert(isArraysEqual<u32>(arr32, <u32[]>[0, 0, 0, 0, 0]));
|
||||
|
||||
arr32.fill(1, 0, -3);
|
||||
assert(isArraysEqual<u32>(arr32, <u32[]>[1, 1, 0, 0, 0]));
|
||||
|
||||
arr32.fill(2, -2);
|
||||
assert(isArraysEqual<u32>(arr32, <u32[]>[1, 1, 0, 2, 2]));
|
||||
|
||||
// Array#push/pop //////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
assert(arr.length == 0);
|
||||
@ -531,21 +577,6 @@ function isSorted<T>(data: Array<T>, comparator: (a: T, b: T) => i32 = defaultCo
|
||||
return true;
|
||||
}
|
||||
|
||||
// Checks if two arrays are equal
|
||||
function isArraysEqual<T>(a: Array<T>, b: Array<T>, len: i32 = 0): bool {
|
||||
if (!len) {
|
||||
if (a.length != b.length) return false;
|
||||
len = a.length;
|
||||
}
|
||||
for (let i = 0; i < len; i++) {
|
||||
if (isFloat<T>()) {
|
||||
if (isNaN(a[i]) && isNaN(a[i]) == isNaN(b[i])) continue;
|
||||
}
|
||||
if (a[i] != b[i]) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function createReverseOrderedArray(size: i32): Array<i32> {
|
||||
var arr = new Array<i32>(size);
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
|
Reference in New Issue
Block a user