Path: blob/main/src/vs/platform/instantiation/test/common/graph.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*--------------------------------------------------------------------------------------------*/4import assert from 'assert';5import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';6import { Graph } from '../../common/graph.js';78suite('Graph', () => {910let graph: Graph<string>;1112setup(() => {13graph = new Graph<string>(s => s);14});1516ensureNoDisposablesAreLeakedInTestSuite();1718test('is possible to lookup nodes that don\'t exist', function () {19assert.strictEqual(graph.lookup('ddd'), undefined);20});2122test('inserts nodes when not there yet', function () {23assert.strictEqual(graph.lookup('ddd'), undefined);24assert.strictEqual(graph.lookupOrInsertNode('ddd').data, 'ddd');25assert.strictEqual(graph.lookup('ddd')!.data, 'ddd');26});2728test('can remove nodes and get length', function () {29assert.ok(graph.isEmpty());30assert.strictEqual(graph.lookup('ddd'), undefined);31assert.strictEqual(graph.lookupOrInsertNode('ddd').data, 'ddd');32assert.ok(!graph.isEmpty());33graph.removeNode('ddd');34assert.strictEqual(graph.lookup('ddd'), undefined);35assert.ok(graph.isEmpty());36});3738test('root', () => {39graph.insertEdge('1', '2');40let roots = graph.roots();41assert.strictEqual(roots.length, 1);42assert.strictEqual(roots[0].data, '2');4344graph.insertEdge('2', '1');45roots = graph.roots();46assert.strictEqual(roots.length, 0);47});4849test('root complex', function () {50graph.insertEdge('1', '2');51graph.insertEdge('1', '3');52graph.insertEdge('3', '4');5354const roots = graph.roots();55assert.strictEqual(roots.length, 2);56assert(['2', '4'].every(n => roots.some(node => node.data === n)));57});58});596061