mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-31 11:44:31 +01:00 
			
		
		
		
	Improve coverage for section 21: String (#712)
This changeset increases coverage for section 21, specifically "21.1 String Objects". * Add tests for "this" validation of String methods * Add tests for ToNumber as used by String methods * Add test for `length` prop of exotic String objs * fixup! Add test for `length` prop of exotic String objs
This commit is contained in:
		
							parent
							
								
									021d44822c
								
							
						
					
					
						commit
						f554f68ae9
					
				
							
								
								
									
										29
									
								
								test/built-ins/String/length.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								test/built-ins/String/length.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-properties-of-string-instances-length | ||||
| es6id: 21.1.4.1 | ||||
| description: The "length" property of String objects | ||||
| info: | | ||||
|   [...] | ||||
|   4. Return ? StringCreate(s, ? GetPrototypeFromConstructor(NewTarget, | ||||
|      "%StringPrototype%")). | ||||
| includes: [propertyHelper.js] | ||||
| ---*/ | ||||
| 
 | ||||
| var str = new String(''); | ||||
| 
 | ||||
| verifyNotEnumerable(str, 'length'); | ||||
| verifyNotWritable(str, 'length'); | ||||
| verifyNotConfigurable(str, 'length'); | ||||
| 
 | ||||
| assert.sameValue(str.length, 0, 'empty string'); | ||||
| 
 | ||||
| str = new String(' '); | ||||
| assert.sameValue(str.length, 1, 'whitespace'); | ||||
| 
 | ||||
| str = new String(' \b '); | ||||
| assert.sameValue(str.length, 3, 'character escape (U+008, "backspace")'); | ||||
| 
 | ||||
| str = new String('\ud834\udf06'); | ||||
| assert.sameValue(str.length, 2,  'Unicode escape (surrogate pair)'); | ||||
							
								
								
									
										21
									
								
								test/built-ins/String/prototype/charAt/pos-coerce-err.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/built-ins/String/prototype/charAt/pos-coerce-err.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.charat | ||||
| es6id: 21.1.3.1 | ||||
| description: Error when attempting to coerce providec "pos" to a Number | ||||
| info: | | ||||
|   [...] | ||||
|   3. Let position be ? ToInteger(pos). | ||||
|   [...] | ||||
| 
 | ||||
|   7.1.4 ToInteger | ||||
| 
 | ||||
|   1. Let number be ? ToNumber(argument). | ||||
| ---*/ | ||||
| 
 | ||||
| var noCoerce = Object.create(null); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   ''.charAt(noCoerce); | ||||
| }); | ||||
							
								
								
									
										17
									
								
								test/built-ins/String/prototype/charAt/pos-coerce-string.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								test/built-ins/String/prototype/charAt/pos-coerce-string.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.charat | ||||
| es6id: 21.1.3.1 | ||||
| description: Coercion of "pos" string value into number | ||||
| info: | | ||||
|   [...] | ||||
|   3. Let position be ? ToInteger(pos). | ||||
|   [...] | ||||
| 
 | ||||
|   7.1.4 ToInteger | ||||
| 
 | ||||
|   1. Let number be ? ToNumber(argument). | ||||
| ---*/ | ||||
| 
 | ||||
| assert.sameValue('abcd'.charAt('   +00200.0000E-0002   '), 'c'); | ||||
							
								
								
									
										26
									
								
								test/built-ins/String/prototype/charAt/pos-rounding.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								test/built-ins/String/prototype/charAt/pos-rounding.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.charat | ||||
| es6id: 21.1.3.1 | ||||
| description: Rounding of the provided "pos" number | ||||
| info: | | ||||
|   [...] | ||||
|   3. Let position be ? ToInteger(pos). | ||||
|   [...] | ||||
| 
 | ||||
|   7.1.4 ToInteger | ||||
| 
 | ||||
|   1. Let number be ? ToNumber(argument). | ||||
|   2. If number is NaN, return +0. | ||||
|   3. If number is +0, -0, +∞, or -∞, return number. | ||||
|   4. Return the number value that is the same sign as number and whose | ||||
|      magnitude is floor(abs(number)).  | ||||
| ---*/ | ||||
| 
 | ||||
| assert.sameValue('abc'.charAt(-0.99999), 'a', '-0.99999'); | ||||
| assert.sameValue('abc'.charAt(-0.00001), 'a', '-0.00001'); | ||||
| assert.sameValue('abc'.charAt(0.00001), 'a', '0.00001'); | ||||
| assert.sameValue('abc'.charAt(0.99999), 'a', '0.99999'); | ||||
| assert.sameValue('abc'.charAt(1.00001), 'b', '1.00001'); | ||||
| assert.sameValue('abc'.charAt(1.99999), 'b', '1.99999'); | ||||
							
								
								
									
										21
									
								
								test/built-ins/String/prototype/charAt/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/built-ins/String/prototype/charAt/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.charat | ||||
| es6id: 21.1.3.1 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var charAt = String.prototype.charAt; | ||||
| 
 | ||||
| assert.sameValue(typeof charAt, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   charAt.call(undefined, 0); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   charAt.call(null, 0); | ||||
| }, 'null'); | ||||
							
								
								
									
										21
									
								
								test/built-ins/String/prototype/charCodeAt/pos-coerce-err.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/built-ins/String/prototype/charCodeAt/pos-coerce-err.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.charcodeat | ||||
| es6id: 21.1.3.2 | ||||
| description: Error when attempting to coerce providec "pos" to a Number | ||||
| info: | | ||||
|   [...] | ||||
|   3. Let position be ? ToInteger(pos). | ||||
|   [...] | ||||
| 
 | ||||
|   7.1.4 ToInteger | ||||
| 
 | ||||
|   1. Let number be ? ToNumber(argument). | ||||
| ---*/ | ||||
| 
 | ||||
| var noCoerce = Object.create(null); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   ''.charCodeAt(noCoerce); | ||||
| }); | ||||
							
								
								
									
										19
									
								
								test/built-ins/String/prototype/charCodeAt/pos-coerce-string.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								test/built-ins/String/prototype/charCodeAt/pos-coerce-string.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.charcodeat | ||||
| es6id: 21.1.3.2 | ||||
| description: Coercion of "pos" string value into number | ||||
| info: | | ||||
|   [...] | ||||
|   3. Let position be ? ToInteger(pos). | ||||
|   [...] | ||||
| 
 | ||||
|   7.1.4 ToInteger | ||||
| 
 | ||||
|   1. Let number be ? ToNumber(argument). | ||||
| ---*/ | ||||
| 
 | ||||
| var cCode = 99; | ||||
| 
 | ||||
| assert.sameValue('abcd'.charCodeAt('   +00200.0000E-0002   '), cCode); | ||||
							
								
								
									
										29
									
								
								test/built-ins/String/prototype/charCodeAt/pos-rounding.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								test/built-ins/String/prototype/charCodeAt/pos-rounding.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.charcodeat | ||||
| es6id: 21.1.3.2 | ||||
| description: Rounding of the provided "pos" number | ||||
| info: | | ||||
|   [...] | ||||
|   3. Let position be ? ToInteger(pos). | ||||
|   [...] | ||||
| 
 | ||||
|   7.1.4 ToInteger | ||||
| 
 | ||||
|   1. Let number be ? ToNumber(argument). | ||||
|   2. If number is NaN, return +0. | ||||
|   3. If number is +0, -0, +∞, or -∞, return number. | ||||
|   4. Return the number value that is the same sign as number and whose | ||||
|      magnitude is floor(abs(number)).  | ||||
| ---*/ | ||||
| 
 | ||||
| var aCode = 97; | ||||
| var bCode = 98; | ||||
| 
 | ||||
| assert.sameValue('abc'.charCodeAt(-0.99999), aCode, '-0.99999'); | ||||
| assert.sameValue('abc'.charCodeAt(-0.00001), aCode, '-0.00001'); | ||||
| assert.sameValue('abc'.charCodeAt(0.00001), aCode, '0.00001'); | ||||
| assert.sameValue('abc'.charCodeAt(0.99999), aCode, '0.99999'); | ||||
| assert.sameValue('abc'.charCodeAt(1.00001), bCode, '1.00001'); | ||||
| assert.sameValue('abc'.charCodeAt(1.99999), bCode, '1.99999'); | ||||
							
								
								
									
										21
									
								
								test/built-ins/String/prototype/charCodeAt/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/built-ins/String/prototype/charCodeAt/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.charcodeat | ||||
| es6id: 21.1.3.2 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var charCodeAt = String.prototype.charCodeAt; | ||||
| 
 | ||||
| assert.sameValue(typeof charCodeAt, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   charCodeAt.call(undefined, 0); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   charCodeAt.call(null, 0); | ||||
| }, 'null'); | ||||
							
								
								
									
										21
									
								
								test/built-ins/String/prototype/concat/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/built-ins/String/prototype/concat/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.concat | ||||
| es6id: 21.1.3.4 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var concat = String.prototype.concat; | ||||
| 
 | ||||
| assert.sameValue(typeof concat, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   concat.call(undefined, ''); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   concat.call(null, ''); | ||||
| }, 'null'); | ||||
							
								
								
									
										21
									
								
								test/built-ins/String/prototype/indexOf/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/built-ins/String/prototype/indexOf/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.indexof | ||||
| es6id: 21.1.3.8 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var indexOf = String.prototype.indexOf; | ||||
| 
 | ||||
| assert.sameValue(typeof indexOf, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   indexOf.call(undefined, ''); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   indexOf.call(null, ''); | ||||
| }, 'null'); | ||||
							
								
								
									
										21
									
								
								test/built-ins/String/prototype/lastIndexOf/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/built-ins/String/prototype/lastIndexOf/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.lastindexof | ||||
| es6id: 21.1.3.9 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var lastIndexOf = String.prototype.lastIndexOf; | ||||
| 
 | ||||
| assert.sameValue(typeof lastIndexOf, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   lastIndexOf.call(undefined, ''); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   lastIndexOf.call(null, ''); | ||||
| }, 'null'); | ||||
							
								
								
									
										21
									
								
								test/built-ins/String/prototype/localeCompare/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/built-ins/String/prototype/localeCompare/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.localecompare | ||||
| es6id: 21.1.3.10 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var localeCompare = String.prototype.localeCompare; | ||||
| 
 | ||||
| assert.sameValue(typeof localeCompare, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   localeCompare.call(undefined, ''); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   localeCompare.call(null, ''); | ||||
| }, 'null'); | ||||
							
								
								
									
										21
									
								
								test/built-ins/String/prototype/match/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/built-ins/String/prototype/match/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.match | ||||
| es6id: 21.1.3.11 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var match = String.prototype.match; | ||||
| 
 | ||||
| assert.sameValue(typeof match, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   match.call(undefined, /./); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   match.call(null, /./); | ||||
| }, 'null'); | ||||
							
								
								
									
										21
									
								
								test/built-ins/String/prototype/replace/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/built-ins/String/prototype/replace/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.replace | ||||
| es6id: 21.1.3.14 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var replace = String.prototype.replace; | ||||
| 
 | ||||
| assert.sameValue(typeof replace, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   replace.call(undefined, '', ''); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   replace.call(null, '', ''); | ||||
| }, 'null'); | ||||
							
								
								
									
										21
									
								
								test/built-ins/String/prototype/search/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/built-ins/String/prototype/search/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.search | ||||
| es6id: 21.1.3.15 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var search = String.prototype.search; | ||||
| 
 | ||||
| assert.sameValue(typeof search, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   search.call(undefined, /./); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   search.call(null, /./); | ||||
| }, 'null'); | ||||
							
								
								
									
										21
									
								
								test/built-ins/String/prototype/slice/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/built-ins/String/prototype/slice/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.slice | ||||
| es6id: 21.1.3.16 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var slice = String.prototype.slice; | ||||
| 
 | ||||
| assert.sameValue(typeof slice, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   slice.call(undefined, 0); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   slice.call(null, 0); | ||||
| }, 'null'); | ||||
							
								
								
									
										21
									
								
								test/built-ins/String/prototype/split/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/built-ins/String/prototype/split/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.split | ||||
| es6id: 21.1.3.17 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var split = String.prototype.split; | ||||
| 
 | ||||
| assert.sameValue(typeof split, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   split.call(undefined, ''); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   split.call(null, ''); | ||||
| }, 'null'); | ||||
							
								
								
									
										21
									
								
								test/built-ins/String/prototype/substring/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/built-ins/String/prototype/substring/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.substring | ||||
| es6id: 21.1.3.19 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var substring = String.prototype.substring; | ||||
| 
 | ||||
| assert.sameValue(typeof substring, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   substring.call(undefined, 0, 1); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   substring.call(null, 0, 1); | ||||
| }, 'null'); | ||||
							
								
								
									
										27
									
								
								test/built-ins/String/prototype/toLocaleLowerCase/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								test/built-ins/String/prototype/toLocaleLowerCase/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.tolocalelowercase | ||||
| es6id: 21.1.3.20 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   This function works exactly the same as toLowerCase except that its result is | ||||
|   intended to yield the correct result for the host environment's current | ||||
|   locale, rather than a locale-independent result. | ||||
| 
 | ||||
|   21.1.3.24 String.prototype.toLowerCase | ||||
| 
 | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var toLocaleLowerCase = String.prototype.toLocaleLowerCase; | ||||
| 
 | ||||
| assert.sameValue(typeof toLocaleLowerCase, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   toLocaleLowerCase.call(undefined); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   toLocaleLowerCase.call(null); | ||||
| }, 'null'); | ||||
							
								
								
									
										33
									
								
								test/built-ins/String/prototype/toLocaleUpperCase/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								test/built-ins/String/prototype/toLocaleUpperCase/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.tolocaleuppercase | ||||
| es6id: 21.1.3.21 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   This function works exactly the same as toUpperCase except that its result is | ||||
|   intended to yield the correct result for the host environment's current | ||||
|   locale, rather than a locale-independent result. | ||||
| 
 | ||||
|   21.1.3.26 String.prototype.toUpperCase | ||||
| 
 | ||||
|   This function behaves in exactly the same way as | ||||
|   String.prototype.toLowerCase, except that code points are mapped to their | ||||
|   uppercase equivalents as specified in the Unicode Character Database. | ||||
| 
 | ||||
|   21.1.3.24 String.prototype.toLowerCase | ||||
| 
 | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var toLocaleUpperCase = String.prototype.toLocaleUpperCase; | ||||
| 
 | ||||
| assert.sameValue(typeof toLocaleUpperCase, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   toLocaleUpperCase.call(undefined); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   toLocaleUpperCase.call(null); | ||||
| }, 'null'); | ||||
							
								
								
									
										21
									
								
								test/built-ins/String/prototype/toLowerCase/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								test/built-ins/String/prototype/toLowerCase/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.tolowercase | ||||
| es6id: 21.1.3.22 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var toLowerCase = String.prototype.toLowerCase; | ||||
| 
 | ||||
| assert.sameValue(typeof toLowerCase, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   toLowerCase.call(undefined); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   toLowerCase.call(null); | ||||
| }, 'null'); | ||||
							
								
								
									
										27
									
								
								test/built-ins/String/prototype/toUpperCase/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								test/built-ins/String/prototype/toUpperCase/this-value-not-obj-coercible.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | ||||
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| esid: sec-string.prototype.touppercase | ||||
| es6id: 21.1.3.24 | ||||
| description: The "this" value must be object-coercible | ||||
| info: | | ||||
|   This function behaves in exactly the same way as | ||||
|   String.prototype.toLowerCase, except that code points are mapped to their | ||||
|   uppercase equivalents as specified in the Unicode Character Database. | ||||
| 
 | ||||
|   21.1.3.24 String.prototype.toLowerCase | ||||
| 
 | ||||
|   1. Let O be ? RequireObjectCoercible(this value). | ||||
| ---*/ | ||||
| 
 | ||||
| var toUpperCase = String.prototype.toUpperCase; | ||||
| 
 | ||||
| assert.sameValue(typeof toUpperCase, 'function'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   toUpperCase.call(undefined); | ||||
| }, 'undefined'); | ||||
| 
 | ||||
| assert.throws(TypeError, function() { | ||||
|   toUpperCase.call(null); | ||||
| }, 'null'); | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user