Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/platform/dialogs/test/common/dialog.test.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { deepEqual } from 'assert';
7
import { isLinux, isMacintosh, isWindows } from '../../../../base/common/platform.js';
8
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';
9
import { IMassagedMessageBoxOptions, massageMessageBoxOptions } from '../../common/dialogs.js';
10
import product from '../../../product/common/product.js';
11
import { IProductService } from '../../../product/common/productService.js';
12
13
suite('Dialog', () => {
14
15
function assertOptions({ options, buttonIndeces }: IMassagedMessageBoxOptions, buttons: string[], defaultId: number, cancelId: number, indeces: number[]): void {
16
deepEqual(options.buttons, buttons);
17
deepEqual(options.defaultId, defaultId);
18
deepEqual(options.cancelId, cancelId);
19
deepEqual(buttonIndeces, indeces);
20
}
21
22
test('massageMessageBoxOptions', () => {
23
const testProductService: IProductService = {
24
_serviceBrand: undefined,
25
...product,
26
nameLong: 'Test'
27
};
28
29
// All platforms
30
const allPlatformsMassagedOptions = massageMessageBoxOptions({ buttons: ['1'], message: 'message' }, testProductService);
31
deepEqual(allPlatformsMassagedOptions.options.title, 'Test');
32
deepEqual(allPlatformsMassagedOptions.options.message, 'message');
33
deepEqual(allPlatformsMassagedOptions.options.noLink, true);
34
35
// Specific cases
36
37
const oneButtonNoCancel = massageMessageBoxOptions({ buttons: ['1'], cancelId: undefined, message: 'message' }, testProductService);
38
const oneButtonCancel_0 = massageMessageBoxOptions({ buttons: ['1'], cancelId: 0, message: 'message' }, testProductService);
39
const oneButtonCancel_1 = massageMessageBoxOptions({ buttons: ['1'], cancelId: 1, message: 'message' }, testProductService);
40
const oneButtonNegativeCancel = massageMessageBoxOptions({ buttons: ['1'], cancelId: -1, message: 'message' }, testProductService);
41
42
const twoButtonNoCancel = massageMessageBoxOptions({ buttons: ['1', '2'], cancelId: undefined, message: 'message' }, testProductService);
43
const twoButtonCancel_0 = massageMessageBoxOptions({ buttons: ['1', '2'], cancelId: 0, message: 'message' }, testProductService);
44
const twoButtonCancel_1 = massageMessageBoxOptions({ buttons: ['1', '2'], cancelId: 1, message: 'message' }, testProductService);
45
const twoButtonCancel_2 = massageMessageBoxOptions({ buttons: ['1', '2'], cancelId: 2, message: 'message' }, testProductService);
46
const twoButtonNegativeCancel = massageMessageBoxOptions({ buttons: ['1', '2'], cancelId: -1, message: 'message' }, testProductService);
47
48
const threeButtonNoCancel = massageMessageBoxOptions({ buttons: ['1', '2', '3'], cancelId: undefined, message: 'message' }, testProductService);
49
const threeButtonCancel_0 = massageMessageBoxOptions({ buttons: ['1', '2', '3'], cancelId: 0, message: 'message' }, testProductService);
50
const threeButtonCancel_1 = massageMessageBoxOptions({ buttons: ['1', '2', '3'], cancelId: 1, message: 'message' }, testProductService);
51
const threeButtonCancel_2 = massageMessageBoxOptions({ buttons: ['1', '2', '3'], cancelId: 2, message: 'message' }, testProductService);
52
const threeButtonCancel_3 = massageMessageBoxOptions({ buttons: ['1', '2', '3'], cancelId: 3, message: 'message' }, testProductService);
53
const threeButtonNegativeCancel = massageMessageBoxOptions({ buttons: ['1', '2', '3'], cancelId: -1, message: 'message' }, testProductService);
54
55
const fourButtonNoCancel = massageMessageBoxOptions({ buttons: ['1', '2', '3', '4'], cancelId: undefined, message: 'message' }, testProductService);
56
const fourButtonCancel_0 = massageMessageBoxOptions({ buttons: ['1', '2', '3', '4'], cancelId: 0, message: 'message' }, testProductService);
57
const fourButtonCancel_1 = massageMessageBoxOptions({ buttons: ['1', '2', '3', '4'], cancelId: 1, message: 'message' }, testProductService);
58
const fourButtonCancel_2 = massageMessageBoxOptions({ buttons: ['1', '2', '3', '4'], cancelId: 2, message: 'message' }, testProductService);
59
const fourButtonCancel_3 = massageMessageBoxOptions({ buttons: ['1', '2', '3', '4'], cancelId: 3, message: 'message' }, testProductService);
60
const fourButtonCancel_4 = massageMessageBoxOptions({ buttons: ['1', '2', '3', '4'], cancelId: 4, message: 'message' }, testProductService);
61
const fourButtonNegativeCancel = massageMessageBoxOptions({ buttons: ['1', '2', '3', '4'], cancelId: -1, message: 'message' }, testProductService);
62
63
if (isWindows) {
64
assertOptions(oneButtonNoCancel, ['1'], 0, 0, [0]);
65
assertOptions(oneButtonCancel_0, ['1'], 0, 0, [0]);
66
assertOptions(oneButtonCancel_1, ['1'], 0, 1, [0]);
67
assertOptions(oneButtonNegativeCancel, ['1'], 0, -1, [0]);
68
69
assertOptions(twoButtonNoCancel, ['1', '2'], 0, 1, [0, 1]);
70
assertOptions(twoButtonCancel_0, ['2', '1'], 0, 1, [1, 0]);
71
assertOptions(twoButtonCancel_1, ['1', '2'], 0, 1, [0, 1]);
72
assertOptions(twoButtonCancel_2, ['1', '2'], 0, 2, [0, 1]);
73
assertOptions(twoButtonNegativeCancel, ['1', '2'], 0, -1, [0, 1]);
74
75
assertOptions(threeButtonNoCancel, ['1', '2', '3'], 0, 2, [0, 1, 2]);
76
assertOptions(threeButtonCancel_0, ['2', '3', '1'], 0, 2, [1, 2, 0]);
77
assertOptions(threeButtonCancel_1, ['1', '3', '2'], 0, 2, [0, 2, 1]);
78
assertOptions(threeButtonCancel_2, ['1', '2', '3'], 0, 2, [0, 1, 2]);
79
assertOptions(threeButtonCancel_3, ['1', '2', '3'], 0, 3, [0, 1, 2]);
80
assertOptions(threeButtonNegativeCancel, ['1', '2', '3'], 0, -1, [0, 1, 2]);
81
82
assertOptions(fourButtonNoCancel, ['1', '2', '3', '4'], 0, 3, [0, 1, 2, 3]);
83
assertOptions(fourButtonCancel_0, ['2', '3', '4', '1'], 0, 3, [1, 2, 3, 0]);
84
assertOptions(fourButtonCancel_1, ['1', '3', '4', '2'], 0, 3, [0, 2, 3, 1]);
85
assertOptions(fourButtonCancel_2, ['1', '2', '4', '3'], 0, 3, [0, 1, 3, 2]);
86
assertOptions(fourButtonCancel_3, ['1', '2', '3', '4'], 0, 3, [0, 1, 2, 3]);
87
assertOptions(fourButtonCancel_4, ['1', '2', '3', '4'], 0, 4, [0, 1, 2, 3]);
88
assertOptions(fourButtonNegativeCancel, ['1', '2', '3', '4'], 0, -1, [0, 1, 2, 3]);
89
} else if (isMacintosh) {
90
assertOptions(oneButtonNoCancel, ['1'], 0, 0, [0]);
91
assertOptions(oneButtonCancel_0, ['1'], 0, 0, [0]);
92
assertOptions(oneButtonCancel_1, ['1'], 0, 1, [0]);
93
assertOptions(oneButtonNegativeCancel, ['1'], 0, -1, [0]);
94
95
assertOptions(twoButtonNoCancel, ['1', '2'], 0, 1, [0, 1]);
96
assertOptions(twoButtonCancel_0, ['2', '1'], 0, 1, [1, 0]);
97
assertOptions(twoButtonCancel_1, ['1', '2'], 0, 1, [0, 1]);
98
assertOptions(twoButtonCancel_2, ['1', '2'], 0, 2, [0, 1]);
99
assertOptions(twoButtonNegativeCancel, ['1', '2'], 0, -1, [0, 1]);
100
101
assertOptions(threeButtonNoCancel, ['1', '3', '2'], 0, 1, [0, 2, 1]);
102
assertOptions(threeButtonCancel_0, ['2', '1', '3'], 0, 1, [1, 0, 2]);
103
assertOptions(threeButtonCancel_1, ['1', '2', '3'], 0, 1, [0, 1, 2]);
104
assertOptions(threeButtonCancel_2, ['1', '3', '2'], 0, 1, [0, 2, 1]);
105
assertOptions(threeButtonCancel_3, ['1', '2', '3'], 0, 3, [0, 1, 2]);
106
assertOptions(threeButtonNegativeCancel, ['1', '2', '3'], 0, -1, [0, 1, 2]);
107
108
assertOptions(fourButtonNoCancel, ['1', '4', '2', '3'], 0, 1, [0, 3, 1, 2]);
109
assertOptions(fourButtonCancel_0, ['2', '1', '3', '4'], 0, 1, [1, 0, 2, 3]);
110
assertOptions(fourButtonCancel_1, ['1', '2', '3', '4'], 0, 1, [0, 1, 2, 3]);
111
assertOptions(fourButtonCancel_2, ['1', '3', '2', '4'], 0, 1, [0, 2, 1, 3]);
112
assertOptions(fourButtonCancel_3, ['1', '4', '2', '3'], 0, 1, [0, 3, 1, 2]);
113
assertOptions(fourButtonCancel_4, ['1', '2', '3', '4'], 0, 4, [0, 1, 2, 3]);
114
assertOptions(fourButtonNegativeCancel, ['1', '2', '3', '4'], 0, -1, [0, 1, 2, 3]);
115
} else if (isLinux) {
116
assertOptions(oneButtonNoCancel, ['1'], 0, 0, [0]);
117
assertOptions(oneButtonCancel_0, ['1'], 0, 0, [0]);
118
assertOptions(oneButtonCancel_1, ['1'], 0, 1, [0]);
119
assertOptions(oneButtonNegativeCancel, ['1'], 0, -1, [0]);
120
121
assertOptions(twoButtonNoCancel, ['2', '1'], 1, 0, [1, 0]);
122
assertOptions(twoButtonCancel_0, ['1', '2'], 1, 0, [0, 1]);
123
assertOptions(twoButtonCancel_1, ['2', '1'], 1, 0, [1, 0]);
124
assertOptions(twoButtonCancel_2, ['2', '1'], 1, 2, [1, 0]);
125
assertOptions(twoButtonNegativeCancel, ['2', '1'], 1, -1, [1, 0]);
126
127
assertOptions(threeButtonNoCancel, ['2', '3', '1'], 2, 1, [1, 2, 0]);
128
assertOptions(threeButtonCancel_0, ['3', '1', '2'], 2, 1, [2, 0, 1]);
129
assertOptions(threeButtonCancel_1, ['3', '2', '1'], 2, 1, [2, 1, 0]);
130
assertOptions(threeButtonCancel_2, ['2', '3', '1'], 2, 1, [1, 2, 0]);
131
assertOptions(threeButtonCancel_3, ['3', '2', '1'], 2, 3, [2, 1, 0]);
132
assertOptions(threeButtonNegativeCancel, ['3', '2', '1'], 2, -1, [2, 1, 0]);
133
134
assertOptions(fourButtonNoCancel, ['3', '2', '4', '1'], 3, 2, [2, 1, 3, 0]);
135
assertOptions(fourButtonCancel_0, ['4', '3', '1', '2'], 3, 2, [3, 2, 0, 1]);
136
assertOptions(fourButtonCancel_1, ['4', '3', '2', '1'], 3, 2, [3, 2, 1, 0]);
137
assertOptions(fourButtonCancel_2, ['4', '2', '3', '1'], 3, 2, [3, 1, 2, 0]);
138
assertOptions(fourButtonCancel_3, ['3', '2', '4', '1'], 3, 2, [2, 1, 3, 0]);
139
assertOptions(fourButtonCancel_4, ['4', '3', '2', '1'], 3, 4, [3, 2, 1, 0]);
140
assertOptions(fourButtonNegativeCancel, ['4', '3', '2', '1'], 3, -1, [3, 2, 1, 0]);
141
}
142
});
143
144
ensureNoDisposablesAreLeakedInTestSuite();
145
});
146
147