11import type { MappedText , SourceMap } from '@cspell/cspell-types' ;
22import { describe , expect , test } from 'vitest' ;
33
4- import { mergeSourceMaps } from './SourceMap.js' ;
54import {
65 calRangeInSrc ,
76 doesIntersect ,
@@ -16,7 +15,7 @@ describe('TextMap', () => {
1615 ${ 'fine café' } | ${ [ 200 , 209 ] } | ${ undefined } | ${ [ 205 , 209 ] } | ${ tm ( 'café' , [ 205 , 209 ] ) }
1716 ${ 'fine café coffee' } | ${ [ 200 , 219 ] } | ${ [ 8 , 8 , 4 , 1 , 7 , 7 ] } | ${ [ 205 , 212 ] } | ${ tm ( 'café' , [ 205 , 212 ] , [ 3 , 3 , 4 , 1 ] ) }
1817 ${ 'fine café coffee' } | ${ [ 200 , 219 ] } | ${ [ 8 , 8 , 4 , 1 , 7 , 7 ] } | ${ [ 200 , 212 ] } | ${ tm ( 'fine café' , [ 200 , 212 ] , [ 8 , 8 , 4 , 1 ] ) }
19- ${ 'fine café coffee' } | ${ [ 200 , 219 ] } | ${ [ 8 , 8 , 4 , 1 , 7 , 7 ] } | ${ [ 200 , 213 ] } | ${ tm ( 'fine café ' , [ 200 , 213 ] , [ 8 , 8 , 4 , 1 , 7 , 7 ] ) }
18+ ${ 'fine café coffee' } | ${ [ 200 , 219 ] } | ${ [ 8 , 8 , 4 , 1 , 7 , 7 ] } | ${ [ 200 , 213 ] } | ${ tm ( 'fine café ' , [ 200 , 213 ] , [ 8 , 8 , 4 , 1 ] ) }
2019 ${ 'fine café coffee' } | ${ [ 200 , 219 ] } | ${ [ 8 , 8 , 4 , 1 , 7 , 7 ] } | ${ [ 200 , 219 ] } | ${ tm ( 'fine café coffee' , [ 200 , 219 ] , [ 8 , 8 , 4 , 1 , 7 , 7 ] ) }
2120 ${ 'fine café coffee' } | ${ [ 200 , 219 ] } | ${ [ 8 , 8 , 4 , 1 ] } | ${ [ 200 , 219 ] } | ${ tm ( 'fine café coffee' , [ 200 , 219 ] , [ 8 , 8 , 4 , 1 ] ) }
2221 ${ 'fine café coffee' } | ${ [ 200 , 219 ] } | ${ [ 8 , 8 , 4 , 1 ] } | ${ [ 205 , 212 ] } | ${ tm ( 'café' , [ 205 , 212 ] , [ 3 , 3 , 4 , 1 ] ) }
@@ -145,41 +144,6 @@ describe('TextMap', () => {
145144
146145// cspell:dictionaries html-symbol-entities unicode-escapes
147146
148- describe ( 'mergeSourceMaps' , ( ) => {
149- test ( 'mergeSourceMaps' , ( ) => {
150- /**
151- * orig | len | intermediate | len | final | len |
152- * ---- | --- | ------------ | --- | ----- | --- |
153- * 0-3 | 3 | 0-3 | 3 | 0-3 | 3 |
154- * 3-7 | 4 | 3-7 | 4 | 3-4 | 1 |
155- * 7-8 | 1 | 7-8 | 1 | 4-5 | 1 |
156- * 8-12 | 4 | 8-9 | 1 | 5-6 | 1 |
157- * 12-19| 7 | 9-16 | 7 | 6-13 | 7 |
158- * 19-22| 3 | 16-16 | 0 | 13-13 | 0 |
159- * 22-24| 2 | 16-18 | 2 | 13-15 | 2 |
160- */
161- const map1 = [ 8 , 8 , 4 , 1 , 7 , 7 , 3 , 0 , 2 , 2 ] ;
162- const map2 = [ 3 , 3 , 4 , 1 ] ;
163- const expected = [ 3 , 3 , 4 , 1 , 1 , 1 , 4 , 1 , 7 , 7 , 3 , 0 , 2 , 2 ] ;
164- const r = mergeSourceMaps ( map1 , map2 ) ;
165- expect ( r ) . toEqual ( expected ) ;
166- } ) ;
167-
168- test . each `
169- map1 | map2 | expected
170- ${ [ ] } | ${ [ ] } | ${ undefined }
171- ${ [ ] } | ${ undefined } | ${ undefined }
172- ${ undefined } | ${ [ ] } | ${ undefined }
173- ${ undefined } | ${ undefined } | ${ undefined }
174- ${ [ 1 , 8 ] } | ${ [ ] } | ${ [ 1 , 8 ] }
175- ${ [ ] } | ${ [ 0 , 0 , 3 , 3 ] } | ${ [ 0 , 0 , 3 , 3 ] }
176- ${ [ 0 , 0 , 8 , 8 ] } | ${ [ 0 , 0 , 3 , 3 ] } | ${ [ 0 , 0 , 3 , 3 , 5 , 5 ] }
177- ` ( 'mergeSourceMaps $map1, $map2' , ( { map1, map2, expected } ) => {
178- const r = mergeSourceMaps ( map1 , map2 ) ;
179- expect ( r ) . toEqual ( expected ) ;
180- } ) ;
181- } ) ;
182-
183147function tm ( text : string , range : [ number , number ] , map ?: number [ ] ) : MappedText {
184148 return map ? { text, range, map } : { text, range } ;
185149}
0 commit comments