MCPcopy Index your code
hub / github.com/formatjs/formatjs / debugRun

Function debugRun

packages/intl-segmenter/scripts/debug.ts:29–116  ·  view source on GitHub ↗
(
  granularity: keyof typeof segmentationTests,
  testRange?: undefined | number[]
)

Source from the content-addressed store, hash-verified

27
28let failingRules = new Set()
29const debugRun = (
30 granularity: keyof typeof segmentationTests,
31 testRange?: undefined | number[]
32) => {
33 let failedTestsNr = 0
34 let successTestNr = 0
35 const segmenter = new Segmenter(undefined, {granularity})
36
37 const testSubset = testRange
38 ? testRange.length === 1
39 ? [segmentationTests[granularity][testRange]]
40 : segmentationTests[granularity].slice(...testRange)
41 : segmentationTests[granularity]
42
43 let testNr = testRange ? testRange[0] : 0
44 for (const test of testSubset) {
45 let correctSplit = true
46 let breaksAtResults = []
47 let actualSegments = []
48 let segmentIndex = 0
49 for (let position = 0; position <= test.testInput.length; position++) {
50 const {breaks, matchingRule} = segmenter.breaksAt(
51 position,
52 test.testInput
53 )
54 //0.1 is surrogate and we need to artificially insert the non-breakpoint into the test details
55 if (matchingRule === '0.1') {
56 test.testDetails.splice(position, 0, {
57 breaks: false,
58 rule: '0.1',
59 characterName: 'Leading surrogate',
60 codePoint: test.testInput[position].charAt(0),
61 })
62 }
63 breaksAtResults[position] = {breaks, matchingRule}
64
65 if (breaks && position !== 0 && position !== test.testInput.length) {
66 segmentIndex++
67 actualSegments[segmentIndex] = ''
68 }
69 actualSegments[segmentIndex] =
70 (actualSegments[segmentIndex] || '') + (test.testInput[position] || '')
71
72 //there is a mismatch here
73 if (breaks !== test.testDetails[position].breaks) {
74 correctSplit = false
75 }
76 if (
77 matchingRule !== test.testDetails[position].rule &&
78 matchingRule + '.0' !== test.testDetails[position].rule
79 ) {
80 failingRules.add(test.testDetails[position].rule)
81 }
82 }
83
84 if (!correctSplit) {
85 failedTestsNr++
86

Callers 1

debug.tsFile · 0.85

Calls 2

breaksAtMethod · 0.95
logMethod · 0.80

Tested by

no test coverage detected