Implement TrimStart TrimEnd and aliases (#4102)

Based on: https://tc39.es/ecma262/#sec-string.prototype.trim

JerryScript-DCO-1.0-Signed-off-by: Bela Toth tbela@inf.u-szeged.hu
This commit is contained in:
Tóth Béla
2020-08-25 13:10:36 +02:00
committed by GitHub
parent 85981457e6
commit 09c8d28b2c
10 changed files with 172 additions and 91 deletions
@@ -0,0 +1,29 @@
// Copyright JS Foundation and other contributors, http://js.foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
var test = " asd ";
assert(test.trimStart() === "asd ")
assert(test.trimStart().length === 5)
assert(test.trimLeft() === "asd ")
assert(test.trimLeft().length === 5)
assert(String.prototype.trimStart === String.prototype.trimLeft)
assert(test.trimEnd() === " asd")
assert(test.trimEnd().length === 5)
assert(test.trimRight() === " asd")
assert(test.trimRight().length === 5)
assert(String.prototype.trimEnd === String.prototype.trimRight)
assert(test.trim() === "asd")
assert(test.trim().length === 3)
-50
View File
@@ -92,12 +92,6 @@
<test id="annexB/built-ins/String/prototype/sup/name.js"><reason></reason></test>
<test id="annexB/built-ins/String/prototype/sup/prop-desc.js"><reason></reason></test>
<test id="annexB/built-ins/String/prototype/sup/this-val-tostring-err.js"><reason></reason></test>
<test id="annexB/built-ins/String/prototype/trimLeft/length.js"><reason></reason></test>
<test id="annexB/built-ins/String/prototype/trimLeft/name.js"><reason></reason></test>
<test id="annexB/built-ins/String/prototype/trimLeft/prop-desc.js"><reason></reason></test>
<test id="annexB/built-ins/String/prototype/trimRight/length.js"><reason></reason></test>
<test id="annexB/built-ins/String/prototype/trimRight/name.js"><reason></reason></test>
<test id="annexB/built-ins/String/prototype/trimRight/prop-desc.js"><reason></reason></test>
<test id="annexB/built-ins/TypedArrayConstructors/from/iterator-method-emulates-undefined.js"><reason></reason></test>
<test id="annexB/built-ins/unescape/four-ignore-bad-u.js"><reason></reason></test>
<test id="annexB/built-ins/unescape/four.js"><reason></reason></test>
@@ -1947,50 +1941,6 @@
<test id="built-ins/String/prototype/toLowerCase/Final_Sigma_U180E.js"><reason></reason></test>
<test id="built-ins/String/prototype/toLowerCase/special_casing_conditional.js"><reason></reason></test>
<test id="built-ins/String/prototype/toString/non-generic-realm.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/length.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/name.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/prop-desc.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-boolean.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-line-terminator.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-not-obj-coercible.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-number.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-object-cannot-convert-to-primitive-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-object-toprimitive-call-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-object-toprimitive-meth-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-object-toprimitive-meth-priority.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-object-toprimitive-returns-object-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-object-tostring-call-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-object-tostring-meth-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-object-tostring-meth-priority.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-object-tostring-returns-object-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-object-valueof-call-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-object-valueof-meth-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-object-valueof-meth-priority.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-object-valueof-returns-object-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-symbol-typeerror.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimEnd/this-value-whitespace.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/length.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/name.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/prop-desc.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-boolean.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-line-terminator.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-not-obj-coercible.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-number.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-object-cannot-convert-to-primitive-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-object-toprimitive-call-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-object-toprimitive-meth-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-object-toprimitive-meth-priority.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-object-toprimitive-returns-object-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-object-tostring-call-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-object-tostring-meth-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-object-tostring-meth-priority.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-object-tostring-returns-object-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-object-valueof-call-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-object-valueof-meth-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-object-valueof-meth-priority.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-object-valueof-returns-object-err.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-symbol-typeerror.js"><reason></reason></test>
<test id="built-ins/String/prototype/trimStart/this-value-whitespace.js"><reason></reason></test>
<test id="built-ins/String/prototype/valueOf/non-generic-realm.js"><reason></reason></test>
<test id="built-ins/String/symbol-string-coercion.js"><reason></reason></test>
<test id="built-ins/Symbol/asyncIterator/cross-realm.js"><reason></reason></test>