mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-16 00:11:28 +00:00
Implement <TypedArray>#sort and improve default comparator (#208)
This commit is contained in:
@ -538,6 +538,9 @@ function isArraysEqual<T>(a: Array<T>, b: Array<T>, len: i32 = 0): bool {
|
||||
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;
|
||||
@ -609,12 +612,29 @@ function assertSortedDefault<T>(arr: Array<T>): void {
|
||||
assertSorted<T>(arr, defaultComparator<T>());
|
||||
}
|
||||
|
||||
var reversed0: Array<i32> = [];
|
||||
var reversed1: Array<i32> = [1];
|
||||
var reversed2: Array<i32> = [2, 1];
|
||||
var reversed4: Array<i32> = [3, 2, 1, 0];
|
||||
// Tests for default comparator
|
||||
|
||||
var expected4: Array<i32> = [0, 1, 2, 3];
|
||||
var f32ArrayTyped: f32[] = [1.0, NaN, -Infinity, 1.00000001, 0.0, -1.0, -2.0, +Infinity];
|
||||
f32ArrayTyped.sort();
|
||||
assert(isArraysEqual<f32>(f32ArrayTyped, [-Infinity, -2.0, -1.0, 0.0, 1.0, 1.00000001, Infinity, NaN]));
|
||||
|
||||
var f64ArrayTyped: f64[] = [1.0, NaN, -Infinity, 1.000000000000001, 0.0, -1.0, -2.0, +Infinity];
|
||||
f64ArrayTyped.sort();
|
||||
assert(isArraysEqual<f64>(f64ArrayTyped, [-Infinity, -2.0, -1.0, 0.0, 1.0, 1.000000000000001, Infinity, NaN]));
|
||||
|
||||
var i32ArrayTyped: i32[] = [1, -2, -1, 0, 2];
|
||||
i32ArrayTyped.sort();
|
||||
assert(isArraysEqual<i32>(i32ArrayTyped, [-2, -1, 0, 1, 2]));
|
||||
|
||||
var u32ArrayTyped: u32[] = [1, 4294967295, 4294967294, 0, 2];
|
||||
u32ArrayTyped.sort();
|
||||
assert(isArraysEqual<u32>(u32ArrayTyped, [0, 1, 2, 4294967294, 4294967295]));
|
||||
|
||||
var reversed0: i32[] = [];
|
||||
var reversed1: i32[] = [1];
|
||||
var reversed2: i32[] = [2, 1];
|
||||
var reversed4: i32[] = [3, 2, 1, 0];
|
||||
var expected4: i32[] = [0, 1, 2, 3];
|
||||
|
||||
var reversed64 = createReverseOrderedArray(64);
|
||||
var reversed128 = createReverseOrderedArray(128);
|
||||
|
Reference in New Issue
Block a user