Path: blob/main/src/vs/editor/test/browser/commands/sideEditing.test.ts
3296 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 { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';7import { EditOperation, ISingleEditOperation } from '../../../common/core/editOperation.js';8import { Position } from '../../../common/core/position.js';9import { Range } from '../../../common/core/range.js';10import { Selection } from '../../../common/core/selection.js';11import { withTestCodeEditor } from '../testCodeEditor.js';1213function testCommand(lines: string[], selections: Selection[], edits: ISingleEditOperation[], expectedLines: string[], expectedSelections: Selection[]): void {14withTestCodeEditor(lines, {}, (editor, viewModel) => {15const model = editor.getModel()!;1617viewModel.setSelections('tests', selections);1819model.applyEdits(edits);2021assert.deepStrictEqual(model.getLinesContent(), expectedLines);2223const actualSelections = viewModel.getSelections();24assert.deepStrictEqual(actualSelections.map(s => s.toString()), expectedSelections.map(s => s.toString()));2526});27}2829suite('Editor Side Editing - collapsed selection', () => {3031ensureNoDisposablesAreLeakedInTestSuite();3233test('replace at selection', () => {34testCommand(35[36'first',37'second line',38'third line',39'fourth'40],41[new Selection(1, 1, 1, 1)],42[43EditOperation.replace(new Selection(1, 1, 1, 1), 'something ')44],45[46'something first',47'second line',48'third line',49'fourth'50],51[new Selection(1, 11, 1, 11)]52);53});5455test('replace at selection 2', () => {56testCommand(57[58'first',59'second line',60'third line',61'fourth'62],63[new Selection(1, 1, 1, 6)],64[65EditOperation.replace(new Selection(1, 1, 1, 6), 'something')66],67[68'something',69'second line',70'third line',71'fourth'72],73[new Selection(1, 1, 1, 10)]74);75});7677test('insert at selection', () => {78testCommand(79[80'first',81'second line',82'third line',83'fourth'84],85[new Selection(1, 1, 1, 1)],86[87EditOperation.insert(new Position(1, 1), 'something ')88],89[90'something first',91'second line',92'third line',93'fourth'94],95[new Selection(1, 11, 1, 11)]96);97});9899test('insert at selection sitting on max column', () => {100testCommand(101[102'first',103'second line',104'third line',105'fourth'106],107[new Selection(1, 6, 1, 6)],108[109EditOperation.insert(new Position(1, 6), ' something\nnew ')110],111[112'first something',113'new ',114'second line',115'third line',116'fourth'117],118[new Selection(2, 5, 2, 5)]119);120});121122test('issue #3994: replace on top of selection', () => {123testCommand(124[125'$obj = New-Object "system.col"'126],127[new Selection(1, 30, 1, 30)],128[129EditOperation.replaceMove(new Range(1, 19, 1, 31), '"System.Collections"')130],131[132'$obj = New-Object "System.Collections"'133],134[new Selection(1, 39, 1, 39)]135);136});137138test('issue #15267: Suggestion that adds a line - cursor goes to the wrong line ', () => {139testCommand(140[141'package main',142'',143'import (',144' "fmt"',145')',146'',147'func main(',148' fmt.Println(strings.Con)',149'}'150],151[new Selection(8, 25, 8, 25)],152[153EditOperation.replaceMove(new Range(5, 1, 5, 1), '\t\"strings\"\n')154],155[156'package main',157'',158'import (',159' "fmt"',160' "strings"',161')',162'',163'func main(',164' fmt.Println(strings.Con)',165'}'166],167[new Selection(9, 25, 9, 25)]168);169});170171test('issue #15236: Selections broke after deleting text using vscode.TextEditor.edit ', () => {172testCommand(173[174'foofoofoo, foofoofoo, bar'175],176[new Selection(1, 1, 1, 10), new Selection(1, 12, 1, 21)],177[178EditOperation.replace(new Range(1, 1, 1, 10), ''),179EditOperation.replace(new Range(1, 12, 1, 21), ''),180],181[182', , bar'183],184[new Selection(1, 1, 1, 1), new Selection(1, 3, 1, 3)]185);186});187});188189suite('SideEditing', () => {190191ensureNoDisposablesAreLeakedInTestSuite();192193const LINES = [194'My First Line',195'My Second Line',196'Third Line'197];198199function _runTest(selection: Selection, editRange: Range, editText: string, editForceMoveMarkers: boolean, expected: Selection, msg: string): void {200withTestCodeEditor(LINES.join('\n'), {}, (editor, viewModel) => {201viewModel.setSelections('tests', [selection]);202editor.getModel().applyEdits([{203range: editRange,204text: editText,205forceMoveMarkers: editForceMoveMarkers206}]);207const actual = viewModel.getSelection();208assert.deepStrictEqual(actual.toString(), expected.toString(), msg);209});210}211212function runTest(selection: Range, editRange: Range, editText: string, expected: Selection[][]): void {213const sel1 = new Selection(selection.startLineNumber, selection.startColumn, selection.endLineNumber, selection.endColumn);214_runTest(sel1, editRange, editText, false, expected[0][0], '0-0-regular-no-force');215_runTest(sel1, editRange, editText, true, expected[1][0], '1-0-regular-force');216217// RTL selection218const sel2 = new Selection(selection.endLineNumber, selection.endColumn, selection.startLineNumber, selection.startColumn);219_runTest(sel2, editRange, editText, false, expected[0][1], '0-1-inverse-no-force');220_runTest(sel2, editRange, editText, true, expected[1][1], '1-1-inverse-force');221}222223suite('insert', () => {224suite('collapsed sel', () => {225test('before', () => {226runTest(227new Range(1, 4, 1, 4),228new Range(1, 3, 1, 3), 'xx',229[230[new Selection(1, 6, 1, 6), new Selection(1, 6, 1, 6)],231[new Selection(1, 6, 1, 6), new Selection(1, 6, 1, 6)],232]233);234});235test('equal', () => {236runTest(237new Range(1, 4, 1, 4),238new Range(1, 4, 1, 4), 'xx',239[240[new Selection(1, 6, 1, 6), new Selection(1, 6, 1, 6)],241[new Selection(1, 6, 1, 6), new Selection(1, 6, 1, 6)],242]243);244});245test('after', () => {246runTest(247new Range(1, 4, 1, 4),248new Range(1, 5, 1, 5), 'xx',249[250[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],251[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],252]253);254});255});256suite('non-collapsed dec', () => {257test('before', () => {258runTest(259new Range(1, 4, 1, 9),260new Range(1, 3, 1, 3), 'xx',261[262[new Selection(1, 6, 1, 11), new Selection(1, 11, 1, 6)],263[new Selection(1, 6, 1, 11), new Selection(1, 11, 1, 6)],264]265);266});267test('start', () => {268runTest(269new Range(1, 4, 1, 9),270new Range(1, 4, 1, 4), 'xx',271[272[new Selection(1, 4, 1, 11), new Selection(1, 11, 1, 4)],273[new Selection(1, 6, 1, 11), new Selection(1, 11, 1, 6)],274]275);276});277test('inside', () => {278runTest(279new Range(1, 4, 1, 9),280new Range(1, 5, 1, 5), 'xx',281[282[new Selection(1, 4, 1, 11), new Selection(1, 11, 1, 4)],283[new Selection(1, 4, 1, 11), new Selection(1, 11, 1, 4)],284]285);286});287test('end', () => {288runTest(289new Range(1, 4, 1, 9),290new Range(1, 9, 1, 9), 'xx',291[292[new Selection(1, 4, 1, 11), new Selection(1, 11, 1, 4)],293[new Selection(1, 4, 1, 11), new Selection(1, 11, 1, 4)],294]295);296});297test('after', () => {298runTest(299new Range(1, 4, 1, 9),300new Range(1, 10, 1, 10), 'xx',301[302[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],303[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],304]305);306});307});308});309310suite('delete', () => {311suite('collapsed dec', () => {312test('edit.end < range.start', () => {313runTest(314new Range(1, 4, 1, 4),315new Range(1, 1, 1, 3), '',316[317[new Selection(1, 2, 1, 2), new Selection(1, 2, 1, 2)],318[new Selection(1, 2, 1, 2), new Selection(1, 2, 1, 2)],319]320);321});322test('edit.end <= range.start', () => {323runTest(324new Range(1, 4, 1, 4),325new Range(1, 2, 1, 4), '',326[327[new Selection(1, 2, 1, 2), new Selection(1, 2, 1, 2)],328[new Selection(1, 2, 1, 2), new Selection(1, 2, 1, 2)],329]330);331});332test('edit.start < range.start && edit.end > range.end', () => {333runTest(334new Range(1, 4, 1, 4),335new Range(1, 3, 1, 5), '',336[337[new Selection(1, 3, 1, 3), new Selection(1, 3, 1, 3)],338[new Selection(1, 3, 1, 3), new Selection(1, 3, 1, 3)],339]340);341});342test('edit.start >= range.end', () => {343runTest(344new Range(1, 4, 1, 4),345new Range(1, 4, 1, 6), '',346[347[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],348[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],349]350);351});352test('edit.start > range.end', () => {353runTest(354new Range(1, 4, 1, 4),355new Range(1, 5, 1, 7), '',356[357[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],358[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],359]360);361});362});363suite('non-collapsed dec', () => {364test('edit.end < range.start', () => {365runTest(366new Range(1, 4, 1, 9),367new Range(1, 1, 1, 3), '',368[369[new Selection(1, 2, 1, 7), new Selection(1, 7, 1, 2)],370[new Selection(1, 2, 1, 7), new Selection(1, 7, 1, 2)],371]372);373});374test('edit.end <= range.start', () => {375runTest(376new Range(1, 4, 1, 9),377new Range(1, 2, 1, 4), '',378[379[new Selection(1, 2, 1, 7), new Selection(1, 7, 1, 2)],380[new Selection(1, 2, 1, 7), new Selection(1, 7, 1, 2)],381]382);383});384test('edit.start < range.start && edit.end < range.end', () => {385runTest(386new Range(1, 4, 1, 9),387new Range(1, 3, 1, 5), '',388[389[new Selection(1, 3, 1, 7), new Selection(1, 7, 1, 3)],390[new Selection(1, 3, 1, 7), new Selection(1, 7, 1, 3)],391]392);393});394395test('edit.start < range.start && edit.end == range.end', () => {396runTest(397new Range(1, 4, 1, 9),398new Range(1, 3, 1, 9), '',399[400[new Selection(1, 3, 1, 3), new Selection(1, 3, 1, 3)],401[new Selection(1, 3, 1, 3), new Selection(1, 3, 1, 3)],402]403);404});405406test('edit.start < range.start && edit.end > range.end', () => {407runTest(408new Range(1, 4, 1, 9),409new Range(1, 3, 1, 10), '',410[411[new Selection(1, 3, 1, 3), new Selection(1, 3, 1, 3)],412[new Selection(1, 3, 1, 3), new Selection(1, 3, 1, 3)],413]414);415});416417test('edit.start == range.start && edit.end < range.end', () => {418runTest(419new Range(1, 4, 1, 9),420new Range(1, 4, 1, 6), '',421[422[new Selection(1, 4, 1, 7), new Selection(1, 7, 1, 4)],423[new Selection(1, 4, 1, 7), new Selection(1, 7, 1, 4)],424]425);426});427428test('edit.start == range.start && edit.end == range.end', () => {429runTest(430new Range(1, 4, 1, 9),431new Range(1, 4, 1, 9), '',432[433[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],434[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],435]436);437});438439test('edit.start == range.start && edit.end > range.end', () => {440runTest(441new Range(1, 4, 1, 9),442new Range(1, 4, 1, 10), '',443[444[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],445[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],446]447);448});449450test('edit.start > range.start && edit.start < range.end && edit.end < range.end', () => {451runTest(452new Range(1, 4, 1, 9),453new Range(1, 5, 1, 7), '',454[455[new Selection(1, 4, 1, 7), new Selection(1, 7, 1, 4)],456[new Selection(1, 4, 1, 7), new Selection(1, 7, 1, 4)],457]458);459});460461test('edit.start > range.start && edit.start < range.end && edit.end == range.end', () => {462runTest(463new Range(1, 4, 1, 9),464new Range(1, 5, 1, 9), '',465[466[new Selection(1, 4, 1, 5), new Selection(1, 5, 1, 4)],467[new Selection(1, 4, 1, 5), new Selection(1, 5, 1, 4)],468]469);470});471472test('edit.start > range.start && edit.start < range.end && edit.end > range.end', () => {473runTest(474new Range(1, 4, 1, 9),475new Range(1, 5, 1, 10), '',476[477[new Selection(1, 4, 1, 5), new Selection(1, 5, 1, 4)],478[new Selection(1, 4, 1, 5), new Selection(1, 5, 1, 4)],479]480);481});482483test('edit.start == range.end', () => {484runTest(485new Range(1, 4, 1, 9),486new Range(1, 9, 1, 11), '',487[488[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],489[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],490]491);492});493494test('edit.start > range.end', () => {495runTest(496new Range(1, 4, 1, 9),497new Range(1, 10, 1, 11), '',498[499[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],500[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],501]502);503});504});505});506507suite('replace short', () => {508suite('collapsed dec', () => {509test('edit.end < range.start', () => {510runTest(511new Range(1, 4, 1, 4),512new Range(1, 1, 1, 3), 'c',513[514[new Selection(1, 3, 1, 3), new Selection(1, 3, 1, 3)],515[new Selection(1, 3, 1, 3), new Selection(1, 3, 1, 3)],516]517);518});519test('edit.end <= range.start', () => {520runTest(521new Range(1, 4, 1, 4),522new Range(1, 2, 1, 4), 'c',523[524[new Selection(1, 3, 1, 3), new Selection(1, 3, 1, 3)],525[new Selection(1, 3, 1, 3), new Selection(1, 3, 1, 3)],526]527);528});529test('edit.start < range.start && edit.end > range.end', () => {530runTest(531new Range(1, 4, 1, 4),532new Range(1, 3, 1, 5), 'c',533[534[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],535[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],536]537);538});539test('edit.start >= range.end', () => {540runTest(541new Range(1, 4, 1, 4),542new Range(1, 4, 1, 6), 'c',543[544[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],545[new Selection(1, 5, 1, 5), new Selection(1, 5, 1, 5)],546]547);548});549test('edit.start > range.end', () => {550runTest(551new Range(1, 4, 1, 4),552new Range(1, 5, 1, 7), 'c',553[554[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],555[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],556]557);558});559});560suite('non-collapsed dec', () => {561test('edit.end < range.start', () => {562runTest(563new Range(1, 4, 1, 9),564new Range(1, 1, 1, 3), 'c',565[566[new Selection(1, 3, 1, 8), new Selection(1, 8, 1, 3)],567[new Selection(1, 3, 1, 8), new Selection(1, 8, 1, 3)],568]569);570});571test('edit.end <= range.start', () => {572runTest(573new Range(1, 4, 1, 9),574new Range(1, 2, 1, 4), 'c',575[576[new Selection(1, 3, 1, 8), new Selection(1, 8, 1, 3)],577[new Selection(1, 3, 1, 8), new Selection(1, 8, 1, 3)],578]579);580});581test('edit.start < range.start && edit.end < range.end', () => {582runTest(583new Range(1, 4, 1, 9),584new Range(1, 3, 1, 5), 'c',585[586[new Selection(1, 4, 1, 8), new Selection(1, 8, 1, 4)],587[new Selection(1, 4, 1, 8), new Selection(1, 8, 1, 4)],588]589);590});591test('edit.start < range.start && edit.end == range.end', () => {592runTest(593new Range(1, 4, 1, 9),594new Range(1, 3, 1, 9), 'c',595[596[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],597[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],598]599);600});601test('edit.start < range.start && edit.end > range.end', () => {602runTest(603new Range(1, 4, 1, 9),604new Range(1, 3, 1, 10), 'c',605[606[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],607[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],608]609);610});611test('edit.start == range.start && edit.end < range.end', () => {612runTest(613new Range(1, 4, 1, 9),614new Range(1, 4, 1, 6), 'c',615[616[new Selection(1, 4, 1, 8), new Selection(1, 8, 1, 4)],617[new Selection(1, 5, 1, 8), new Selection(1, 8, 1, 5)],618]619);620});621test('edit.start == range.start && edit.end == range.end', () => {622runTest(623new Range(1, 4, 1, 9),624new Range(1, 4, 1, 9), 'c',625[626[new Selection(1, 4, 1, 5), new Selection(1, 5, 1, 4)],627[new Selection(1, 5, 1, 5), new Selection(1, 5, 1, 5)],628]629);630});631test('edit.start == range.start && edit.end > range.end', () => {632runTest(633new Range(1, 4, 1, 9),634new Range(1, 4, 1, 10), 'c',635[636[new Selection(1, 4, 1, 5), new Selection(1, 5, 1, 4)],637[new Selection(1, 5, 1, 5), new Selection(1, 5, 1, 5)],638]639);640});641test('edit.start > range.start && edit.start < range.end && edit.end < range.end', () => {642runTest(643new Range(1, 4, 1, 9),644new Range(1, 5, 1, 7), 'c',645[646[new Selection(1, 4, 1, 8), new Selection(1, 8, 1, 4)],647[new Selection(1, 4, 1, 8), new Selection(1, 8, 1, 4)],648]649);650});651test('edit.start > range.start && edit.start < range.end && edit.end == range.end', () => {652runTest(653new Range(1, 4, 1, 9),654new Range(1, 5, 1, 9), 'c',655[656[new Selection(1, 4, 1, 6), new Selection(1, 6, 1, 4)],657[new Selection(1, 4, 1, 6), new Selection(1, 6, 1, 4)],658]659);660});661test('edit.start > range.start && edit.start < range.end && edit.end > range.end', () => {662runTest(663new Range(1, 4, 1, 9),664new Range(1, 5, 1, 10), 'c',665[666[new Selection(1, 4, 1, 6), new Selection(1, 6, 1, 4)],667[new Selection(1, 4, 1, 6), new Selection(1, 6, 1, 4)],668]669);670});671test('edit.start == range.end', () => {672runTest(673new Range(1, 4, 1, 9),674new Range(1, 9, 1, 11), 'c',675[676[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],677[new Selection(1, 4, 1, 10), new Selection(1, 10, 1, 4)],678]679);680});681test('edit.start > range.end', () => {682runTest(683new Range(1, 4, 1, 9),684new Range(1, 10, 1, 11), 'c',685[686[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],687[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],688]689);690});691});692});693694suite('replace long', () => {695suite('collapsed dec', () => {696test('edit.end < range.start', () => {697runTest(698new Range(1, 4, 1, 4),699new Range(1, 1, 1, 3), 'cccc',700[701[new Selection(1, 6, 1, 6), new Selection(1, 6, 1, 6)],702[new Selection(1, 6, 1, 6), new Selection(1, 6, 1, 6)],703]704);705});706test('edit.end <= range.start', () => {707runTest(708new Range(1, 4, 1, 4),709new Range(1, 2, 1, 4), 'cccc',710[711[new Selection(1, 6, 1, 6), new Selection(1, 6, 1, 6)],712[new Selection(1, 6, 1, 6), new Selection(1, 6, 1, 6)],713]714);715});716test('edit.start < range.start && edit.end > range.end', () => {717runTest(718new Range(1, 4, 1, 4),719new Range(1, 3, 1, 5), 'cccc',720[721[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],722[new Selection(1, 7, 1, 7), new Selection(1, 7, 1, 7)],723]724);725});726test('edit.start >= range.end', () => {727runTest(728new Range(1, 4, 1, 4),729new Range(1, 4, 1, 6), 'cccc',730[731[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],732[new Selection(1, 8, 1, 8), new Selection(1, 8, 1, 8)],733]734);735});736test('edit.start > range.end', () => {737runTest(738new Range(1, 4, 1, 4),739new Range(1, 5, 1, 7), 'cccc',740[741[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],742[new Selection(1, 4, 1, 4), new Selection(1, 4, 1, 4)],743]744);745});746});747suite('non-collapsed dec', () => {748test('edit.end < range.start', () => {749runTest(750new Range(1, 4, 1, 9),751new Range(1, 1, 1, 3), 'cccc',752[753[new Selection(1, 6, 1, 11), new Selection(1, 11, 1, 6)],754[new Selection(1, 6, 1, 11), new Selection(1, 11, 1, 6)],755]756);757});758test('edit.end <= range.start', () => {759runTest(760new Range(1, 4, 1, 9),761new Range(1, 2, 1, 4), 'cccc',762[763[new Selection(1, 4, 1, 11), new Selection(1, 11, 1, 4)],764[new Selection(1, 6, 1, 11), new Selection(1, 11, 1, 6)],765]766);767});768test('edit.start < range.start && edit.end < range.end', () => {769runTest(770new Range(1, 4, 1, 9),771new Range(1, 3, 1, 5), 'cccc',772[773[new Selection(1, 4, 1, 11), new Selection(1, 11, 1, 4)],774[new Selection(1, 7, 1, 11), new Selection(1, 11, 1, 7)],775]776);777});778test('edit.start < range.start && edit.end == range.end', () => {779runTest(780new Range(1, 4, 1, 9),781new Range(1, 3, 1, 9), 'cccc',782[783[new Selection(1, 4, 1, 7), new Selection(1, 7, 1, 4)],784[new Selection(1, 7, 1, 7), new Selection(1, 7, 1, 7)],785]786);787});788test('edit.start < range.start && edit.end > range.end', () => {789runTest(790new Range(1, 4, 1, 9),791new Range(1, 3, 1, 10), 'cccc',792[793[new Selection(1, 4, 1, 7), new Selection(1, 7, 1, 4)],794[new Selection(1, 7, 1, 7), new Selection(1, 7, 1, 7)],795]796);797});798test('edit.start == range.start && edit.end < range.end', () => {799runTest(800new Range(1, 4, 1, 9),801new Range(1, 4, 1, 6), 'cccc',802[803[new Selection(1, 4, 1, 11), new Selection(1, 11, 1, 4)],804[new Selection(1, 8, 1, 11), new Selection(1, 11, 1, 8)],805]806);807});808test('edit.start == range.start && edit.end == range.end', () => {809runTest(810new Range(1, 4, 1, 9),811new Range(1, 4, 1, 9), 'cccc',812[813[new Selection(1, 4, 1, 8), new Selection(1, 8, 1, 4)],814[new Selection(1, 8, 1, 8), new Selection(1, 8, 1, 8)],815]816);817});818test('edit.start == range.start && edit.end > range.end', () => {819runTest(820new Range(1, 4, 1, 9),821new Range(1, 4, 1, 10), 'cccc',822[823[new Selection(1, 4, 1, 8), new Selection(1, 8, 1, 4)],824[new Selection(1, 8, 1, 8), new Selection(1, 8, 1, 8)],825]826);827});828test('edit.start > range.start && edit.start < range.end && edit.end < range.end', () => {829runTest(830new Range(1, 4, 1, 9),831new Range(1, 5, 1, 7), 'cccc',832[833[new Selection(1, 4, 1, 11), new Selection(1, 11, 1, 4)],834[new Selection(1, 4, 1, 11), new Selection(1, 11, 1, 4)],835]836);837});838test('edit.start > range.start && edit.start < range.end && edit.end == range.end', () => {839runTest(840new Range(1, 4, 1, 9),841new Range(1, 5, 1, 9), 'cccc',842[843[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],844[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],845]846);847});848test('edit.start > range.start && edit.start < range.end && edit.end > range.end', () => {849runTest(850new Range(1, 4, 1, 9),851new Range(1, 5, 1, 10), 'cccc',852[853[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],854[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],855]856);857});858test('edit.start == range.end', () => {859runTest(860new Range(1, 4, 1, 9),861new Range(1, 9, 1, 11), 'cccc',862[863[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],864[new Selection(1, 4, 1, 13), new Selection(1, 13, 1, 4)],865]866);867});868test('edit.start > range.end', () => {869runTest(870new Range(1, 4, 1, 9),871new Range(1, 10, 1, 11), 'cccc',872[873[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],874[new Selection(1, 4, 1, 9), new Selection(1, 9, 1, 4)],875]876);877});878});879});880});881882883