Consider helpers for `formatToParts` assertions
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 2.8k
- Forks
- 564
- Avg merge
- 3d 7h
- Merged PRs (30d)
- 10
Description
(originally posted by @gibson042 in https://github.com/tc39/test262/pull/4447#discussion_r2028896223)
I wonder if a harness file should define some formatToParts assertion helpers:
function assertFormatPart(part, type, value, label) {
var suffix = label ? ', ' + label : '';
assert.sameValue(part.type, type, 'part type' + suffix);
if (value === undefined) return;
assert.sameValue(part.value, value, 'part value' + suffix);
}
function assertFormatParts(parts, expectations, label) {
var suffix = label ? ', ' + label : '';
assert.sameValue(parts.length, expectations.length, 'parts count' + suffix);
for (var i = 0; i < parts.length; i++) {
assertFormatPart(parts[i], expectations[i][0], expectations[i][1],
suffix && (suffix + ' part ' + i));
}
}
for use in files like test/intl402/DateTimeFormat/prototype/formatToParts/dayPeriod-long-en.js:
for (var h = 0; h < 24; h++) {
var parts = long.formatToParts(inputs[h]);
assertFormatParts(parts, [['dayPeriod']], 'hour ' + h + ' long dayPeriod');
…
var partsNumeric = longNumeric.formatToParts(inputs[h]);
assertFormatParts(partsNumeric,
[['hour', String((h % 12) || 12)], ['literal'], ['dayPeriod']],
'numeric hour ' + h + ' must precede long dayPeriod');
counts[i]++;
prevDayPeriod = dayPeriod;
}
Similar functions already exist in various files, with names like
assertPartsassertSamePartscomparecompareFormatToPartsSnapshotformatAsStringpartsEqualsreduceserializeTypesAndLiteralverifyFormatParts- etc.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in the harness directory and inspect the formatToParts example at test/intl402/DateTimeFormat/prototype/formatToParts/dayPeriod-long-en.js. Compare the listed existing assertion helpers across the relevant tests and determine whether a shared helper API fits. Done means the helper scope and usage are consistent for the targeted formatToParts assertions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- testing
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100