Skip to content

Commit 39919be

Browse files
committed
add some more tests
1 parent 8b56b38 commit 39919be

File tree

2 files changed

+124
-4
lines changed

2 files changed

+124
-4
lines changed

tests/pure/es.array.sort.js

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,69 @@ QUnit.test('Array#sort', assert => {
88
assert.throws(() => sort([1, 2, 3], null), 'throws on null');
99
assert.throws(() => sort([1, 2, 3], {}), 'throws on {}');
1010

11-
const expected = Array(516);
12-
let array = Array(516);
11+
assert.deepEqual(sort([1, 3, 2]), [1, 2, 3], '#1');
12+
assert.deepEqual(sort([1, 3, 2, 11]), [1, 11, 2, 3], '#2');
13+
14+
let array = Array(5);
15+
array[0] = 1;
16+
array[2] = 3;
17+
array[4] = 2;
18+
let expected = Array(5);
19+
expected[0] = 1;
20+
expected[1] = 2;
21+
expected[2] = 3;
22+
assert.deepEqual(sort(array), expected, 'holes');
23+
24+
array = 'zyxwvutsrqponMLKJIHGFEDCBA'.split('');
25+
expected = 'ABCDEFGHIJKLMnopqrstuvwxyz'.split('');
26+
assert.deepEqual(sort(array), expected, 'alpha #1');
27+
28+
array = 'ёяюэьыъщшчцхфутсрПОНМЛКЙИЗЖЕДГВБА'.split('');
29+
expected = 'АБВГДЕЖЗИЙКЛМНОПрстуфхцчшщъыьэюяё'.split('');
30+
assert.deepEqual(sort(array), expected, 'alpha #2');
31+
32+
array = [undefined, 1];
33+
assert.notThrows(() => sort(array, () => { throw 1; }), 'undefined #1');
34+
assert.deepEqual(array, [1, undefined], 'undefined #2');
35+
36+
const object = {
37+
valueOf: () => 1,
38+
toString: () => -1,
39+
};
40+
41+
array = {
42+
0: undefined,
43+
1: 2,
44+
2: 1,
45+
3: 'X',
46+
4: -1,
47+
5: 'a',
48+
6: true,
49+
7: object,
50+
8: NaN,
51+
10: Infinity,
52+
length: 11,
53+
};
54+
55+
expected = {
56+
0: -1,
57+
1: object,
58+
2: 1,
59+
3: 2,
60+
4: Infinity,
61+
5: NaN,
62+
6: 'X',
63+
7: 'a',
64+
8: true,
65+
9: undefined,
66+
length: 11,
67+
};
68+
69+
assert.deepEqual(sort(array), expected, 'custom generic');
70+
1371
let index, mod, code, chr, value;
72+
expected = Array(516);
73+
array = Array(516);
1474

1575
for (index = 0; index < 516; index++) {
1676
mod = index % 4;

tests/tests/es.array.sort.js

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,69 @@ QUnit.test('Array#sort', assert => {
88
assert.looksNative(sort);
99
assert.nonEnumerable(Array.prototype, 'sort');
1010

11-
const expected = Array(516);
12-
let array = Array(516);
11+
assert.deepEqual([1, 3, 2].sort(), [1, 2, 3], '#1');
12+
assert.deepEqual([1, 3, 2, 11].sort(), [1, 11, 2, 3], '#2');
13+
14+
let array = Array(5);
15+
array[0] = 1;
16+
array[2] = 3;
17+
array[4] = 2;
18+
let expected = Array(5);
19+
expected[0] = 1;
20+
expected[1] = 2;
21+
expected[2] = 3;
22+
assert.deepEqual(array.sort(), expected, 'holes');
23+
24+
array = 'zyxwvutsrqponMLKJIHGFEDCBA'.split('');
25+
expected = 'ABCDEFGHIJKLMnopqrstuvwxyz'.split('');
26+
assert.deepEqual(array.sort(), expected, 'alpha #1');
27+
28+
array = 'ёяюэьыъщшчцхфутсрПОНМЛКЙИЗЖЕДГВБА'.split('');
29+
expected = 'АБВГДЕЖЗИЙКЛМНОПрстуфхцчшщъыьэюяё'.split('');
30+
assert.deepEqual(array.sort(), expected, 'alpha #2');
31+
32+
array = [undefined, 1];
33+
assert.notThrows(() => array.sort(() => { throw 1; }), 'undefined #1');
34+
assert.deepEqual(array, [1, undefined], 'undefined #2');
35+
36+
const object = {
37+
valueOf: () => 1,
38+
toString: () => -1,
39+
};
40+
41+
array = {
42+
0: undefined,
43+
1: 2,
44+
2: 1,
45+
3: 'X',
46+
4: -1,
47+
5: 'a',
48+
6: true,
49+
7: object,
50+
8: NaN,
51+
10: Infinity,
52+
length: 11,
53+
};
54+
55+
expected = {
56+
0: -1,
57+
1: object,
58+
2: 1,
59+
3: 2,
60+
4: Infinity,
61+
5: NaN,
62+
6: 'X',
63+
7: 'a',
64+
8: true,
65+
9: undefined,
66+
length: 11,
67+
};
68+
69+
assert.deepEqual(sort.call(array), expected, 'custom generic');
70+
1371
let index, mod, code, chr, value;
72+
expected = Array(516);
73+
array = Array(516);
1474

1575
for (index = 0; index < 516; index++) {
1676
mod = index % 4;

0 commit comments

Comments
 (0)