mirror of
https://github.com/tc39/test262.git
synced 2025-07-15 01:54:38 +02:00
Merge pull request #379 from bocoup/String.prototype.startsWith
Add tests for String.prototype.startsWith
This commit is contained in:
commit
c699bc84e4
39
test/built-ins/String/prototype/startsWith/coerced-values-of-position.js
vendored
Normal file
39
test/built-ins/String/prototype/startsWith/coerced-values-of-position.js
vendored
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Returns based on coerced values of position.
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
...
|
||||||
|
9. Let pos be ToInteger(position). (If position is undefined, this step
|
||||||
|
produces the value 0).
|
||||||
|
10. ReturnIfAbrupt(pos).
|
||||||
|
11. Let len be the number of elements in S.
|
||||||
|
12. Let start be min(max(pos, 0), len).
|
||||||
|
13. Let searchLength be the number of elements in searchStr.
|
||||||
|
14. If searchLength+start is greater than len, return false.
|
||||||
|
15. If the sequence of elements of S starting at start of length searchLength
|
||||||
|
is the same as the full element sequence of searchStr, return true.
|
||||||
|
16. Otherwise, return false.
|
||||||
|
...
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var str = 'The future is cool!';
|
||||||
|
|
||||||
|
assert(str.startsWith('The future', NaN), 'NaN coerced to 0');
|
||||||
|
assert(str.startsWith('The future', null), 'null coerced to 0');
|
||||||
|
assert(str.startsWith('The future', false), 'false coerced to 0');
|
||||||
|
assert(str.startsWith('The future', ''), '"" coerced to 0');
|
||||||
|
assert(str.startsWith('The future', '0'), '"0" coerced to 0');
|
||||||
|
assert(str.startsWith('The future', undefined), 'undefined coerced to 0');
|
||||||
|
assert(str.startsWith('The future', 0.4), '0.4 coerced to 0');
|
||||||
|
|
||||||
|
assert.sameValue(
|
||||||
|
str.startsWith('The future', true), false,
|
||||||
|
'true coerced to 1'
|
||||||
|
);
|
||||||
|
assert.sameValue(str.startsWith('The future', '1'), false, '"1" coerced to 1');
|
||||||
|
assert.sameValue(str.startsWith('The future', 1.4), false, '1.4 coerced to 1');
|
22
test/built-ins/String/prototype/startsWith/length.js
vendored
Normal file
22
test/built-ins/String/prototype/startsWith/length.js
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
String.prototype.startsWith.length value and descriptor.
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
The length property of the startsWith method is 1.
|
||||||
|
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
assert.sameValue(
|
||||||
|
String.prototype.startsWith.length, 1,
|
||||||
|
'The value of `String.prototype.startsWith.length` is `1`'
|
||||||
|
);
|
||||||
|
|
||||||
|
verifyNotEnumerable(String.prototype.startsWith, 'length');
|
||||||
|
verifyNotWritable(String.prototype.startsWith, 'length');
|
||||||
|
verifyConfigurable(String.prototype.startsWith, 'length');
|
22
test/built-ins/String/prototype/startsWith/name.js
vendored
Normal file
22
test/built-ins/String/prototype/startsWith/name.js
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
String.prototype.startsWith.name value and descriptor.
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
17 ECMAScript Standard Built-in Objects
|
||||||
|
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
assert.sameValue(
|
||||||
|
String.prototype.startsWith.name, 'startsWith',
|
||||||
|
'The value of `String.prototype.startsWith.name` is `"startsWith"`'
|
||||||
|
);
|
||||||
|
|
||||||
|
verifyNotEnumerable(String.prototype.startsWith, 'name');
|
||||||
|
verifyNotWritable(String.prototype.startsWith, 'name');
|
||||||
|
verifyConfigurable(String.prototype.startsWith, 'name');
|
43
test/built-ins/String/prototype/startsWith/out-of-bounds-position.js
vendored
Normal file
43
test/built-ins/String/prototype/startsWith/out-of-bounds-position.js
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Returns false if searchLength + start position is greater than string length.
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
...
|
||||||
|
11. Let len be the number of elements in S.
|
||||||
|
12. Let start be min(max(pos, 0), len).
|
||||||
|
13. Let searchLength be the number of elements in searchStr.
|
||||||
|
14. If searchLength+start is greater than len, return false.
|
||||||
|
...
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var str = 'The future is cool!';
|
||||||
|
|
||||||
|
assert.sameValue(
|
||||||
|
str.startsWith('!', str.length), false,
|
||||||
|
'str.startsWith("!", str.length) returns false'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(
|
||||||
|
str.startsWith('!', 100), false,
|
||||||
|
'str.startsWith("!", 100) returns false'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(
|
||||||
|
str.startsWith('!', Infinity), false,
|
||||||
|
'str.startsWith("!", Infinity) returns false'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert(
|
||||||
|
str.startsWith('The future', -1),
|
||||||
|
'position argument < 0 will search from the start of the string (-1)'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert(
|
||||||
|
str.startsWith('The future', -Infinity),
|
||||||
|
'position argument < 0 will search from the start of the string (-Infinity)'
|
||||||
|
);
|
22
test/built-ins/String/prototype/startsWith/return-abrupt-from-position-as-symbol.js
vendored
Normal file
22
test/built-ins/String/prototype/startsWith/return-abrupt-from-position-as-symbol.js
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Returns abrupt from ToInteger(position) as a Symbol.
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
...
|
||||||
|
9. Let pos be ToInteger(position). (If position is undefined, this step
|
||||||
|
produces the value 0).
|
||||||
|
10. ReturnIfAbrupt(pos).
|
||||||
|
...
|
||||||
|
features: [Symbol]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var position = Symbol();
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
''.startsWith('', position);
|
||||||
|
});
|
25
test/built-ins/String/prototype/startsWith/return-abrupt-from-position.js
vendored
Normal file
25
test/built-ins/String/prototype/startsWith/return-abrupt-from-position.js
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Returns abrupt from ToInteger(position).
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
...
|
||||||
|
9. Let pos be ToInteger(position). (If position is undefined, this step
|
||||||
|
produces the value 0).
|
||||||
|
10. ReturnIfAbrupt(pos).
|
||||||
|
...
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var position = {
|
||||||
|
valueOf: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
assert.throws(Test262Error, function() {
|
||||||
|
''.startsWith('', position);
|
||||||
|
});
|
21
test/built-ins/String/prototype/startsWith/return-abrupt-from-searchstring-as-symbol.js
vendored
Normal file
21
test/built-ins/String/prototype/startsWith/return-abrupt-from-searchstring-as-symbol.js
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Returns abrupt from ToString(searchString) as a Symbol
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
...
|
||||||
|
7. Let searchStr be ToString(searchString).
|
||||||
|
8. ReturnIfAbrupt(searchString).
|
||||||
|
...
|
||||||
|
features: [Symbol]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var s = Symbol();
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
''.startsWith(s);
|
||||||
|
});
|
42
test/built-ins/String/prototype/startsWith/return-abrupt-from-searchstring-regexp-test.js
vendored
Normal file
42
test/built-ins/String/prototype/startsWith/return-abrupt-from-searchstring-regexp-test.js
vendored
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Returns abrupt from IsRegExp(searchString).
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
...
|
||||||
|
4. Let isRegExp be IsRegExp(searchString).
|
||||||
|
5. ReturnIfAbrupt(isRegExp).
|
||||||
|
...
|
||||||
|
|
||||||
|
7.2.8 IsRegExp ( argument )
|
||||||
|
|
||||||
|
2. Let isRegExp be Get(argument, @@match).
|
||||||
|
3. ReturnIfAbrupt(isRegExp).
|
||||||
|
features: [Symbol.match]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var obj = {};
|
||||||
|
Object.defineProperty(obj, Symbol.match, {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.throws(Test262Error, function() {
|
||||||
|
''.startsWith(obj);
|
||||||
|
});
|
||||||
|
|
||||||
|
var regexp = /./;
|
||||||
|
Object.defineProperty(regexp, Symbol.match, {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.throws(Test262Error, function() {
|
||||||
|
''.startsWith(regexp);
|
||||||
|
});
|
24
test/built-ins/String/prototype/startsWith/return-abrupt-from-searchstring.js
vendored
Normal file
24
test/built-ins/String/prototype/startsWith/return-abrupt-from-searchstring.js
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Returns abrupt from ToString(searchString)
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
...
|
||||||
|
7. Let searchStr be ToString(searchString).
|
||||||
|
8. ReturnIfAbrupt(searchString).
|
||||||
|
...
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var obj = {
|
||||||
|
toString: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
assert.throws(Test262Error, function() {
|
||||||
|
''.startsWith(obj);
|
||||||
|
});
|
20
test/built-ins/String/prototype/startsWith/return-abrupt-from-this-as-symbol.js
vendored
Normal file
20
test/built-ins/String/prototype/startsWith/return-abrupt-from-this-as-symbol.js
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Returns abrupt from ToString(this) where this is a Symbol
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
1. Let O be RequireObjectCoercible(this value).
|
||||||
|
2. Let S be ToString(O).
|
||||||
|
3. ReturnIfAbrupt(S).
|
||||||
|
features: [Symbol]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var s = Symbol('');
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
String.prototype.startsWith.call(s, '');
|
||||||
|
});
|
23
test/built-ins/String/prototype/startsWith/return-abrupt-from-this.js
vendored
Normal file
23
test/built-ins/String/prototype/startsWith/return-abrupt-from-this.js
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Returns abrupt from ToString(this)
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
1. Let O be RequireObjectCoercible(this value).
|
||||||
|
2. Let S be ToString(O).
|
||||||
|
3. ReturnIfAbrupt(S).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var o = {
|
||||||
|
toString: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
assert.throws(Test262Error, function() {
|
||||||
|
String.prototype.startsWith.call(o, '');
|
||||||
|
});
|
40
test/built-ins/String/prototype/startsWith/return-true-if-searchstring-is-empty.js
vendored
Normal file
40
test/built-ins/String/prototype/startsWith/return-true-if-searchstring-is-empty.js
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Returns true if searchString.length == 0.
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
...
|
||||||
|
11. Let len be the number of elements in S.
|
||||||
|
12. Let start be min(max(pos, 0), len).
|
||||||
|
13. Let searchLength be the number of elements in searchStr.
|
||||||
|
14. If searchLength+start is greater than len, return false.
|
||||||
|
15. If the sequence of elements of S starting at start of length searchLength
|
||||||
|
is the same as the full element sequence of searchStr, return true.
|
||||||
|
...
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var str = 'The future is cool!';
|
||||||
|
|
||||||
|
assert(
|
||||||
|
str.startsWith(''),
|
||||||
|
'str.startsWith("") returns true'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert(
|
||||||
|
str.startsWith('', str.length),
|
||||||
|
'str.startsWith("", str.length) returns true'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert(
|
||||||
|
str.startsWith(''),
|
||||||
|
'str.startsWith("") returns true'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert(
|
||||||
|
str.startsWith('', Infinity),
|
||||||
|
'str.startsWith("", Infinity) returns true'
|
||||||
|
);
|
34
test/built-ins/String/prototype/startsWith/searchstring-found-with-position.js
vendored
Normal file
34
test/built-ins/String/prototype/startsWith/searchstring-found-with-position.js
vendored
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Returns true if searchString appears as a substring of the given string with a
|
||||||
|
given position.
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
...
|
||||||
|
11. Let len be the number of elements in S.
|
||||||
|
12. Let start be min(max(pos, 0), len).
|
||||||
|
13. Let searchLength be the number of elements in searchStr.
|
||||||
|
14. If searchLength+start is greater than len, return false.
|
||||||
|
15. If the sequence of elements of S starting at start of length searchLength
|
||||||
|
is the same as the full element sequence of searchStr, return true.
|
||||||
|
...
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var str = 'The future is cool!';
|
||||||
|
|
||||||
|
assert(
|
||||||
|
str.startsWith('The future', 0),
|
||||||
|
'str.startsWith("The future", 0) === true'
|
||||||
|
);
|
||||||
|
assert(
|
||||||
|
str.startsWith('future', 4),
|
||||||
|
'str.startsWith("future", 4) === true'
|
||||||
|
);
|
||||||
|
assert(
|
||||||
|
str.startsWith(' is cool!', 10),
|
||||||
|
'str.startsWith(" is cool!", 10) === true'
|
||||||
|
);
|
24
test/built-ins/String/prototype/startsWith/searchstring-found-without-position.js
vendored
Normal file
24
test/built-ins/String/prototype/startsWith/searchstring-found-without-position.js
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Returns true if searchString appears as a substring of the given string.
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
...
|
||||||
|
11. Let len be the number of elements in S.
|
||||||
|
12. Let start be min(max(pos, 0), len).
|
||||||
|
13. Let searchLength be the number of elements in searchStr.
|
||||||
|
14. If searchLength+start is greater than len, return false.
|
||||||
|
15. If the sequence of elements of S starting at start of length searchLength
|
||||||
|
is the same as the full element sequence of searchStr, return true.
|
||||||
|
...
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var str = 'The future is cool!';
|
||||||
|
|
||||||
|
assert(str.startsWith('The '), 'str.startsWith("The ") === true');
|
||||||
|
assert(str.startsWith('The future'), 'str.startsWith("The future") === true');
|
||||||
|
assert(str.startsWith(str), 'str.startsWith(str) === true');
|
21
test/built-ins/String/prototype/startsWith/searchstring-is-regexp-throws.js
vendored
Normal file
21
test/built-ins/String/prototype/startsWith/searchstring-is-regexp-throws.js
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Throws a TypeError if searchString is a RegExp.
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
...
|
||||||
|
4. Let isRegExp be IsRegExp(searchString).
|
||||||
|
5. ReturnIfAbrupt(isRegExp).
|
||||||
|
6. If isRegExp is true, throw a TypeError exception.
|
||||||
|
...
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var searchString = /./;
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
''.startsWith(searchString);
|
||||||
|
});
|
31
test/built-ins/String/prototype/startsWith/searchstring-not-found-with-position.js
vendored
Normal file
31
test/built-ins/String/prototype/startsWith/searchstring-not-found-with-position.js
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Returns false if searchString is not found with a given position.
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
...
|
||||||
|
11. Let len be the number of elements in S.
|
||||||
|
12. Let start be min(max(pos, 0), len).
|
||||||
|
13. Let searchLength be the number of elements in searchStr.
|
||||||
|
14. If searchLength+start is greater than len, return false.
|
||||||
|
15. If the sequence of elements of S starting at start of length searchLength
|
||||||
|
is the same as the full element sequence of searchStr, return true.
|
||||||
|
16. Otherwise, return false.
|
||||||
|
...
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var str = 'The future is cool!';
|
||||||
|
|
||||||
|
assert.sameValue(
|
||||||
|
str.startsWith('The future', 1), false,
|
||||||
|
'str.startsWith("The future", 1) === false'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(
|
||||||
|
str.startsWith(str, 1), false,
|
||||||
|
'str.startsWith(str, 1) === false'
|
||||||
|
);
|
34
test/built-ins/String/prototype/startsWith/searchstring-not-found-without-position.js
vendored
Normal file
34
test/built-ins/String/prototype/startsWith/searchstring-not-found-without-position.js
vendored
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Returns false if searchString is not found.
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
...
|
||||||
|
11. Let len be the number of elements in S.
|
||||||
|
12. Let start be min(max(pos, 0), len).
|
||||||
|
13. Let searchLength be the number of elements in searchStr.
|
||||||
|
14. If searchLength+start is greater than len, return false.
|
||||||
|
15. If the sequence of elements of S starting at start of length searchLength
|
||||||
|
is the same as the full element sequence of searchStr, return true.
|
||||||
|
16. Otherwise, return false.
|
||||||
|
...
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var str = 'The future is cool!';
|
||||||
|
|
||||||
|
assert.sameValue(
|
||||||
|
str.startsWith('Flash'), false,
|
||||||
|
'str.startsWith("Flash") === false'
|
||||||
|
);
|
||||||
|
assert.sameValue(
|
||||||
|
str.startsWith('THE FUTURE'), false,
|
||||||
|
'startsWith is case sensitive'
|
||||||
|
);
|
||||||
|
assert.sameValue(
|
||||||
|
str.startsWith('future is cool!'), false,
|
||||||
|
'str.startsWith("future is cool!") === false'
|
||||||
|
);
|
22
test/built-ins/String/prototype/startsWith/startsWith.js
vendored
Normal file
22
test/built-ins/String/prototype/startsWith/startsWith.js
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Property type and descriptor.
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
17 ECMAScript Standard Built-in Objects
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
assert.sameValue(
|
||||||
|
typeof String.prototype.startsWith,
|
||||||
|
'function',
|
||||||
|
'`typeof String.prototype.startsWith` is `function`'
|
||||||
|
);
|
||||||
|
|
||||||
|
verifyNotEnumerable(String.prototype, 'startsWith');
|
||||||
|
verifyWritable(String.prototype, 'startsWith');
|
||||||
|
verifyConfigurable(String.prototype, 'startsWith');
|
16
test/built-ins/String/prototype/startsWith/this-is-null-throws.js
vendored
Normal file
16
test/built-ins/String/prototype/startsWith/this-is-null-throws.js
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Throws TypeError when `this` is null
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
1. Let O be RequireObjectCoercible(this value).
|
||||||
|
2. Let S be ToString(O).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
String.prototype.startsWith.call(null, '');
|
||||||
|
});
|
16
test/built-ins/String/prototype/startsWith/this-is-undefined-throws.js
vendored
Normal file
16
test/built-ins/String/prototype/startsWith/this-is-undefined-throws.js
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 21.1.3.18
|
||||||
|
description: >
|
||||||
|
Throws TypeError when `this` is undefined
|
||||||
|
info: >
|
||||||
|
21.1.3.18 String.prototype.startsWith ( searchString [ , position ] )
|
||||||
|
|
||||||
|
1. Let O be RequireObjectCoercible(this value).
|
||||||
|
2. Let S be ToString(O).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
String.prototype.startsWith.call(undefined, '');
|
||||||
|
});
|
Loading…
x
Reference in New Issue
Block a user