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

69 lines
3.5 KiB
Plaintext
Raw Permalink Normal View History

This test checks String.prototype.repeat.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
PASS String.prototype.repeat.length is 1
PASS String.prototype.repeat.name is "repeat"
PASS Object.getOwnPropertyDescriptor(String.prototype, "repeat").configurable is true
PASS Object.getOwnPropertyDescriptor(String.prototype, "repeat").enumerable is false
PASS Object.getOwnPropertyDescriptor(String.prototype, "repeat").writable is true
PASS Object.getOwnPropertyDescriptor(String.prototype, "repeat").get is undefined
PASS Object.getOwnPropertyDescriptor(String.prototype, "repeat").set is undefined
PASS Object.getOwnPropertyDescriptor(String.prototype, "repeat").value is String.prototype.repeat
PASS 'foo bar'.repeat(+0) is ''
PASS 'foo bar'.repeat(-0) is ''
PASS 'foo bar'.repeat(1) is 'foo bar'
PASS 'foo bar'.repeat(2) is 'foo barfoo bar'
PASS 'フーバー'.repeat(0) is ''
PASS 'フーバー'.repeat(1) is 'フーバー'
PASS 'フーバー'.repeat(2) is 'フーバーフーバー'
PASS 'foo barfoo bar'.repeat(2) is 'foo barfoo barfoo barfoo bar'
PASS 'foo barfoo bar'.repeat(2.2) is 'foo barfoo barfoo barfoo bar'
PASS 'foo barfoo bar'.repeat(2.8) is 'foo barfoo barfoo barfoo bar'
PASS 'foo'.repeat(3.1) is 'foofoofoo'
PASS 'foo'.repeat('2') is 'foofoo'
PASS 'foo'.repeat(NaN) is ''
PASS 'foo'.repeat(null) is ''
PASS 'foo'.repeat(true) is 'foo'
PASS 'foo'.repeat(false) is ''
PASS 'foo'.repeat(undefined) is ''
PASS 'foo'.repeat() is ''
PASS 'f'.repeat(0) is ''
PASS 'f'.repeat(1) is 'f'
PASS 'f'.repeat(10) is 'ffffffffff'
PASS 'フ'.repeat(0) is ''
PASS 'フ'.repeat(1) is 'フ'
PASS 'フ'.repeat(2) is 'フフ'
PASS ''.repeat(1000) is ''
PASS ''.repeat(0xFFFFFFFF) is ''
PASS ''.repeat(0xFFFFFFFF + 1) is ''
PASS 'x'.repeat(-1) threw exception RangeError: String.prototype.repeat argument must be greater than or equal to 0 and not be Infinity.
PASS 'x'.repeat(Infinity) threw exception RangeError: String.prototype.repeat argument must be greater than or equal to 0 and not be Infinity.
PASS 'x'.repeat(-Infinity) threw exception RangeError: String.prototype.repeat argument must be greater than or equal to 0 and not be Infinity.
PASS 'foo bar'.repeat(-1) threw exception RangeError: String.prototype.repeat argument must be greater than or equal to 0 and not be Infinity.
PASS 'foo bar'.repeat(Infinity) threw exception RangeError: String.prototype.repeat argument must be greater than or equal to 0 and not be Infinity.
PASS 'foo bar'.repeat(-Infinity) threw exception RangeError: String.prototype.repeat argument must be greater than or equal to 0 and not be Infinity.
[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 'f'.repeat(0xFFFFFFFF) threw exception RangeError: Out of memory.
PASS 'f'.repeat(0xFFFFFFFF + 1) threw exception RangeError: Out of memory.
PASS 'foo'.repeat(0xFFFFFFFFF) threw exception RangeError: Out of memory.
PASS 'foo'.repeat(0xFFFFFFFFF + 1) threw exception RangeError: Out of memory.
PASS 'foo bar'.repeat(0xFFFFFFFF) threw exception RangeError: Out of memory.
PASS 'foo bar'.repeat(0xFFFFFFFF + 1) threw exception RangeError: Out of memory.
PASS stringRepeated.repeat(count) is 'xx'
PASS sideEffect == 'AB' is true
PASS stringRepeated.repeat(count) threw exception error.
PASS sideEffect == '' is true
PASS stringRepeated.repeat(count) threw exception error.
PASS sideEffect == 'A' is true
PASS stringRepeated.repeat(count) is 'foo barfoo bar'
PASS sideEffect == 'AB' is true
PASS stringRepeated.repeat(count) threw exception error.
PASS sideEffect == '' is true
PASS stringRepeated.repeat(count) threw exception error.
PASS sideEffect == 'A' is true
PASS successfullyParsed is true
TEST COMPLETE