11import { Point } from '../../rga/Point' ;
22import { setup } from '../../slice/__tests__/setup' ;
33import { OverlayPoint } from '../OverlayPoint' ;
4+ import { OverlayRefSliceEnd , OverlayRefSliceStart } from '../refs' ;
45
56const setupOverlayPoint = ( ) => {
67 const deps = setup ( ) ;
@@ -196,9 +197,9 @@ describe('markers', () => {
196197
197198 test ( 'can add tree markers by appending them' , ( ) => {
198199 const { peritext, getPoint} = setupOverlayPoint ( ) ;
199- const marker1 = peritext . slices . insSplit ( peritext . rangeAt ( 6 , 0 ) , '<p>' ) ;
200- const marker2 = peritext . slices . insSplit ( peritext . rangeAt ( 6 , 0 ) , '<p>' ) ;
201- const marker3 = peritext . slices . insSplit ( peritext . rangeAt ( 6 , 0 ) , '<p>' ) ;
200+ const marker1 = peritext . slices . insSplit ( peritext . rangeAt ( 6 , 1 ) , '<p>' ) ;
201+ const marker2 = peritext . slices . insSplit ( peritext . rangeAt ( 6 , 2 ) , '<p>' ) ;
202+ const marker3 = peritext . slices . insSplit ( peritext . rangeAt ( 6 , 3 ) , '<p>' ) ;
202203 const point = getPoint ( marker2 . start ) ;
203204 point . addMarker ( marker1 ) ;
204205 point . addMarker ( marker2 ) ;
@@ -210,9 +211,9 @@ describe('markers', () => {
210211
211212 test ( 'can remove markers' , ( ) => {
212213 const { peritext, getPoint} = setupOverlayPoint ( ) ;
213- const marker1 = peritext . slices . insSplit ( peritext . rangeAt ( 6 , 0 ) , '<p>' ) ;
214- const marker2 = peritext . slices . insSplit ( peritext . rangeAt ( 6 , 0 ) , '<p>' ) ;
215- const marker3 = peritext . slices . insSplit ( peritext . rangeAt ( 6 , 0 ) , '<p>' ) ;
214+ const marker1 = peritext . slices . insSplit ( peritext . rangeAt ( 6 , 1 ) , '<p>' ) ;
215+ const marker2 = peritext . slices . insSplit ( peritext . rangeAt ( 6 , 1 ) , '<p>' ) ;
216+ const marker3 = peritext . slices . insSplit ( peritext . rangeAt ( 6 , 2 ) , '<p>' ) ;
216217 const point = getPoint ( marker1 . start ) ;
217218 point . addMarker ( marker2 ) ;
218219 point . addMarker ( marker1 ) ;
@@ -232,3 +233,78 @@ describe('markers', () => {
232233 expect ( point . markers . length ) . toBe ( 0 ) ;
233234 } ) ;
234235} ) ;
236+
237+ describe ( 'refs' , ( ) => {
238+ test ( 'can add marker ref' , ( ) => {
239+ const { peritext, getPoint} = setupOverlayPoint ( ) ;
240+ const marker = peritext . slices . insSplit ( peritext . rangeAt ( 10 , 1 ) , '<p>' ) ;
241+ const point = getPoint ( marker . start ) ;
242+ expect ( point . markers . length ) . toBe ( 0 ) ;
243+ expect ( point . refs . length ) . toBe ( 0 ) ;
244+ point . addMarkerRef ( marker ) ;
245+ expect ( point . markers . length ) . toBe ( 1 ) ;
246+ expect ( point . refs . length ) . toBe ( 1 ) ;
247+ expect ( point . markers [ 0 ] ) . toBe ( marker ) ;
248+ expect ( point . refs [ 0 ] ) . toBe ( marker ) ;
249+ } ) ;
250+
251+ test ( 'can add layer ref (start)' , ( ) => {
252+ const { peritext, getPoint} = setupOverlayPoint ( ) ;
253+ const slice = peritext . slices . insErase ( peritext . rangeAt ( 0 , 4 ) , 123 ) ;
254+ const point = getPoint ( slice . start ) ;
255+ expect ( point . layers . length ) . toBe ( 0 ) ;
256+ expect ( point . refs . length ) . toBe ( 0 ) ;
257+ point . addLayerStartRef ( slice ) ;
258+ expect ( point . layers . length ) . toBe ( 1 ) ;
259+ expect ( point . refs . length ) . toBe ( 1 ) ;
260+ expect ( point . layers [ 0 ] ) . toBe ( slice ) ;
261+ expect ( ( point . refs [ 0 ] as OverlayRefSliceStart ) . slice ) . toBe ( slice ) ;
262+ } ) ;
263+
264+ test ( 'can add layer ref (end)' , ( ) => {
265+ const { peritext, getPoint} = setupOverlayPoint ( ) ;
266+ const slice = peritext . slices . insErase ( peritext . rangeAt ( 0 , 4 ) , 123 ) ;
267+ const point = getPoint ( slice . end ) ;
268+ expect ( point . layers . length ) . toBe ( 0 ) ;
269+ expect ( point . refs . length ) . toBe ( 0 ) ;
270+ point . addLayerEndRef ( slice ) ;
271+ expect ( point . layers . length ) . toBe ( 0 ) ;
272+ expect ( point . refs . length ) . toBe ( 1 ) ;
273+ expect ( ( point . refs [ 0 ] as OverlayRefSliceEnd ) . slice ) . toBe ( slice ) ;
274+ } ) ;
275+
276+ test ( 'can add marker and layer start' , ( ) => {
277+ const { peritext, getPoint} = setupOverlayPoint ( ) ;
278+ const marker = peritext . slices . insSplit ( peritext . rangeAt ( 10 , 1 ) , '<p>' ) ;
279+ const slice = peritext . slices . insErase ( peritext . rangeAt ( 10 , 4 ) , 123 ) ;
280+ const point = getPoint ( slice . end ) ;
281+ expect ( point . layers . length ) . toBe ( 0 ) ;
282+ expect ( point . markers . length ) . toBe ( 0 ) ;
283+ expect ( point . refs . length ) . toBe ( 0 ) ;
284+ point . addMarkerRef ( marker ) ;
285+ point . addLayerStartRef ( slice ) ;
286+ expect ( point . layers . length ) . toBe ( 1 ) ;
287+ expect ( point . markers . length ) . toBe ( 1 ) ;
288+ expect ( point . refs . length ) . toBe ( 2 ) ;
289+ } ) ;
290+
291+ test ( 'can remove marker and layer' , ( ) => {
292+ const { peritext, getPoint} = setupOverlayPoint ( ) ;
293+ const marker = peritext . slices . insSplit ( peritext . rangeAt ( 10 , 1 ) , '<p>' ) ;
294+ const slice = peritext . slices . insErase ( peritext . rangeAt ( 10 , 4 ) , 123 ) ;
295+ const point = getPoint ( slice . end ) ;
296+ point . addMarkerRef ( marker ) ;
297+ point . addLayerStartRef ( slice ) ;
298+ expect ( point . layers . length ) . toBe ( 1 ) ;
299+ expect ( point . markers . length ) . toBe ( 1 ) ;
300+ expect ( point . refs . length ) . toBe ( 2 ) ;
301+ point . removeRef ( slice ) ;
302+ expect ( point . layers . length ) . toBe ( 0 ) ;
303+ expect ( point . markers . length ) . toBe ( 1 ) ;
304+ expect ( point . refs . length ) . toBe ( 1 ) ;
305+ point . removeRef ( marker ) ;
306+ expect ( point . layers . length ) . toBe ( 0 ) ;
307+ expect ( point . markers . length ) . toBe ( 0 ) ;
308+ expect ( point . refs . length ) . toBe ( 0 ) ;
309+ } ) ;
310+ } ) ;
0 commit comments