Path: blob/main/src/vs/workbench/api/test/browser/mainThreadDocumentContentProviders.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 { URI } from '../../../../base/common/uri.js';7import { MainThreadDocumentContentProviders } from '../../browser/mainThreadDocumentContentProviders.js';8import { createTextModel } from '../../../../editor/test/common/testTextModel.js';9import { mock } from '../../../../base/test/common/mock.js';10import { IModelService } from '../../../../editor/common/services/model.js';11import { IEditorWorkerService } from '../../../../editor/common/services/editorWorker.js';12import { TestRPCProtocol } from '../common/testRPCProtocol.js';13import { TextEdit } from '../../../../editor/common/languages.js';14import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';1516suite('MainThreadDocumentContentProviders', function () {1718const store = ensureNoDisposablesAreLeakedInTestSuite();1920test('events are processed properly', function () {2122const uri = URI.parse('test:uri');23const model = createTextModel('1', undefined, undefined, uri);2425const providers = new MainThreadDocumentContentProviders(new TestRPCProtocol(), null!, null!,26new class extends mock<IModelService>() {27override getModel(_uri: URI) {28assert.strictEqual(uri.toString(), _uri.toString());29return model;30}31},32new class extends mock<IEditorWorkerService>() {33override computeMoreMinimalEdits(_uri: URI, data: TextEdit[] | undefined) {34assert.strictEqual(model.getValue(), '1');35return Promise.resolve(data);36}37},38);3940store.add(model);41store.add(providers);4243return new Promise<void>((resolve, reject) => {44let expectedEvents = 1;45store.add(model.onDidChangeContent(e => {46expectedEvents -= 1;47try {48assert.ok(expectedEvents >= 0);49} catch (err) {50reject(err);51}52if (model.getValue() === '1\n2\n3') {53model.dispose();54resolve();55}56}));57providers.$onVirtualDocumentChange(uri, '1\n2');58providers.$onVirtualDocumentChange(uri, '1\n2\n3');59});60});61});626364