Skip to content

Commit 5e7fa89

Browse files
committed
test(json-crdt-extensions): 💍 add Overlay.tuples() tests at offset
1 parent 8de8676 commit 5e7fa89

File tree

1 file changed

+30
-2
lines changed

1 file changed

+30
-2
lines changed

src/json-crdt-extensions/peritext/overlay/__tests__/Overlay.tuples.spec.ts

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import {next} from 'sonic-forest/lib/util';
2-
import {Kit, setupHelloWorldKit, setupHelloWorldWithFewEditsKit, setupNumbersKit, setupNumbersWithTombstonesKit} from '../../__tests__/setup';
2+
import {Kit, setupHelloWorldKit, setupHelloWorldWithFewEditsKit} from '../../__tests__/setup';
33
import {Anchor} from '../../rga/constants';
44
import {MarkerOverlayPoint} from '../MarkerOverlayPoint';
55
import {OverlayPoint} from '../OverlayPoint';
66

77
const runPairsTests = (setup: () => Kit) => {
8-
describe('.tuples()', () => {
8+
describe('.tuples() full range', () => {
99
test('returns [START, END] single tuple for an empty overlay', () => {
1010
const {peritext} = setup();
1111
const overlay = peritext.overlay;
@@ -130,6 +130,34 @@ const runPairsTests = (setup: () => Kit) => {
130130
expect(p3.refs.length).toBe(2);
131131
});
132132
});
133+
134+
describe('.tuples() at offset', () => {
135+
test('in empty overlay, after caret returns the last edge', () => {
136+
const {peritext} = setup();
137+
const overlay = peritext.overlay;
138+
peritext.editor.cursor.setAt(5);
139+
overlay.refresh();
140+
const first = overlay.first()!;
141+
const pairs = [...overlay.tuples(first)];
142+
expect(pairs).toEqual([
143+
[first, overlay.END],
144+
]);
145+
});
146+
147+
test('in empty overlay, after selection start returns the selection and the edge', () => {
148+
const {peritext} = setup();
149+
const overlay = peritext.overlay;
150+
peritext.editor.cursor.setAt(2, 4);
151+
overlay.refresh();
152+
const p1 = overlay.first()!;
153+
const p2 = next(p1)!;
154+
const list = [...overlay.tuples(p1)];
155+
expect(list).toEqual([
156+
[p1, p2],
157+
[p2, overlay.END],
158+
]);
159+
});
160+
});
133161
};
134162

135163
describe('numbers "hello world", no edits', () => {

0 commit comments

Comments
 (0)