From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../prototype/segment/containing/one-index.js | 70 ++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 js/src/tests/test262/intl402/Segmenter/prototype/segment/containing/one-index.js (limited to 'js/src/tests/test262/intl402/Segmenter/prototype/segment/containing/one-index.js') diff --git a/js/src/tests/test262/intl402/Segmenter/prototype/segment/containing/one-index.js b/js/src/tests/test262/intl402/Segmenter/prototype/segment/containing/one-index.js new file mode 100644 index 0000000000..b23683ef99 --- /dev/null +++ b/js/src/tests/test262/intl402/Segmenter/prototype/segment/containing/one-index.js @@ -0,0 +1,70 @@ +// |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 1. +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 c"; +const granularities = [undefined, "grapheme", "word"]; +const index_to_one = [ + 1, + 1.49, + 14.9E-1, + 14.9e-1, + "1.49", + "14.9E-1", + "14.9e-1", + true, + { toString(){ return "1"; } }, + { valueOf(){ return 1; } }, + { [Symbol.toPrimitive](){ return 1; } }, +]; + +// Except granularity: "sentence", check the result.segment is " ". +granularities.forEach( + function(granularity) { + const segmenter = new Intl.Segmenter(undefined, {granularity}); + const segment = segmenter.segment(input); + index_to_one.forEach(function(index) { + const result = segment.containing(index); + const msg = "granularity: " + granularity + " index: " + index; + assert.sameValue(1, result.index, msg + " index"); + assert.sameValue(" ", result.segment, msg + " segment"); + assert.sameValue(input, result.input, msg + " input"); + }); + }); + +// For granularity: "sentence", result.segment is input +const segmenter = new Intl.Segmenter(undefined, {granularity: "sentence"}); +const segment = segmenter.segment(input); +index_to_one.forEach(function(index) { + const result = segment.containing(index); + const msg = "granularity: sentence index: " + index; + assert.sameValue(0, result.index, msg + " index"); + assert.sameValue(input, result.segment, msg + " segment"); + assert.sameValue(input, result.input, msg + " input"); +}); + +reportCompare(0, 0); -- cgit v1.2.3