From d4841fd59cfbacb8f30982216c1919e3fe2fa424 Mon Sep 17 00:00:00 2001 From: Peng Lyu Date: Fri, 16 Mar 2018 15:23:39 -0700 Subject: [PATCH] re #45770. Test case for chunk based search. --- .../pieceTreeTextBuffer.test.ts | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts b/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts index 6cea58bbd4f..c65d165be38 100644 --- a/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts +++ b/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts @@ -1787,4 +1787,27 @@ suite('chunk based search', () => { let ret = pieceTree.findMatchesLineByLine(new Range(1, 1, 1, 1), new SearchData(/abc/, new WordCharacterClassifier(',./'), 'abc'), true, 1000); assert.equal(ret.length, 0); }); + + test('#45770. FindInNode should not cross node boundary.', () => { + let pieceTree = createTextBuffer([ + [ + 'balabalababalabalababalabalaba', + 'balabalababalabalababalabalaba', + '', + '* [ ] task1', + '* [x] task2 balabalaba', + '* [ ] task 3' + ].join('\n') + ]); + pieceTree.delete(0, 62); + pieceTree.delete(16, 1); + + pieceTree.insert(16, ' '); + let ret = pieceTree.findMatchesLineByLine(new Range(1, 1, 4, 13), new SearchData(/\[/gi, new WordCharacterClassifier(',./'), '['), true, 1000); + assert.equal(ret.length, 3); + + assert.deepEqual(ret[0].range, new Range(2, 3, 2, 4)); + assert.deepEqual(ret[1].range, new Range(3, 3, 3, 4)); + assert.deepEqual(ret[2].range, new Range(4, 3, 4, 4)); + }); }); \ No newline at end of file