Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/platform/instantiation/test/common/graph.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
import assert from 'assert';
6
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';
7
import { Graph } from '../../common/graph.js';
8
9
suite('Graph', () => {
10
11
let graph: Graph<string>;
12
13
setup(() => {
14
graph = new Graph<string>(s => s);
15
});
16
17
ensureNoDisposablesAreLeakedInTestSuite();
18
19
test('is possible to lookup nodes that don\'t exist', function () {
20
assert.strictEqual(graph.lookup('ddd'), undefined);
21
});
22
23
test('inserts nodes when not there yet', function () {
24
assert.strictEqual(graph.lookup('ddd'), undefined);
25
assert.strictEqual(graph.lookupOrInsertNode('ddd').data, 'ddd');
26
assert.strictEqual(graph.lookup('ddd')!.data, 'ddd');
27
});
28
29
test('can remove nodes and get length', function () {
30
assert.ok(graph.isEmpty());
31
assert.strictEqual(graph.lookup('ddd'), undefined);
32
assert.strictEqual(graph.lookupOrInsertNode('ddd').data, 'ddd');
33
assert.ok(!graph.isEmpty());
34
graph.removeNode('ddd');
35
assert.strictEqual(graph.lookup('ddd'), undefined);
36
assert.ok(graph.isEmpty());
37
});
38
39
test('root', () => {
40
graph.insertEdge('1', '2');
41
let roots = graph.roots();
42
assert.strictEqual(roots.length, 1);
43
assert.strictEqual(roots[0].data, '2');
44
45
graph.insertEdge('2', '1');
46
roots = graph.roots();
47
assert.strictEqual(roots.length, 0);
48
});
49
50
test('root complex', function () {
51
graph.insertEdge('1', '2');
52
graph.insertEdge('1', '3');
53
graph.insertEdge('3', '4');
54
55
const roots = graph.roots();
56
assert.strictEqual(roots.length, 2);
57
assert(['2', '4'].every(n => roots.some(node => node.data === n)));
58
});
59
});
60
61