diff options
Diffstat (limited to 'js/src/tests/test262/intl402/Segmenter/prototype/segment/containing/zero-index.js')
-rw-r--r-- | js/src/tests/test262/intl402/Segmenter/prototype/segment/containing/zero-index.js | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/js/src/tests/test262/intl402/Segmenter/prototype/segment/containing/zero-index.js b/js/src/tests/test262/intl402/Segmenter/prototype/segment/containing/zero-index.js new file mode 100644 index 0000000000..0e768bd224 --- /dev/null +++ b/js/src/tests/test262/intl402/Segmenter/prototype/segment/containing/zero-index.js @@ -0,0 +1,72 @@ +// |reftest| skip-if(!Intl.Segmenter) -- Intl.Segmenter is not enabled unconditionally +// Copyright 2020 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-%segmentsprototype%.containing +description: Verifies the cases which the value of index turn into 0. +info: | + %Segments.prototype%.containing ( index ) + + 6. Let n be ? ToInteger(index). + 7. If n < 0 or n ≥ len, return undefined. + 8. Let startIndex be ! FindBoundary(segmenter, string, n, before). + + ToInteger ( argument ) + 1. Let number be ? ToNumber(argument). + 2. If number is NaN, +0, or -0, return +0. + 4. Let integer be the Number value that is the same sign as number and whose magnitude is floor(abs(number)). + 5. If integer is -0, return +0. + 6. Return integer. + + ToNumber ( argument ) + Undefined | Return NaN. + Null | Return +0. + Boolean | If argument is true, return 1. If argument is false, return +0. + +features: [Intl.Segmenter] +---*/ + +const input = "a b c"; +const granularities = [undefined, "grapheme", "word", "sentence"]; +const index_to_zeros = [ + 0, + -0, + NaN, + 0.49, + -0.49, + null, + undefined, + false, + "\ud800\udc00", // surrogate + "\ud800", // only leading surrogate + "\udc00", // only trailing surrogate + "a", + "g", + "\u00DD", + "0", + "+0", + "-0", + "0.49", + "+0.49", + "-0.49", + "4.9e-1", + "-4.9e-1", + "4.9E-1", + "-4.9E-1", + { toString(){ return "-0.1"; } }, + { valueOf(){ return 0.1; } }, + { [Symbol.toPrimitive](){ return -0.1; } }, +]; + +granularities.forEach( + function(granularity) { + const segmenter = new Intl.Segmenter(undefined, {granularity}); + const segment = segmenter.segment(input); + index_to_zeros.forEach(function(index) { + const result = segment.containing(index); + assert.sameValue(0, result.index); + assert.sameValue(input, result.input); + }); + }); + +reportCompare(0, 0); |