e0e8431d92
Until now, String.prototype.{trimLeft,trimRight} were non-standard language extensions, required for Web compatibility. The proposal at https://github.com/tc39/proposal-string-left-right-trim standardizes this functionality as String.prototype.{trimStart,trimEnd}, and defines String.prototype.{trimLeft,trimRight} as aliases for backwards compatibility. This patch implements that proposal behind the --harmony-string-trimming flag. Bug: v8:6530 Change-Id: Id21e624c12a79e6b782efb049a48901b9da7db71 Reviewed-on: https://chromium-review.googlesource.com/867044 Commit-Queue: Mathias Bynens <mathias@chromium.org> Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#50717}
235 lines
9.3 KiB
Plaintext
235 lines
9.3 KiB
Plaintext
# Copyright 2013 the V8 project authors. All rights reserved.
|
||
# Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
|
||
#
|
||
# Redistribution and use in source and binary forms, with or without
|
||
# modification, are permitted provided that the following conditions
|
||
# are met:
|
||
# 1. Redistributions of source code must retain the above copyright
|
||
# notice, this list of conditions and the following disclaimer.
|
||
# 2. Redistributions in binary form must reproduce the above copyright
|
||
# notice, this list of conditions and the following disclaimer in the
|
||
# documentation and/or other materials provided with the distribution.
|
||
#
|
||
# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
|
||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||
# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
|
||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
|
||
This test checks the `trim`, `trimStart`/`trimLeft`, and `trimEnd`/`trimRight` methods on `String.prototype`.
|
||
|
||
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
|
||
|
||
|
||
PASS whitespace[0].s.trim() is ''
|
||
PASS whitespace[0].s.trimStart() is ''
|
||
PASS whitespace[0].s.trimLeft() is ''
|
||
PASS whitespace[0].s.trimEnd() is ''
|
||
PASS whitespace[0].s.trimRight() is ''
|
||
PASS whitespace[1].s.trim() is ''
|
||
PASS whitespace[1].s.trimStart() is ''
|
||
PASS whitespace[1].s.trimLeft() is ''
|
||
PASS whitespace[1].s.trimEnd() is ''
|
||
PASS whitespace[1].s.trimRight() is ''
|
||
PASS whitespace[2].s.trim() is ''
|
||
PASS whitespace[2].s.trimStart() is ''
|
||
PASS whitespace[2].s.trimLeft() is ''
|
||
PASS whitespace[2].s.trimEnd() is ''
|
||
PASS whitespace[2].s.trimRight() is ''
|
||
PASS whitespace[3].s.trim() is ''
|
||
PASS whitespace[3].s.trimStart() is ''
|
||
PASS whitespace[3].s.trimLeft() is ''
|
||
PASS whitespace[3].s.trimEnd() is ''
|
||
PASS whitespace[3].s.trimRight() is ''
|
||
PASS whitespace[4].s.trim() is ''
|
||
PASS whitespace[4].s.trimStart() is ''
|
||
PASS whitespace[4].s.trimLeft() is ''
|
||
PASS whitespace[4].s.trimEnd() is ''
|
||
PASS whitespace[4].s.trimRight() is ''
|
||
PASS whitespace[5].s.trim() is ''
|
||
PASS whitespace[5].s.trimStart() is ''
|
||
PASS whitespace[5].s.trimLeft() is ''
|
||
PASS whitespace[5].s.trimEnd() is ''
|
||
PASS whitespace[5].s.trimRight() is ''
|
||
PASS whitespace[6].s.trim() is ''
|
||
PASS whitespace[6].s.trimStart() is ''
|
||
PASS whitespace[6].s.trimLeft() is ''
|
||
PASS whitespace[6].s.trimEnd() is ''
|
||
PASS whitespace[6].s.trimRight() is ''
|
||
PASS whitespace[7].s.trim() is ''
|
||
PASS whitespace[7].s.trimStart() is ''
|
||
PASS whitespace[7].s.trimLeft() is ''
|
||
PASS whitespace[7].s.trimEnd() is ''
|
||
PASS whitespace[7].s.trimRight() is ''
|
||
PASS whitespace[8].s.trim() is ''
|
||
PASS whitespace[8].s.trimStart() is ''
|
||
PASS whitespace[8].s.trimLeft() is ''
|
||
PASS whitespace[8].s.trimEnd() is ''
|
||
PASS whitespace[8].s.trimRight() is ''
|
||
PASS whitespace[9].s.trim() is ''
|
||
PASS whitespace[9].s.trimStart() is ''
|
||
PASS whitespace[9].s.trimLeft() is ''
|
||
PASS whitespace[9].s.trimEnd() is ''
|
||
PASS whitespace[9].s.trimRight() is ''
|
||
PASS whitespace[10].s.trim() is ''
|
||
PASS whitespace[10].s.trimStart() is ''
|
||
PASS whitespace[10].s.trimLeft() is ''
|
||
PASS whitespace[10].s.trimEnd() is ''
|
||
PASS whitespace[10].s.trimRight() is ''
|
||
PASS whitespace[11].s.trim() is ''
|
||
PASS whitespace[11].s.trimStart() is ''
|
||
PASS whitespace[11].s.trimLeft() is ''
|
||
PASS whitespace[11].s.trimEnd() is ''
|
||
PASS whitespace[11].s.trimRight() is ''
|
||
PASS whitespace[12].s.trim() is ''
|
||
PASS whitespace[12].s.trimStart() is ''
|
||
PASS whitespace[12].s.trimLeft() is ''
|
||
PASS whitespace[12].s.trimEnd() is ''
|
||
PASS whitespace[12].s.trimRight() is ''
|
||
PASS whitespace[13].s.trim() is ''
|
||
PASS whitespace[13].s.trimStart() is ''
|
||
PASS whitespace[13].s.trimLeft() is ''
|
||
PASS whitespace[13].s.trimEnd() is ''
|
||
PASS whitespace[13].s.trimRight() is ''
|
||
PASS whitespace[14].s.trim() is ''
|
||
PASS whitespace[14].s.trimStart() is ''
|
||
PASS whitespace[14].s.trimLeft() is ''
|
||
PASS whitespace[14].s.trimEnd() is ''
|
||
PASS whitespace[14].s.trimRight() is ''
|
||
PASS whitespace[15].s.trim() is ''
|
||
PASS whitespace[15].s.trimStart() is ''
|
||
PASS whitespace[15].s.trimLeft() is ''
|
||
PASS whitespace[15].s.trimEnd() is ''
|
||
PASS whitespace[15].s.trimRight() is ''
|
||
PASS whitespace[16].s.trim() is ''
|
||
PASS whitespace[16].s.trimStart() is ''
|
||
PASS whitespace[16].s.trimLeft() is ''
|
||
PASS whitespace[16].s.trimEnd() is ''
|
||
PASS whitespace[16].s.trimRight() is ''
|
||
PASS whitespace[17].s.trim() is ''
|
||
PASS whitespace[17].s.trimStart() is ''
|
||
PASS whitespace[17].s.trimLeft() is ''
|
||
PASS whitespace[17].s.trimEnd() is ''
|
||
PASS whitespace[17].s.trimRight() is ''
|
||
PASS whitespace[18].s.trim() is ''
|
||
PASS whitespace[18].s.trimStart() is ''
|
||
PASS whitespace[18].s.trimLeft() is ''
|
||
PASS whitespace[18].s.trimEnd() is ''
|
||
PASS whitespace[18].s.trimRight() is ''
|
||
PASS whitespace[19].s.trim() is ''
|
||
PASS whitespace[19].s.trimStart() is ''
|
||
PASS whitespace[19].s.trimLeft() is ''
|
||
PASS whitespace[19].s.trimEnd() is ''
|
||
PASS whitespace[19].s.trimRight() is ''
|
||
PASS whitespace[20].s.trim() is ''
|
||
PASS whitespace[20].s.trimStart() is ''
|
||
PASS whitespace[20].s.trimLeft() is ''
|
||
PASS whitespace[20].s.trimEnd() is ''
|
||
PASS whitespace[20].s.trimRight() is ''
|
||
FAIL whitespace[21].s.trim() should be . Was .
|
||
FAIL whitespace[21].s.trimStart() should be . Was .
|
||
FAIL whitespace[21].s.trimLeft() should be . Was .
|
||
FAIL whitespace[21].s.trimEnd() should be . Was .
|
||
FAIL whitespace[21].s.trimRight() should be . Was .
|
||
FAIL wsString.trim() should be . Was .
|
||
FAIL wsString.trimStart() should be . Was .
|
||
FAIL wsString.trimLeft() should be . Was .
|
||
FAIL wsString.trimEnd() should be . Was
|
||
|
||
.
|
||
FAIL wsString.trimRight() should be . Was
|
||
|
||
.
|
||
FAIL trimString.trim() should be foo bar. Was foo bar
|
||
|
||
.
|
||
FAIL trimString.trimStart() should be foo bar
|
||
|
||
. Was foo bar
|
||
|
||
.
|
||
FAIL trimString.trimLeft() should be foo bar
|
||
|
||
. Was foo bar
|
||
|
||
.
|
||
FAIL trimString.trimEnd() should be
|
||
|
||
foo bar. Was
|
||
|
||
foo bar
|
||
|
||
.
|
||
FAIL trimString.trimRight() should be
|
||
|
||
foo bar. Was
|
||
|
||
foo bar
|
||
|
||
.
|
||
FAIL leftTrimString.trim() should be foo bar. Was foo bar
|
||
|
||
.
|
||
PASS leftTrimString.trimStart() is leftTrimString
|
||
PASS leftTrimString.trimLeft() is leftTrimString
|
||
FAIL leftTrimString.trimEnd() should be foo bar. Was foo bar
|
||
|
||
.
|
||
FAIL leftTrimString.trimRight() should be foo bar. Was foo bar
|
||
|
||
.
|
||
FAIL rightTrimString.trim() should be foo bar. Was foo bar.
|
||
FAIL rightTrimString.trimStart() should be foo bar. Was foo bar.
|
||
FAIL rightTrimString.trimLeft() should be foo bar. Was foo bar.
|
||
PASS rightTrimString.trimEnd() is rightTrimString
|
||
PASS rightTrimString.trimRight() is rightTrimString
|
||
PASS trim.call(0) is '0'
|
||
PASS trimStart.call(0) is '0'
|
||
PASS trimLeft.call(0) is '0'
|
||
PASS trimEnd.call(0) is '0'
|
||
PASS trimRight.call(0) is '0'
|
||
PASS trim.call(Infinity) is 'Infinity'
|
||
PASS trimStart.call(Infinity) is 'Infinity'
|
||
PASS trimLeft.call(Infinity) is 'Infinity'
|
||
PASS trimEnd.call(Infinity) is 'Infinity'
|
||
PASS trimRight.call(Infinity) is 'Infinity'
|
||
PASS trim.call(NaN) is 'NaN'
|
||
PASS trimStart.call(NaN) is 'NaN'
|
||
PASS trimLeft.call(NaN) is 'NaN'
|
||
PASS trimEnd.call(NaN) is 'NaN'
|
||
PASS trimRight.call(NaN) is 'NaN'
|
||
PASS trim.call(true) is 'true'
|
||
PASS trimStart.call(true) is 'true'
|
||
PASS trimLeft.call(true) is 'true'
|
||
PASS trimEnd.call(true) is 'true'
|
||
PASS trimRight.call(true) is 'true'
|
||
PASS trim.call(false) is 'false'
|
||
PASS trimStart.call(false) is 'false'
|
||
PASS trimLeft.call(false) is 'false'
|
||
PASS trimEnd.call(false) is 'false'
|
||
PASS trimRight.call(false) is 'false'
|
||
PASS trim.call(({})) is '[object Object]'
|
||
PASS trimStart.call(({})) is '[object Object]'
|
||
PASS trimLeft.call(({})) is '[object Object]'
|
||
PASS trimEnd.call(({})) is '[object Object]'
|
||
PASS trimRight.call(({})) is '[object Object]'
|
||
PASS trim.call(({toString:function(){return 'wibble'}})) is 'wibble'
|
||
PASS trimStart.call(({toString:function(){return 'wibble'}})) is 'wibble'
|
||
PASS trimLeft.call(({toString:function(){return 'wibble'}})) is 'wibble'
|
||
PASS trimEnd.call(({toString:function(){return 'wibble'}})) is 'wibble'
|
||
PASS trimRight.call(({toString:function(){return 'wibble'}})) is 'wibble'
|
||
PASS trim.call(['an','array']) is 'an,array'
|
||
PASS trimStart.call(['an','array']) is 'an,array'
|
||
PASS trimLeft.call(['an','array']) is 'an,array'
|
||
PASS trimEnd.call(['an','array']) is 'an,array'
|
||
PASS trimRight.call(['an','array']) is 'an,array'
|
||
PASS successfullyParsed is true
|
||
|
||
TEST COMPLETE
|
||
|