Path: blob/main/src/vs/workbench/api/test/browser/mainThreadDocuments.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 { BoundModelReferenceCollection } from '../../browser/mainThreadDocuments.js';7import { timeout } from '../../../../base/common/async.js';8import { URI } from '../../../../base/common/uri.js';9import { extUri } from '../../../../base/common/resources.js';10import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';1112suite('BoundModelReferenceCollection', function () {1314let col: BoundModelReferenceCollection;1516setup(function () {17col = new BoundModelReferenceCollection(extUri, 15, 75);18});1920teardown(function () {21col.dispose();22});2324ensureNoDisposablesAreLeakedInTestSuite();2526test('max age', async function () {2728let didDispose = false;2930col.add(31URI.parse('test://farboo'),32{33object: {},34dispose() {35didDispose = true;36}37});3839await timeout(30);40assert.strictEqual(didDispose, true);41});4243test('max size', function () {4445const disposed: number[] = [];4647col.add(48URI.parse('test://farboo'),49{50object: {},51dispose() {52disposed.push(0);53}54}, 6);5556col.add(57URI.parse('test://boofar'),58{59object: {},60dispose() {61disposed.push(1);62}63}, 6);6465col.add(66URI.parse('test://xxxxxxx'),67{68object: {},69dispose() {70disposed.push(2);71}72}, 70);7374assert.deepStrictEqual(disposed, [0, 1]);75});7677test('max count', function () {78col.dispose();79col = new BoundModelReferenceCollection(extUri, 10000, 10000, 2);8081const disposed: number[] = [];8283col.add(84URI.parse('test://xxxxxxx'),85{86object: {},87dispose() {88disposed.push(0);89}90}91);92col.add(93URI.parse('test://xxxxxxx'),94{95object: {},96dispose() {97disposed.push(1);98}99}100);101col.add(102URI.parse('test://xxxxxxx'),103{104object: {},105dispose() {106disposed.push(2);107}108}109);110111assert.deepStrictEqual(disposed, [0]);112});113114test('dispose uri', function () {115116let disposed: number[] = [];117118col.add(119URI.parse('test:///farboo'),120{121object: {},122dispose() {123disposed.push(0);124}125});126127col.add(128URI.parse('test:///boofar'),129{130object: {},131dispose() {132disposed.push(1);133}134});135136col.add(137URI.parse('test:///boo/far1'),138{139object: {},140dispose() {141disposed.push(2);142}143});144145col.add(146URI.parse('test:///boo/far2'),147{148object: {},149dispose() {150disposed.push(3);151}152});153154col.add(155URI.parse('test:///boo1/far'),156{157object: {},158dispose() {159disposed.push(4);160}161});162163col.remove(URI.parse('test:///unknown'));164assert.strictEqual(disposed.length, 0);165166col.remove(URI.parse('test:///farboo'));167assert.deepStrictEqual(disposed, [0]);168169disposed = [];170171col.remove(URI.parse('test:///boo'));172assert.deepStrictEqual(disposed, [2, 3]);173});174175});176177178