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 72d6b394b1547429923b9cbee7d12f475dc9288a..a04ab200bd61de8e0b52172fc438393172354ba7 100644 --- a/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts +++ b/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts @@ -1530,4 +1530,62 @@ suite('buffer api', () => { assert(!a.equal(b)); }); +}); + +suite('search offset cache', () => { + test('render white space exception', () => { + let pieceTable = createTextBuffer(['class Name{\n\t\n\t\t\tget() {\n\n\t\t\t}\n\t\t}']); + let str = 'class Name{\n\t\n\t\t\tget() {\n\n\t\t\t}\n\t\t}'; + + pieceTable.insert(12, 's'); + str = str.substring(0, 12) + 's' + str.substring(12); + + pieceTable.insert(13, 'e'); + str = str.substring(0, 13) + 'e' + str.substring(13); + + pieceTable.insert(14, 't'); + str = str.substring(0, 14) + 't' + str.substring(14); + + pieceTable.insert(15, '()'); + str = str.substring(0, 15) + '()' + str.substring(15); + + pieceTable.delete(16, 1); + str = str.substring(0, 16) + str.substring(16 + 1); + + pieceTable.insert(17, '()'); + str = str.substring(0, 17) + '()' + str.substring(17); + + pieceTable.delete(18, 1); + str = str.substring(0, 18) + str.substring(18 + 1); + + pieceTable.insert(18, '}'); + str = str.substring(0, 18) + '}' + str.substring(18); + + pieceTable.insert(12, '\n'); + str = str.substring(0, 12) + '\n' + str.substring(12); + + pieceTable.delete(12, 1); + str = str.substring(0, 12) + str.substring(12 + 1); + + pieceTable.delete(18, 1); + str = str.substring(0, 18) + str.substring(18 + 1); + + pieceTable.insert(18, '}'); + str = str.substring(0, 18) + '}' + str.substring(18); + + pieceTable.delete(17, 2); + str = str.substring(0, 17) + str.substring(17 + 2); + + pieceTable.delete(16, 1); + str = str.substring(0, 16) + str.substring(16 + 1); + + pieceTable.insert(16, ')'); + str = str.substring(0, 16) + ')' + str.substring(16); + + pieceTable.delete(15, 2); + str = str.substring(0, 15) + str.substring(15 + 2); + + var content = pieceTable.getLinesRawContent(); + assert(content === str); + }); }); \ No newline at end of file