1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
// Copyright (C) 2020 Leo Balter. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-string.prototype.split
description: Separator is undefined, limit is a positive number, return a new array with the string
info: |
...
3. Let S be ? ToString(O).
4. Let A be ! ArrayCreate(0).
...
6. If limit is undefined, let lim be 232 - 1; else let lim be ? ToUint32(limit).
7. Let R be ? ToString(separator).
8. If lim = 0, return A.
9. If separator is undefined, then
a. Perform ! CreateDataPropertyOrThrow(A, "0", S).
b. Return A.
---*/
var str = 'undefined is not a function';
var result = str.split(undefined, 1);
assert.sameValue(Array.isArray(result), true, '1, result is array');
assert.sameValue(result.length, 1, '1, result.length');
assert.sameValue(result[0], str, '1, [0] is the same string');
result = str.split(undefined, 2);
assert.sameValue(Array.isArray(result), true, '2, result is array');
assert.sameValue(result.length, 1, '2, result.length');
assert.sameValue(result[0], str, '2, [0] is the same string');
result = str.split(undefined, undefined);
assert.sameValue(Array.isArray(result), true, 'undefined, result is array');
assert.sameValue(result.length, 1, 'undefined, result.length');
assert.sameValue(result[0], str, 'undefined, [0] is the same string');
result = str.split(undefined, true);
assert.sameValue(Array.isArray(result), true, 'boolean, result is array');
assert.sameValue(result.length, 1, 'boolean, result.length');
assert.sameValue(result[0], str, 'boolean, [0] is the same string');
result = str.split(undefined, 2 ** 32 + 1);
assert.sameValue(Array.isArray(result), true, 'ToUint32 2 ** 32 + 1, result is array');
assert.sameValue(result.length, 1, 'ToUint32 2 ** 32 + 1, result.length');
assert.sameValue(result[0], str, 'ToUint32 2 ** 32 + 1, [0] is the same string');
result = str.split(undefined, 2 ** 31);
assert.sameValue(Array.isArray(result), true, 'ToUint32 2 ** 31, result is array');
assert.sameValue(result.length, 1, 'ToUint32 2 ** 31, result.length');
assert.sameValue(result[0], str, 'ToUint32 2 ** 31, [0] is the same string');
result = str.split(undefined, 2 ** 16);
assert.sameValue(Array.isArray(result), true, 'ToUint32 2 ** 16, result is array');
assert.sameValue(result.length, 1, 'ToUint32 2 ** 16, result.length');
assert.sameValue(result[0], str, 'ToUint32 2 ** 16, [0] is the same string');
result = str.split(undefined, {valueOf() { return 1; }});
assert.sameValue(Array.isArray(result), true, 'boolean, result is array');
assert.sameValue(result.length, 1, 'boolean, result.length');
assert.sameValue(result[0], str, 'boolean, [0] is the same string');
reportCompare(0, 0);
|