test('_computeEdits EOL changed', function () { const model = TextModel.createFromString( [ 'This is line one', //16 'and this is line number two', //27 'it is followed by #3', //20 'and finished with the fourth.', //29 ].join('\n') ); const textBuffer = createTextBuffer( [ 'This is line one', //16 'and this is line number two', //27 'it is followed by #3', //20 'and finished with the fourth.', //29 ].join('\r\n'), DefaultEndOfLine.LF ); const actual = ModelServiceImpl._computeEdits(model, textBuffer); assert.deepEqual(actual, []); });
test('_computeEdits EOL and other change 2', function () { const model = TextModel.createFromString( [ 'package main', // 1 'func foo() {', // 2 '}' // 3 ].join('\n') ); const textBuffer = createTextBuffer( [ 'package main', // 1 'func foo() {', // 2 '}', // 3 '' ].join('\r\n'), DefaultEndOfLine.LF ); const actual = ModelServiceImpl._computeEdits(model, textBuffer); assert.deepEqual(actual, [ EditOperation.replaceMove(new Range(3, 2, 3, 2), '\r\n') ]); });
test('_computeEdits EOL and other change 1', function () { const model = TextModel.createFromString( [ 'This is line one', //16 'and this is line number two', //27 'it is followed by #3', //20 'and finished with the fourth.', //29 ].join('\n') ); const textBuffer = createTextBuffer( [ 'This is line One', //16 'and this is line number two', //27 'It is followed by #3', //20 'and finished with the fourth.', //29 ].join('\r\n'), DefaultEndOfLine.LF ); const actual = ModelServiceImpl._computeEdits(model, textBuffer); assert.deepEqual(actual, [ EditOperation.replaceMove( new Range(1, 1, 4, 1), [ 'This is line One', 'and this is line number two', 'It is followed by #3', '' ].join('\r\n') ) ]); });
function testTextModelDataFromString(text: string, expected: ITextBufferData): void { const textBuffer = createTextBuffer(text, TextModel.DEFAULT_CREATION_OPTIONS.defaultEOL); let actual: ITextBufferData = { EOL: textBuffer.getEOL(), lines: textBuffer.getLinesContent(), containsRTL: textBuffer.mightContainRTL(), isBasicASCII: !textBuffer.mightContainNonBasicASCII() }; assert.deepEqual(actual, expected); }
function assertComputeEdits(lines1: string[], lines2: string[]): void { const model = TextModel.createFromString(lines1.join('\n')); const textBuffer = createTextBuffer(lines2.join('\n'), DefaultEndOfLine.LF); // compute required edits // let start = Date.now(); const edits = ModelServiceImpl._computeEdits(model, textBuffer); // console.log(`took ${Date.now() - start} ms.`); // apply edits model.pushEditOperations(null, edits, null); assert.equal(model.getValue(), lines2.join('\n')); }