提交 b9f8e8ab 编写于 作者: I isidor

output: buffered content tests

上级 0a002888
......@@ -29,7 +29,7 @@ import { Position } from 'vs/editor/common/core/position';
const OUTPUT_ACTIVE_CHANNEL_KEY = 'output.activechannel';
class BufferedContent {
export class BufferedContent {
private data: string[] = [];
private dataIds: number[] = [];
......@@ -61,14 +61,14 @@ class BufferedContent {
}
}
public value(previousDelta?: IOutputDelta): IOutputDelta {
public getDelta(previousDelta?: IOutputDelta): IOutputDelta {
let idx = -1;
if (previousDelta) {
idx = binarySearch(this.dataIds, previousDelta.id, (a, b) => a - b);
}
const id = this.idPool;
if (idx >= 0) {
if (idx > 0) {
const value = strings.removeAnsiEscapeCodes(this.data.slice(idx).join(''));
return { value, id, append: true };
} else {
......@@ -183,9 +183,9 @@ export class OutputService implements IOutputService {
return this.getChannel(this.activeChannelId);
}
private getOutput(channelId: string, before: IOutputDelta): IOutputDelta {
private getOutput(channelId: string, previousDelta: IOutputDelta): IOutputDelta {
if (this.receivedOutput.has(channelId)) {
return this.receivedOutput.get(channelId).value(before);
return this.receivedOutput.get(channelId).getDelta(previousDelta);
}
return undefined;
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as assert from 'assert';
import { BufferedContent } from 'vs/workbench/parts/output/browser/outputServices';
suite('Workbench - Output Buffered Content', () => {
test('Buffered Content - Simple', () => {
const bufferedContent = new BufferedContent();
bufferedContent.append('first');
bufferedContent.append('second');
bufferedContent.append('third');
const delta = bufferedContent.getDelta();
assert.equal(bufferedContent.getDelta().value, 'firstsecondthird');
bufferedContent.clear();
assert.equal(bufferedContent.getDelta().value, '');
assert.equal(bufferedContent.getDelta(delta).value, '');
});
test('Buffered Content - Lots of output', () => {
const bufferedContent = new BufferedContent();
bufferedContent.append('first line');
const firstDelta = bufferedContent.getDelta();
for (var i = 0; i < 100000; i++) {
bufferedContent.append(i.toString());
}
const secondDelta = bufferedContent.getDelta(firstDelta);
assert.equal(!!secondDelta.append, false);
assert.equal(secondDelta.value.substr(secondDelta.value.length - 5), '99999');
bufferedContent.clear();
assert.equal(bufferedContent.getDelta().value, '');
});
});
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册