Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/api/test/browser/mainThreadDocuments.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 { BoundModelReferenceCollection } from '../../browser/mainThreadDocuments.js';
8
import { timeout } from '../../../../base/common/async.js';
9
import { URI } from '../../../../base/common/uri.js';
10
import { extUri } from '../../../../base/common/resources.js';
11
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';
12
13
suite('BoundModelReferenceCollection', function () {
14
15
let col: BoundModelReferenceCollection;
16
17
setup(function () {
18
col = new BoundModelReferenceCollection(extUri, 15, 75);
19
});
20
21
teardown(function () {
22
col.dispose();
23
});
24
25
ensureNoDisposablesAreLeakedInTestSuite();
26
27
test('max age', async function () {
28
29
let didDispose = false;
30
31
col.add(
32
URI.parse('test://farboo'),
33
{
34
object: {},
35
dispose() {
36
didDispose = true;
37
}
38
});
39
40
await timeout(30);
41
assert.strictEqual(didDispose, true);
42
});
43
44
test('max size', function () {
45
46
const disposed: number[] = [];
47
48
col.add(
49
URI.parse('test://farboo'),
50
{
51
object: {},
52
dispose() {
53
disposed.push(0);
54
}
55
}, 6);
56
57
col.add(
58
URI.parse('test://boofar'),
59
{
60
object: {},
61
dispose() {
62
disposed.push(1);
63
}
64
}, 6);
65
66
col.add(
67
URI.parse('test://xxxxxxx'),
68
{
69
object: {},
70
dispose() {
71
disposed.push(2);
72
}
73
}, 70);
74
75
assert.deepStrictEqual(disposed, [0, 1]);
76
});
77
78
test('max count', function () {
79
col.dispose();
80
col = new BoundModelReferenceCollection(extUri, 10000, 10000, 2);
81
82
const disposed: number[] = [];
83
84
col.add(
85
URI.parse('test://xxxxxxx'),
86
{
87
object: {},
88
dispose() {
89
disposed.push(0);
90
}
91
}
92
);
93
col.add(
94
URI.parse('test://xxxxxxx'),
95
{
96
object: {},
97
dispose() {
98
disposed.push(1);
99
}
100
}
101
);
102
col.add(
103
URI.parse('test://xxxxxxx'),
104
{
105
object: {},
106
dispose() {
107
disposed.push(2);
108
}
109
}
110
);
111
112
assert.deepStrictEqual(disposed, [0]);
113
});
114
115
test('dispose uri', function () {
116
117
let disposed: number[] = [];
118
119
col.add(
120
URI.parse('test:///farboo'),
121
{
122
object: {},
123
dispose() {
124
disposed.push(0);
125
}
126
});
127
128
col.add(
129
URI.parse('test:///boofar'),
130
{
131
object: {},
132
dispose() {
133
disposed.push(1);
134
}
135
});
136
137
col.add(
138
URI.parse('test:///boo/far1'),
139
{
140
object: {},
141
dispose() {
142
disposed.push(2);
143
}
144
});
145
146
col.add(
147
URI.parse('test:///boo/far2'),
148
{
149
object: {},
150
dispose() {
151
disposed.push(3);
152
}
153
});
154
155
col.add(
156
URI.parse('test:///boo1/far'),
157
{
158
object: {},
159
dispose() {
160
disposed.push(4);
161
}
162
});
163
164
col.remove(URI.parse('test:///unknown'));
165
assert.strictEqual(disposed.length, 0);
166
167
col.remove(URI.parse('test:///farboo'));
168
assert.deepStrictEqual(disposed, [0]);
169
170
disposed = [];
171
172
col.remove(URI.parse('test:///boo'));
173
assert.deepStrictEqual(disposed, [2, 3]);
174
});
175
176
});
177
178