Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/editor/test/common/model/textModelTokens.test.ts
3296 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 { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';
8
import { OffsetRange } from '../../../common/core/ranges/offsetRange.js';
9
import { RangePriorityQueueImpl } from '../../../common/model/textModelTokens.js';
10
11
suite('RangePriorityQueueImpl', () => {
12
13
ensureNoDisposablesAreLeakedInTestSuite();
14
15
test('addRange', () => {
16
const ranges: OffsetRange[] = [];
17
18
OffsetRange.addRange(new OffsetRange(0, 2), ranges);
19
OffsetRange.addRange(new OffsetRange(10, 13), ranges);
20
OffsetRange.addRange(new OffsetRange(20, 24), ranges);
21
22
assert.deepStrictEqual(
23
ranges.map(r => r.toString()),
24
(['[0, 2)', '[10, 13)', '[20, 24)'])
25
);
26
27
OffsetRange.addRange(new OffsetRange(2, 10), ranges);
28
29
assert.deepStrictEqual(
30
ranges.map(r => r.toString()),
31
(['[0, 13)', '[20, 24)'])
32
);
33
34
OffsetRange.addRange(new OffsetRange(14, 19), ranges);
35
36
assert.deepStrictEqual(
37
ranges.map(r => r.toString()),
38
(['[0, 13)', '[14, 19)', '[20, 24)'])
39
);
40
41
OffsetRange.addRange(new OffsetRange(10, 22), ranges);
42
43
assert.deepStrictEqual(
44
ranges.map(r => r.toString()),
45
(['[0, 24)'])
46
);
47
48
OffsetRange.addRange(new OffsetRange(-1, 29), ranges);
49
50
assert.deepStrictEqual(
51
ranges.map(r => r.toString()),
52
(['[-1, 29)'])
53
);
54
55
OffsetRange.addRange(new OffsetRange(-10, -5), ranges);
56
57
assert.deepStrictEqual(
58
ranges.map(r => r.toString()),
59
(['[-10, -5)', '[-1, 29)'])
60
);
61
});
62
63
test('addRangeAndResize', () => {
64
const queue = new RangePriorityQueueImpl();
65
66
queue.addRange(new OffsetRange(0, 20));
67
queue.addRange(new OffsetRange(100, 120));
68
queue.addRange(new OffsetRange(200, 220));
69
70
// disjoint
71
queue.addRangeAndResize(new OffsetRange(25, 27), 0);
72
73
assert.deepStrictEqual(
74
queue.getRanges().map(r => r.toString()),
75
(['[0, 20)', '[98, 118)', '[198, 218)'])
76
);
77
78
queue.addRangeAndResize(new OffsetRange(19, 20), 0);
79
80
assert.deepStrictEqual(
81
queue.getRanges().map(r => r.toString()),
82
(['[0, 19)', '[97, 117)', '[197, 217)'])
83
);
84
85
queue.addRangeAndResize(new OffsetRange(19, 97), 0);
86
87
assert.deepStrictEqual(
88
queue.getRanges().map(r => r.toString()),
89
(['[0, 39)', '[119, 139)'])
90
);
91
92
queue.addRangeAndResize(new OffsetRange(-1000, 1000), 0);
93
94
assert.deepStrictEqual(
95
queue.getRanges().map(r => r.toString()),
96
([])
97
);
98
});
99
});
100
101