Path: blob/main/src/vs/workbench/contrib/debug/test/browser/debugViewModel.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 { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';7import { MockContextKeyService } from '../../../../../platform/keybinding/test/common/mockKeybindingService.js';8import { NullLogService } from '../../../../../platform/log/common/log.js';9import { Expression, StackFrame, Thread } from '../../common/debugModel.js';10import { Source } from '../../common/debugSource.js';11import { ViewModel } from '../../common/debugViewModel.js';12import { mockUriIdentityService } from './mockDebugModel.js';13import { MockSession } from '../common/mockDebug.js';1415suite('Debug - View Model', () => {16let model: ViewModel;1718setup(() => {19model = new ViewModel(new MockContextKeyService());20});2122ensureNoDisposablesAreLeakedInTestSuite();2324test('focused stack frame', () => {25assert.strictEqual(model.focusedStackFrame, undefined);26assert.strictEqual(model.focusedThread, undefined);27const session = new MockSession();28const thread = new Thread(session, 'myThread', 1);29const source = new Source({30name: 'internalModule.js',31sourceReference: 11,32presentationHint: 'deemphasize'33}, 'aDebugSessionId', mockUriIdentityService, new NullLogService());34const frame = new StackFrame(thread, 1, source, 'app.js', 'normal', { startColumn: 1, startLineNumber: 1, endColumn: 1, endLineNumber: 1 }, 0, true);35model.setFocus(frame, thread, session, false);3637assert.strictEqual(model.focusedStackFrame!.getId(), frame.getId());38assert.strictEqual(model.focusedThread!.threadId, 1);39assert.strictEqual(model.focusedSession!.getId(), session.getId());40});4142test('selected expression', () => {43assert.strictEqual(model.getSelectedExpression(), undefined);44const expression = new Expression('my expression');45model.setSelectedExpression(expression, false);4647assert.strictEqual(model.getSelectedExpression()?.expression, expression);48});4950test('multi session view and changed workbench state', () => {51assert.strictEqual(model.isMultiSessionView(), false);52model.setMultiSessionView(true);53assert.strictEqual(model.isMultiSessionView(), true);54});55});565758