Path: blob/main/src/vs/platform/dialogs/test/common/dialog.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 { deepEqual } from 'assert';6import { isLinux, isMacintosh, isWindows } from '../../../../base/common/platform.js';7import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';8import { IMassagedMessageBoxOptions, massageMessageBoxOptions } from '../../common/dialogs.js';9import product from '../../../product/common/product.js';10import { IProductService } from '../../../product/common/productService.js';1112suite('Dialog', () => {1314function assertOptions({ options, buttonIndeces }: IMassagedMessageBoxOptions, buttons: string[], defaultId: number, cancelId: number, indeces: number[]): void {15deepEqual(options.buttons, buttons);16deepEqual(options.defaultId, defaultId);17deepEqual(options.cancelId, cancelId);18deepEqual(buttonIndeces, indeces);19}2021test('massageMessageBoxOptions', () => {22const testProductService: IProductService = {23_serviceBrand: undefined,24...product,25nameLong: 'Test'26};2728// All platforms29const allPlatformsMassagedOptions = massageMessageBoxOptions({ buttons: ['1'], message: 'message' }, testProductService);30deepEqual(allPlatformsMassagedOptions.options.title, 'Test');31deepEqual(allPlatformsMassagedOptions.options.message, 'message');32deepEqual(allPlatformsMassagedOptions.options.noLink, true);3334// Specific cases3536const oneButtonNoCancel = massageMessageBoxOptions({ buttons: ['1'], cancelId: undefined, message: 'message' }, testProductService);37const oneButtonCancel_0 = massageMessageBoxOptions({ buttons: ['1'], cancelId: 0, message: 'message' }, testProductService);38const oneButtonCancel_1 = massageMessageBoxOptions({ buttons: ['1'], cancelId: 1, message: 'message' }, testProductService);39const oneButtonNegativeCancel = massageMessageBoxOptions({ buttons: ['1'], cancelId: -1, message: 'message' }, testProductService);4041const twoButtonNoCancel = massageMessageBoxOptions({ buttons: ['1', '2'], cancelId: undefined, message: 'message' }, testProductService);42const twoButtonCancel_0 = massageMessageBoxOptions({ buttons: ['1', '2'], cancelId: 0, message: 'message' }, testProductService);43const twoButtonCancel_1 = massageMessageBoxOptions({ buttons: ['1', '2'], cancelId: 1, message: 'message' }, testProductService);44const twoButtonCancel_2 = massageMessageBoxOptions({ buttons: ['1', '2'], cancelId: 2, message: 'message' }, testProductService);45const twoButtonNegativeCancel = massageMessageBoxOptions({ buttons: ['1', '2'], cancelId: -1, message: 'message' }, testProductService);4647const threeButtonNoCancel = massageMessageBoxOptions({ buttons: ['1', '2', '3'], cancelId: undefined, message: 'message' }, testProductService);48const threeButtonCancel_0 = massageMessageBoxOptions({ buttons: ['1', '2', '3'], cancelId: 0, message: 'message' }, testProductService);49const threeButtonCancel_1 = massageMessageBoxOptions({ buttons: ['1', '2', '3'], cancelId: 1, message: 'message' }, testProductService);50const threeButtonCancel_2 = massageMessageBoxOptions({ buttons: ['1', '2', '3'], cancelId: 2, message: 'message' }, testProductService);51const threeButtonCancel_3 = massageMessageBoxOptions({ buttons: ['1', '2', '3'], cancelId: 3, message: 'message' }, testProductService);52const threeButtonNegativeCancel = massageMessageBoxOptions({ buttons: ['1', '2', '3'], cancelId: -1, message: 'message' }, testProductService);5354const fourButtonNoCancel = massageMessageBoxOptions({ buttons: ['1', '2', '3', '4'], cancelId: undefined, message: 'message' }, testProductService);55const fourButtonCancel_0 = massageMessageBoxOptions({ buttons: ['1', '2', '3', '4'], cancelId: 0, message: 'message' }, testProductService);56const fourButtonCancel_1 = massageMessageBoxOptions({ buttons: ['1', '2', '3', '4'], cancelId: 1, message: 'message' }, testProductService);57const fourButtonCancel_2 = massageMessageBoxOptions({ buttons: ['1', '2', '3', '4'], cancelId: 2, message: 'message' }, testProductService);58const fourButtonCancel_3 = massageMessageBoxOptions({ buttons: ['1', '2', '3', '4'], cancelId: 3, message: 'message' }, testProductService);59const fourButtonCancel_4 = massageMessageBoxOptions({ buttons: ['1', '2', '3', '4'], cancelId: 4, message: 'message' }, testProductService);60const fourButtonNegativeCancel = massageMessageBoxOptions({ buttons: ['1', '2', '3', '4'], cancelId: -1, message: 'message' }, testProductService);6162if (isWindows) {63assertOptions(oneButtonNoCancel, ['1'], 0, 0, [0]);64assertOptions(oneButtonCancel_0, ['1'], 0, 0, [0]);65assertOptions(oneButtonCancel_1, ['1'], 0, 1, [0]);66assertOptions(oneButtonNegativeCancel, ['1'], 0, -1, [0]);6768assertOptions(twoButtonNoCancel, ['1', '2'], 0, 1, [0, 1]);69assertOptions(twoButtonCancel_0, ['2', '1'], 0, 1, [1, 0]);70assertOptions(twoButtonCancel_1, ['1', '2'], 0, 1, [0, 1]);71assertOptions(twoButtonCancel_2, ['1', '2'], 0, 2, [0, 1]);72assertOptions(twoButtonNegativeCancel, ['1', '2'], 0, -1, [0, 1]);7374assertOptions(threeButtonNoCancel, ['1', '2', '3'], 0, 2, [0, 1, 2]);75assertOptions(threeButtonCancel_0, ['2', '3', '1'], 0, 2, [1, 2, 0]);76assertOptions(threeButtonCancel_1, ['1', '3', '2'], 0, 2, [0, 2, 1]);77assertOptions(threeButtonCancel_2, ['1', '2', '3'], 0, 2, [0, 1, 2]);78assertOptions(threeButtonCancel_3, ['1', '2', '3'], 0, 3, [0, 1, 2]);79assertOptions(threeButtonNegativeCancel, ['1', '2', '3'], 0, -1, [0, 1, 2]);8081assertOptions(fourButtonNoCancel, ['1', '2', '3', '4'], 0, 3, [0, 1, 2, 3]);82assertOptions(fourButtonCancel_0, ['2', '3', '4', '1'], 0, 3, [1, 2, 3, 0]);83assertOptions(fourButtonCancel_1, ['1', '3', '4', '2'], 0, 3, [0, 2, 3, 1]);84assertOptions(fourButtonCancel_2, ['1', '2', '4', '3'], 0, 3, [0, 1, 3, 2]);85assertOptions(fourButtonCancel_3, ['1', '2', '3', '4'], 0, 3, [0, 1, 2, 3]);86assertOptions(fourButtonCancel_4, ['1', '2', '3', '4'], 0, 4, [0, 1, 2, 3]);87assertOptions(fourButtonNegativeCancel, ['1', '2', '3', '4'], 0, -1, [0, 1, 2, 3]);88} else if (isMacintosh) {89assertOptions(oneButtonNoCancel, ['1'], 0, 0, [0]);90assertOptions(oneButtonCancel_0, ['1'], 0, 0, [0]);91assertOptions(oneButtonCancel_1, ['1'], 0, 1, [0]);92assertOptions(oneButtonNegativeCancel, ['1'], 0, -1, [0]);9394assertOptions(twoButtonNoCancel, ['1', '2'], 0, 1, [0, 1]);95assertOptions(twoButtonCancel_0, ['2', '1'], 0, 1, [1, 0]);96assertOptions(twoButtonCancel_1, ['1', '2'], 0, 1, [0, 1]);97assertOptions(twoButtonCancel_2, ['1', '2'], 0, 2, [0, 1]);98assertOptions(twoButtonNegativeCancel, ['1', '2'], 0, -1, [0, 1]);99100assertOptions(threeButtonNoCancel, ['1', '3', '2'], 0, 1, [0, 2, 1]);101assertOptions(threeButtonCancel_0, ['2', '1', '3'], 0, 1, [1, 0, 2]);102assertOptions(threeButtonCancel_1, ['1', '2', '3'], 0, 1, [0, 1, 2]);103assertOptions(threeButtonCancel_2, ['1', '3', '2'], 0, 1, [0, 2, 1]);104assertOptions(threeButtonCancel_3, ['1', '2', '3'], 0, 3, [0, 1, 2]);105assertOptions(threeButtonNegativeCancel, ['1', '2', '3'], 0, -1, [0, 1, 2]);106107assertOptions(fourButtonNoCancel, ['1', '4', '2', '3'], 0, 1, [0, 3, 1, 2]);108assertOptions(fourButtonCancel_0, ['2', '1', '3', '4'], 0, 1, [1, 0, 2, 3]);109assertOptions(fourButtonCancel_1, ['1', '2', '3', '4'], 0, 1, [0, 1, 2, 3]);110assertOptions(fourButtonCancel_2, ['1', '3', '2', '4'], 0, 1, [0, 2, 1, 3]);111assertOptions(fourButtonCancel_3, ['1', '4', '2', '3'], 0, 1, [0, 3, 1, 2]);112assertOptions(fourButtonCancel_4, ['1', '2', '3', '4'], 0, 4, [0, 1, 2, 3]);113assertOptions(fourButtonNegativeCancel, ['1', '2', '3', '4'], 0, -1, [0, 1, 2, 3]);114} else if (isLinux) {115assertOptions(oneButtonNoCancel, ['1'], 0, 0, [0]);116assertOptions(oneButtonCancel_0, ['1'], 0, 0, [0]);117assertOptions(oneButtonCancel_1, ['1'], 0, 1, [0]);118assertOptions(oneButtonNegativeCancel, ['1'], 0, -1, [0]);119120assertOptions(twoButtonNoCancel, ['2', '1'], 1, 0, [1, 0]);121assertOptions(twoButtonCancel_0, ['1', '2'], 1, 0, [0, 1]);122assertOptions(twoButtonCancel_1, ['2', '1'], 1, 0, [1, 0]);123assertOptions(twoButtonCancel_2, ['2', '1'], 1, 2, [1, 0]);124assertOptions(twoButtonNegativeCancel, ['2', '1'], 1, -1, [1, 0]);125126assertOptions(threeButtonNoCancel, ['2', '3', '1'], 2, 1, [1, 2, 0]);127assertOptions(threeButtonCancel_0, ['3', '1', '2'], 2, 1, [2, 0, 1]);128assertOptions(threeButtonCancel_1, ['3', '2', '1'], 2, 1, [2, 1, 0]);129assertOptions(threeButtonCancel_2, ['2', '3', '1'], 2, 1, [1, 2, 0]);130assertOptions(threeButtonCancel_3, ['3', '2', '1'], 2, 3, [2, 1, 0]);131assertOptions(threeButtonNegativeCancel, ['3', '2', '1'], 2, -1, [2, 1, 0]);132133assertOptions(fourButtonNoCancel, ['3', '2', '4', '1'], 3, 2, [2, 1, 3, 0]);134assertOptions(fourButtonCancel_0, ['4', '3', '1', '2'], 3, 2, [3, 2, 0, 1]);135assertOptions(fourButtonCancel_1, ['4', '3', '2', '1'], 3, 2, [3, 2, 1, 0]);136assertOptions(fourButtonCancel_2, ['4', '2', '3', '1'], 3, 2, [3, 1, 2, 0]);137assertOptions(fourButtonCancel_3, ['3', '2', '4', '1'], 3, 2, [2, 1, 3, 0]);138assertOptions(fourButtonCancel_4, ['4', '3', '2', '1'], 3, 4, [3, 2, 1, 0]);139assertOptions(fourButtonNegativeCancel, ['4', '3', '2', '1'], 3, -1, [3, 2, 1, 0]);140}141});142143ensureNoDisposablesAreLeakedInTestSuite();144});145146147