Path: blob/main/extensions/copilot/src/platform/editing/node/edits.spec.ts
13401 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import assert from 'assert';6import { beforeAll, suite, test } from 'vitest';7import { Range, TextEdit } from '../../../vscodeTypes';8import { computeUpdatedRange } from '../common/edits';910suite('findApproximateRangePostEdits', function () {1112let range: Range;13let editText: string;14beforeAll(async function () {15range = new Range(5, 1, 10, 1);16editText = 'some text';17});1819test('Edit range before range of interest', async function () {20const edits: TextEdit[] = [21new TextEdit(new Range(4, 1, 4, 1), editText),22];23const rangePostEdits = await computeUpdatedRange(range, edits);24assert.deepStrictEqual(rangePostEdits, new Range(5, 0, 10, 0));25});2627test('Edit range overlaps start of range of interest', async function () {28const edits: TextEdit[] = [29new TextEdit(new Range(4, 1, 6, 1), editText),30];31const rangePostEdits = await computeUpdatedRange(range, edits);32assert.deepStrictEqual(rangePostEdits, new Range(4, 0, 8, 0));33});3435test('Edit range is contained in range of interest', async function () {36const edits: TextEdit[] = [37new TextEdit(new Range(6, 1, 7, 1), editText),38];39const rangePostEdits = await computeUpdatedRange(range, edits);40assert.deepStrictEqual(rangePostEdits, new Range(5, 0, 9, 0));41});4243test('Edit range overlaps end of range of interest', async function () {44const edits: TextEdit[] = [45new TextEdit(new Range(9, 1, 11, 1), editText),46];47const rangePostEdits = await computeUpdatedRange(range, edits);48assert.deepStrictEqual(rangePostEdits, new Range(5, 0, 9, 0));49});5051test('Edit range is after end of range of interest', async function () {52const edits: TextEdit[] = [53new TextEdit(new Range(11, 1, 13, 1), editText),54];55const rangePostEdits = await computeUpdatedRange(range, edits);56assert.deepStrictEqual(rangePostEdits, new Range(5, 0, 10, 0));57});5859test('Edit range contains range of interest', async function () {60const edits: TextEdit[] = [61new TextEdit(new Range(3, 1, 13, 1), editText),62];63const rangePostEdits = await computeUpdatedRange(range, edits);64assert.deepStrictEqual(rangePostEdits, new Range(3, 0, 3, 0));65});66});676869