Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/platform/editing/node/edits.spec.ts
13401 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 assert from 'assert';
7
import { beforeAll, suite, test } from 'vitest';
8
import { Range, TextEdit } from '../../../vscodeTypes';
9
import { computeUpdatedRange } from '../common/edits';
10
11
suite('findApproximateRangePostEdits', function () {
12
13
let range: Range;
14
let editText: string;
15
beforeAll(async function () {
16
range = new Range(5, 1, 10, 1);
17
editText = 'some text';
18
});
19
20
test('Edit range before range of interest', async function () {
21
const edits: TextEdit[] = [
22
new TextEdit(new Range(4, 1, 4, 1), editText),
23
];
24
const rangePostEdits = await computeUpdatedRange(range, edits);
25
assert.deepStrictEqual(rangePostEdits, new Range(5, 0, 10, 0));
26
});
27
28
test('Edit range overlaps start of range of interest', async function () {
29
const edits: TextEdit[] = [
30
new TextEdit(new Range(4, 1, 6, 1), editText),
31
];
32
const rangePostEdits = await computeUpdatedRange(range, edits);
33
assert.deepStrictEqual(rangePostEdits, new Range(4, 0, 8, 0));
34
});
35
36
test('Edit range is contained in range of interest', async function () {
37
const edits: TextEdit[] = [
38
new TextEdit(new Range(6, 1, 7, 1), editText),
39
];
40
const rangePostEdits = await computeUpdatedRange(range, edits);
41
assert.deepStrictEqual(rangePostEdits, new Range(5, 0, 9, 0));
42
});
43
44
test('Edit range overlaps end of range of interest', async function () {
45
const edits: TextEdit[] = [
46
new TextEdit(new Range(9, 1, 11, 1), editText),
47
];
48
const rangePostEdits = await computeUpdatedRange(range, edits);
49
assert.deepStrictEqual(rangePostEdits, new Range(5, 0, 9, 0));
50
});
51
52
test('Edit range is after end of range of interest', async function () {
53
const edits: TextEdit[] = [
54
new TextEdit(new Range(11, 1, 13, 1), editText),
55
];
56
const rangePostEdits = await computeUpdatedRange(range, edits);
57
assert.deepStrictEqual(rangePostEdits, new Range(5, 0, 10, 0));
58
});
59
60
test('Edit range contains range of interest', async function () {
61
const edits: TextEdit[] = [
62
new TextEdit(new Range(3, 1, 13, 1), editText),
63
];
64
const rangePostEdits = await computeUpdatedRange(range, edits);
65
assert.deepStrictEqual(rangePostEdits, new Range(3, 0, 3, 0));
66
});
67
});
68
69