Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/inlineChat/test/browser/inlineChatStrategies.test.ts
3297 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { CancellationTokenSource } from '../../../../../base/common/cancellation.js';
7
import { IntervalTimer } from '../../../../../base/common/async.js';
8
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';
9
import { asProgressiveEdit } from '../../browser/utils.js';
10
import assert from 'assert';
11
12
13
suite('AsyncEdit', () => {
14
15
ensureNoDisposablesAreLeakedInTestSuite();
16
17
test('asProgressiveEdit', async () => {
18
const interval = new IntervalTimer();
19
const edit = {
20
range: { startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: 1 },
21
text: 'Hello, world!'
22
};
23
24
const cts = new CancellationTokenSource();
25
const result = asProgressiveEdit(interval, edit, 5, cts.token);
26
27
// Verify the range
28
assert.deepStrictEqual(result.range, edit.range);
29
30
const iter = result.newText[Symbol.asyncIterator]();
31
32
// Verify the newText
33
const a = await iter.next();
34
assert.strictEqual(a.value, 'Hello,');
35
assert.strictEqual(a.done, false);
36
37
// Verify the next word
38
const b = await iter.next();
39
assert.strictEqual(b.value, ' world!');
40
assert.strictEqual(b.done, false);
41
42
const c = await iter.next();
43
assert.strictEqual(c.value, undefined);
44
assert.strictEqual(c.done, true);
45
46
cts.dispose();
47
});
48
49
test('asProgressiveEdit - cancellation', async () => {
50
const interval = new IntervalTimer();
51
const edit = {
52
range: { startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: 1 },
53
text: 'Hello, world!'
54
};
55
56
const cts = new CancellationTokenSource();
57
const result = asProgressiveEdit(interval, edit, 5, cts.token);
58
59
// Verify the range
60
assert.deepStrictEqual(result.range, edit.range);
61
62
const iter = result.newText[Symbol.asyncIterator]();
63
64
// Verify the newText
65
const a = await iter.next();
66
assert.strictEqual(a.value, 'Hello,');
67
assert.strictEqual(a.done, false);
68
69
cts.dispose(true);
70
71
const c = await iter.next();
72
assert.strictEqual(c.value, undefined);
73
assert.strictEqual(c.done, true);
74
});
75
});
76
77