Improve Intl.Segmenter coverage

This commit is contained in:
Richard Gibson 2021-03-10 02:18:46 -05:00 committed by Rick Waldron
parent 18638f301f
commit ffec772910
8 changed files with 56 additions and 9 deletions

View File

@ -13,6 +13,7 @@ info: |
a. Let isWordLike be a Boolean value indicating whether the segment in string is "word-like" according to locale segmenter.[[Locale]].
b. Perform ! CreateDataPropertyOrThrow(result, "isWordLike", isWordLike).
includes: [compareArray.js]
features: [Intl.Segmenter]
---*/
@ -49,6 +50,7 @@ other_granularities.forEach(
assert.sameValue("string", typeof result.input, `${msg} input`);
assert.sameValue(undefined, result.isWordLike,
`${msg} isWordLike should be undefined`);
assert.compareArray(Object.getOwnPropertyNames(result), ["segment", "index", "input"]);
}
});
});

View File

@ -36,6 +36,9 @@ const index_to_one = [
"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 " ".

View File

@ -37,6 +37,9 @@ const index_to_out_of_bound = [
-Infinity,
"Infinity",
"-Infinity",
{ toString(){ return "-1"; } },
{ valueOf(){ return input.length; } },
{ [Symbol.toPrimitive](){ return -1; } },
];
granularities.forEach(

View File

@ -13,6 +13,7 @@ info: |
a. Let isWordLike be a Boolean value indicating whether the segment in string is "word-like" according to locale segmenter.[[Locale]].
b. Perform ! CreateDataPropertyOrThrow(result, "isWordLike", isWordLike).
includes: [compareArray.js]
features: [Intl.Segmenter]
---*/
@ -48,5 +49,7 @@ inputs.forEach(function(input) {
assert.sameValue("string", typeof result.input, msg + "input");
assert.sameValue("boolean", typeof result.isWordLike,
msg + "isWordLike should be boolean");
assert.compareArray(Object.getOwnPropertyNames(result),
["segment", "index", "input", "isWordLike"]);
}
});

View File

@ -52,6 +52,9 @@ const index_to_zeros = [
"-4.9e-1",
"4.9E-1",
"-4.9E-1",
{ toString(){ return "-0.1"; } },
{ valueOf(){ return 0.1; } },
{ [Symbol.toPrimitive](){ return -0.1; } },
];
granularities.forEach(

View File

@ -7,6 +7,7 @@ esid: sec-Intl.Segmenter.prototype.segment
description: Verifies the behavior for the "segment" function of the Segmenter prototype object.
info: |
Intl.Segmenter.prototype.segment( string )
includes: [compareArray.js]
features: [Intl.Segmenter]
---*/
@ -31,12 +32,22 @@ for (const text of [
]) {
let segments = [];
for (const v of seg.segment(text)) {
assert.sameValue(undefined, v.isWordLike);
assert.sameValue(false, v.hasOwnProperty("isWordLike"));
assert.sameValue("string", typeof v.segment);
assert(v.segment.length > 0);
assert.sameValue(true, v.segment.length > 0, "length > 0");
assert.sameValue("number", typeof v.index);
assert.sameValue(true, v.index >= 0, "index >= 0");
assert.sameValue(true, v.index < text.length, "index < input.length");
assert.sameValue("string", typeof v.input);
assert.sameValue(text, v.input);
assert.sameValue(undefined, v.isWordLike);
assert.sameValue(false, v.hasOwnProperty("isWordLike"));
assert.sameValue(text.slice(v.index, v.index + v.segment.length), v.segment);
assert.compareArray(Object.getOwnPropertyNames(v), ["segment", "index", "input"]);
segments.push(v.segment);
}
assert.sameValue(text, segments.join(''));

View File

@ -7,6 +7,7 @@ esid: sec-Intl.Segmenter.prototype.segment
description: Verifies the behavior for the "segment" function of the Segmenter prototype object.
info: |
Intl.Segmenter.prototype.segment( string )
includes: [compareArray.js]
features: [Intl.Segmenter]
---*/
@ -31,12 +32,22 @@ for (const text of [
]) {
let segments = [];
for (const v of seg.segment(text)) {
assert.sameValue(undefined, v.isWordLike);
assert.sameValue(false, v.hasOwnProperty("isWordLike"));
assert.sameValue("string", typeof v.segment);
assert(v.segment.length > 0);
assert.sameValue(true, v.segment.length > 0, "length > 0");
assert.sameValue("number", typeof v.index);
assert.sameValue(true, v.index >= 0, "index >= 0");
assert.sameValue(true, v.index < text.length, "index < input.length");
assert.sameValue("string", typeof v.input);
assert.sameValue(text, v.input);
assert.sameValue(undefined, v.isWordLike);
assert.sameValue(false, v.hasOwnProperty("isWordLike"));
assert.sameValue(text.slice(v.index, v.index + v.segment.length), v.segment);
assert.compareArray(Object.getOwnPropertyNames(v), ["segment", "index", "input"]);
segments.push(v.segment);
}
assert.sameValue(text, segments.join(''));

View File

@ -7,6 +7,7 @@ esid: sec-Intl.Segmenter.prototype.segment
description: Verifies the behavior for the "segment" function of the Segmenter prototype object.
info: |
Intl.Segmenter.prototype.segment( string )
includes: [compareArray.js]
features: [Intl.Segmenter]
---*/
@ -31,12 +32,22 @@ for (const text of [
]) {
let segments = [];
for (const v of seg.segment(text)) {
assert.sameValue("boolean", typeof v.isWordLike);
assert.sameValue(true, v.hasOwnProperty("isWordLike"));
assert.sameValue("string", typeof v.segment);
assert(v.segment.length > 0);
assert.sameValue(true, v.segment.length > 0, "length > 0");
assert.sameValue("number", typeof v.index);
assert.sameValue(true, v.index >= 0, "index >= 0");
assert.sameValue(true, v.index < text.length, "index < input.length");
assert.sameValue("string", typeof v.input);
assert.sameValue(text, v.input);
assert.sameValue("boolean", typeof v.isWordLike);
assert.sameValue(true, v.hasOwnProperty("isWordLike"));
assert.sameValue(text.slice(v.index, v.index + v.segment.length), v.segment);
assert.compareArray(Object.getOwnPropertyNames(v), ["segment", "index", "input", "isWordLike"]);
segments.push(v.segment);
}
assert.sameValue(text, segments.join(''));