haikuwebkit/LayoutTests/js/string-padstart-expected.txt

58 lines
2.6 KiB
Plaintext
Raw Permalink Normal View History

padStart/padEnd with Infinity produces unexpected result https://bugs.webkit.org/show_bug.cgi?id=159543 Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-07-07 Reviewed by Benjamin Poulain. Source/JavaScriptCore: * builtins/GlobalOperations.js: (globalPrivate.toLength): Fix style. * builtins/StringPrototype.js: (padStart): (padEnd): After all observable operations, and after empty string has been handled, throw an out of memory error if the resulting string would be greater than the maximum string size. * tests/es6/Object_static_methods_Object.getOwnPropertyDescriptors-proxy.js: (shouldThrow): Deleted. * tests/es6/Object_static_methods_Object.getOwnPropertyDescriptors.js: (shouldThrow): (testMeta): * tests/es6/String.prototype_methods_String.prototype.padEnd.js: (shouldThrow): (TestToLength): (TestMemoryLimits): (TestMeta): Deleted. * tests/es6/String.prototype_methods_String.prototype.padStart.js: (shouldThrow): (TestToLength): (TestMemoryLimits): Replace incorrect shouldThrow(..., errorType) with explicit shouldThrow(..., errorMessage). The old shouldThrow would incorrectly succeed if the expected error type was just "Error". Now we explicitly check the error message. LayoutTests: * js/script-tests/string-padend.js: Added. (thisObject.toString): (lengthObject.valueOf): (fillObject.toString): * js/script-tests/string-padstart.js: Added. (thisObject.toString): (lengthObject.valueOf): (fillObject.toString): * js/string-padend-expected.txt: Added. * js/string-padend.html: Added. * js/string-padstart-expected.txt: Added. * js/string-padstart.html: Added. Add some basic String.prototype.padStart/padEnd test coverage that is not just in the JavaScriptCore/tests/es6 directory. Canonical link: https://commits.webkit.org/177687@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202966 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-07-08 06:25:34 +00:00
This test checks the String.prototype.padStart.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
PASS String.prototype.padStart.length is 1
PASS String.prototype.padStart.name is "padStart"
PASS Object.getOwnPropertyDescriptor(String.prototype, "padStart").configurable is true
PASS Object.getOwnPropertyDescriptor(String.prototype, "padStart").enumerable is false
PASS Object.getOwnPropertyDescriptor(String.prototype, "padStart").writable is true
PASS Object.getOwnPropertyDescriptor(String.prototype, "padStart").get is undefined
PASS Object.getOwnPropertyDescriptor(String.prototype, "padStart").set is undefined
PASS Object.getOwnPropertyDescriptor(String.prototype, "padStart").value is String.prototype.padStart
PASS 'foo'.padStart() is 'foo'
PASS 'foo'.padStart(+0) is 'foo'
PASS 'foo'.padStart(-0) is 'foo'
PASS 'foo'.padStart(1) is 'foo'
PASS 'foo'.padStart(2) is 'foo'
PASS 'foo'.padStart(-2) is 'foo'
PASS 'foo'.padStart(10) is ' foo'
PASS 'foo'.padStart(10, undefined) is ' foo'
PASS 'foo'.padStart(10, 'x') is 'xxxxxxxfoo'
PASS 'foo'.padStart(10.5, 'z') is 'zzzzzzzfoo'
PASS 'foo'.padStart(10, 'bar') is 'barbarbfoo'
PASS 'foo'.padStart(10, '123456789') is '1234567foo'
PASS 'foo'.padStart(999, '') is 'foo'
PASS ''.padStart(1, '') is ''
PASS ''.padStart(2, 'bar') is 'ba'
PASS 'x'.padStart(2, 'bar') is 'bx'
PASS 'xx'.padStart(2, 'bar') is 'xx'
PASS 'xx'.padStart(Math.PI, 'bar') is 'bxx'
PASS ''.padStart(true, 'ABC') is 'A'
PASS ''.padStart(false, 'ABC') is ''
PASS ''.padStart(null, 'ABC') is ''
PASS ''.padStart({}, 'ABC') is ''
PASS ''.padStart(NaN, 'ABC') is ''
PASS 'ABC'.padStart(10, true) is 'truetruABC'
PASS 'ABC'.padStart(10, false) is 'falsefaABC'
PASS 'ABC'.padStart(10, null) is 'nullnulABC'
PASS 'ABC'.padStart(10, {}) is '[objectABC'
PASS 'ABC'.padStart(10, NaN) is 'NaNNaNNABC'
PASS "x".padStart(Infinity, "") did not throw exception.
[JSC] Make OutOfMemory error as instance of RangeError https://bugs.webkit.org/show_bug.cgi?id=211952 Reviewed by Mark Lam. JSTests: * ChakraCore/test/Error/outofmem.baseline-jsc: * es6/String.prototype_methods_String.prototype.padEnd.js: (TestMemoryLimits): * es6/String.prototype_methods_String.prototype.padStart.js: (TestMemoryLimits): * slowMicrobenchmarks/function-constructor-with-huge-strings.js: * stress/array-join-on-strings-need-overflow-checks.js: * stress/big-wasm-memory-grow-no-max.js: (test): * stress/big-wasm-memory-grow.js: (test): * stress/big-wasm-memory.js: (test): * stress/bigint-exponential-oom.js: (shouldThrow): * stress/bigint-int32-min-shift.js: (shouldThrow): * stress/check-symbol-description-oom.js: * stress/constructFunctionSkippingEvalEnabledCheck-should-throw-out-of-memory-error.js: * stress/intl-canonicalize-locale-list-error-oom.js: (shouldThrow): * stress/joined-strings-should-not-exceed-max-string-length.js: * stress/js-fixed-array-out-of-memory.js: (test): * stress/json-stringified-overflow-2.js: (catch): * stress/json-stringified-overflow.js: (catch): * stress/json-stringify-string-builder-overflow.js: * stress/missing-exception-check-in-JSValue-toWTFStringSlowCase.js: * stress/missing-exception-check-in-array-prototype-fastJoin.js: * stress/missing-exception-check-in-canonicalizeLocaleList.js: * stress/missing-exception-check-in-json-stringifier-gap.js: * stress/missing-exception-check-in-string-compare.js: * stress/missing-exception-check-in-string-greater-than-compare.js: * stress/missing-exception-check-in-string-greater-than-or-equal-compare.js: * stress/missing-exception-check-in-string-lastIndexOf.js: * stress/missing-exception-check-in-string-less-than-compare.js: * stress/missing-exception-check-in-string-less-than-or-equal-compare.js: * stress/missing-exception-check-in-string-toLower.js: * stress/missing-exception-check-in-string-toUpper.js: * stress/new_array_with_spread-should-cap-array-size-to-MIN_ARRAY_STORAGE_CONSTRUCTION_LENGTH.js: * stress/out-of-memory-while-constructing-BytecodeGenerator.js: * stress/regexp-prototype-exec-on-too-long-rope.js: * stress/regexp-prototype-match-on-too-long-rope.js: * stress/regexp-prototype-test-on-too-long-rope.js: * stress/regress-169783.js: (doTest): * stress/regress-178385.js: * stress/regress-178386.js: * stress/regress-185888.js: * stress/regress-189132.js: * stress/regress-190187.js: * stress/regress-191563.js: * stress/scoped-arguments-table-should-be-tolerant-for-oom.js: (i.canThrow): * stress/string-16bit-repeat-overflow.js: * stress/string-overflow-createError-builder.js: * stress/string-overflow-createError-fit.js: * stress/string-overflow-createError.js: * stress/string-prototype-charCodeAt-on-too-long-rope.js: * stress/string-prototype-replace-should-throw-out-of-memory-error-when-using-too-much-memory.js: * stress/switch-string-oom.js: (testLowerTiers): (testFTL): * stress/test-exception-assert-in-ExceptionHelpers-createError.js: * stress/test-out-of-memory.js: * stress/typed-array-subarray-can-throw-oom-error.js: (get bar): * wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE-2.js: * wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE.js: Source/JavaScriptCore: The spec sometimes requires "check parameters and throw RangeError" before allocating an object. But we are just allocating an object and throwing an out-of-memory error since wrong parameter will cause out-of-memory. If out-of-memory error is RangeError, then we can keep our current behavior while we can make us spec compliant. And note that out-of-memory error is RangeError in SpiderMonkey and V8. This patch makes out-of-memory error as RangeError instead of Error. We also fix @throwOutOfMemoryError in builtin code: the previous thrown errors are not marked as out-of-memory error. * bytecode/BytecodeList.rb: * bytecompiler/BytecodeGenerator.cpp: (JSC::BytecodeGenerator::emitThrowStaticError): (JSC::BytecodeGenerator::emitThrowReferenceError): (JSC::BytecodeGenerator::emitThrowTypeError): (JSC::BytecodeGenerator::emitThrowRangeError): (JSC::BytecodeGenerator::emitThrowOutOfMemoryError): * bytecompiler/BytecodeGenerator.h: * bytecompiler/NodesCodegen.cpp: (JSC::RegExpNode::emitBytecode): (JSC::BytecodeIntrinsicNode::emit_intrinsic_throwTypeError): (JSC::BytecodeIntrinsicNode::emit_intrinsic_throwRangeError): * dfg/DFGOperations.cpp: * runtime/CommonSlowPaths.cpp: (JSC::SLOW_PATH_DECL): * runtime/Error.cpp: (JSC::createError): (JSC::createOutOfMemoryError): * runtime/Error.h: * runtime/ErrorType.cpp: (JSC::errorTypeName): (WTF::printInternal): * runtime/ErrorType.h: We introduced ErrorTypeWithExtension separately from ErrorType to keep ErrorType one-on-one to spec-specified error types. LayoutTests: * inspector/debugger/no-pause-out-of-memory-exception-expected.txt: * js/array-join-expected.txt: * js/dom/concat-large-strings-crash-expected.txt: * js/dom/concat-large-strings-crash2-expected.txt: * js/dom/script-tests/string-replacement-outofmemory.js: * js/dom/string-concatenate-outofmemory-expected.txt: * js/dom/string-replacement-outofmemory-expected.txt: * js/large-expressions-expected.txt: * js/resources/string-concatenate-outofmemory.js: * js/script-tests/array-join.js: * js/script-tests/stack-overflow-regexp.js: (shouldThrow.recursiveCall): (shouldThrow): * js/script-tests/string-padend.js: * js/script-tests/string-padstart.js: * js/script-tests/string-repeat.js: * js/script-tests/stringimpl-to-jsstring-on-large-strings-1.js: * js/stack-overflow-regexp-expected.txt: * js/string-padend-expected.txt: * js/string-padstart-expected.txt: * js/string-repeat-expected.txt: * js/stringimpl-to-jsstring-on-large-strings-1-expected.txt: Canonical link: https://commits.webkit.org/224872@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@261780 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-05-16 08:24:22 +00:00
PASS "x".padStart(Infinity, "x") threw exception RangeError: Out of memory.
PASS "x".padStart(0x80000000, "x") threw exception RangeError: Out of memory.
PASS "x".padStart(0xFFFFFFFF, "x") threw exception RangeError: Out of memory.
padStart/padEnd with Infinity produces unexpected result https://bugs.webkit.org/show_bug.cgi?id=159543 Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-07-07 Reviewed by Benjamin Poulain. Source/JavaScriptCore: * builtins/GlobalOperations.js: (globalPrivate.toLength): Fix style. * builtins/StringPrototype.js: (padStart): (padEnd): After all observable operations, and after empty string has been handled, throw an out of memory error if the resulting string would be greater than the maximum string size. * tests/es6/Object_static_methods_Object.getOwnPropertyDescriptors-proxy.js: (shouldThrow): Deleted. * tests/es6/Object_static_methods_Object.getOwnPropertyDescriptors.js: (shouldThrow): (testMeta): * tests/es6/String.prototype_methods_String.prototype.padEnd.js: (shouldThrow): (TestToLength): (TestMemoryLimits): (TestMeta): Deleted. * tests/es6/String.prototype_methods_String.prototype.padStart.js: (shouldThrow): (TestToLength): (TestMemoryLimits): Replace incorrect shouldThrow(..., errorType) with explicit shouldThrow(..., errorMessage). The old shouldThrow would incorrectly succeed if the expected error type was just "Error". Now we explicitly check the error message. LayoutTests: * js/script-tests/string-padend.js: Added. (thisObject.toString): (lengthObject.valueOf): (fillObject.toString): * js/script-tests/string-padstart.js: Added. (thisObject.toString): (lengthObject.valueOf): (fillObject.toString): * js/string-padend-expected.txt: Added. * js/string-padend.html: Added. * js/string-padstart-expected.txt: Added. * js/string-padstart.html: Added. Add some basic String.prototype.padStart/padEnd test coverage that is not just in the JavaScriptCore/tests/es6 directory. Canonical link: https://commits.webkit.org/177687@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202966 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-07-08 06:25:34 +00:00
PASS String.prototype.padStart.call(thisObject, lengthObject, fillObject) is "XXXfoo bar"
PASS sideEffects is "ABC"
PASS String.prototype.padStart.call(thisObject, lengthObject, fillObject) threw exception ERROR.
PASS sideEffects is ""
PASS String.prototype.padStart.call(thisObject, lengthObject, fillObject) threw exception ERROR.
PASS sideEffects is "A"
PASS String.prototype.padStart.call(thisObject, lengthObject, fillObject) threw exception ERROR.
PASS sideEffects is "AB"
PASS successfullyParsed is true
TEST COMPLETE