Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/editor/test/browser/config/editorLayoutProvider.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 assert from 'assert';
7
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';
8
import { ComputedEditorOptions } from '../../../browser/config/editorConfiguration.js';
9
import { EditorLayoutInfo, EditorLayoutInfoComputer, EditorMinimapOptions, EditorOption, EditorOptions, InternalEditorRenderLineNumbersOptions, InternalEditorScrollbarOptions, RenderLineNumbersType, RenderMinimap } from '../../../common/config/editorOptions.js';
10
11
interface IEditorLayoutProviderOpts {
12
readonly outerWidth: number;
13
readonly outerHeight: number;
14
15
readonly showGlyphMargin: boolean;
16
readonly lineHeight: number;
17
18
readonly showLineNumbers: boolean;
19
readonly lineNumbersMinChars: number;
20
readonly lineNumbersDigitCount: number;
21
maxLineNumber?: number;
22
23
readonly lineDecorationsWidth: number;
24
25
readonly typicalHalfwidthCharacterWidth: number;
26
readonly maxDigitWidth: number;
27
28
readonly verticalScrollbarWidth: number;
29
readonly verticalScrollbarHasArrows: boolean;
30
readonly scrollbarArrowSize: number;
31
readonly horizontalScrollbarHeight: number;
32
33
readonly minimap: boolean;
34
readonly minimapSide: 'left' | 'right';
35
readonly minimapRenderCharacters: boolean;
36
readonly minimapMaxColumn: number;
37
minimapSize?: 'proportional' | 'fill' | 'fit';
38
readonly pixelRatio: number;
39
}
40
41
suite('Editor ViewLayout - EditorLayoutProvider', () => {
42
43
ensureNoDisposablesAreLeakedInTestSuite();
44
45
function doTest(input: IEditorLayoutProviderOpts, expected: EditorLayoutInfo): void {
46
const options = new ComputedEditorOptions();
47
options._write(EditorOption.glyphMargin, input.showGlyphMargin);
48
options._write(EditorOption.lineNumbersMinChars, input.lineNumbersMinChars);
49
options._write(EditorOption.lineDecorationsWidth, input.lineDecorationsWidth);
50
options._write(EditorOption.folding, false);
51
options._write(EditorOption.padding, { top: 0, bottom: 0 });
52
const minimapOptions: EditorMinimapOptions = {
53
enabled: input.minimap,
54
autohide: 'none',
55
size: input.minimapSize || 'proportional',
56
side: input.minimapSide,
57
renderCharacters: input.minimapRenderCharacters,
58
maxColumn: input.minimapMaxColumn,
59
showSlider: 'mouseover',
60
scale: 1,
61
showRegionSectionHeaders: true,
62
showMarkSectionHeaders: true,
63
sectionHeaderFontSize: 9,
64
sectionHeaderLetterSpacing: 1,
65
markSectionHeaderRegex: '\\bMARK:\\s*(?<separator>\-?)\\s*(?<label>.*)$',
66
};
67
options._write(EditorOption.minimap, minimapOptions);
68
const scrollbarOptions: InternalEditorScrollbarOptions = {
69
arrowSize: input.scrollbarArrowSize,
70
vertical: EditorOptions.scrollbar.defaultValue.vertical,
71
horizontal: EditorOptions.scrollbar.defaultValue.horizontal,
72
useShadows: EditorOptions.scrollbar.defaultValue.useShadows,
73
verticalHasArrows: input.verticalScrollbarHasArrows,
74
horizontalHasArrows: false,
75
handleMouseWheel: EditorOptions.scrollbar.defaultValue.handleMouseWheel,
76
alwaysConsumeMouseWheel: true,
77
horizontalScrollbarSize: input.horizontalScrollbarHeight,
78
horizontalSliderSize: EditorOptions.scrollbar.defaultValue.horizontalSliderSize,
79
verticalScrollbarSize: input.verticalScrollbarWidth,
80
verticalSliderSize: EditorOptions.scrollbar.defaultValue.verticalSliderSize,
81
scrollByPage: EditorOptions.scrollbar.defaultValue.scrollByPage,
82
ignoreHorizontalScrollbarInContentHeight: false,
83
};
84
options._write(EditorOption.scrollbar, scrollbarOptions);
85
const lineNumbersOptions: InternalEditorRenderLineNumbersOptions = {
86
renderType: input.showLineNumbers ? RenderLineNumbersType.On : RenderLineNumbersType.Off,
87
renderFn: null
88
};
89
options._write(EditorOption.lineNumbers, lineNumbersOptions);
90
91
options._write(EditorOption.wordWrap, 'off');
92
options._write(EditorOption.wordWrapColumn, 80);
93
options._write(EditorOption.wordWrapOverride1, 'inherit');
94
options._write(EditorOption.wordWrapOverride2, 'inherit');
95
options._write(EditorOption.accessibilitySupport, 'auto');
96
97
const actual = EditorLayoutInfoComputer.computeLayout(options, {
98
memory: null,
99
outerWidth: input.outerWidth,
100
outerHeight: input.outerHeight,
101
isDominatedByLongLines: false,
102
lineHeight: input.lineHeight,
103
viewLineCount: input.maxLineNumber || Math.pow(10, input.lineNumbersDigitCount) - 1,
104
lineNumbersDigitCount: input.lineNumbersDigitCount,
105
typicalHalfwidthCharacterWidth: input.typicalHalfwidthCharacterWidth,
106
maxDigitWidth: input.maxDigitWidth,
107
pixelRatio: input.pixelRatio,
108
glyphMarginDecorationLaneCount: 1,
109
});
110
assert.deepStrictEqual(actual, expected);
111
}
112
113
test('EditorLayoutProvider 1', () => {
114
doTest({
115
outerWidth: 1000,
116
outerHeight: 800,
117
showGlyphMargin: false,
118
lineHeight: 16,
119
showLineNumbers: false,
120
lineNumbersMinChars: 0,
121
lineNumbersDigitCount: 1,
122
lineDecorationsWidth: 10,
123
typicalHalfwidthCharacterWidth: 10,
124
maxDigitWidth: 10,
125
verticalScrollbarWidth: 0,
126
horizontalScrollbarHeight: 0,
127
scrollbarArrowSize: 0,
128
verticalScrollbarHasArrows: false,
129
minimap: false,
130
minimapSide: 'right',
131
minimapRenderCharacters: true,
132
minimapMaxColumn: 150,
133
pixelRatio: 1,
134
}, {
135
width: 1000,
136
height: 800,
137
138
glyphMarginLeft: 0,
139
glyphMarginWidth: 0,
140
glyphMarginDecorationLaneCount: 1,
141
142
lineNumbersLeft: 0,
143
lineNumbersWidth: 0,
144
145
decorationsLeft: 0,
146
decorationsWidth: 10,
147
148
contentLeft: 10,
149
contentWidth: 990,
150
151
minimap: {
152
renderMinimap: RenderMinimap.None,
153
minimapLeft: 0,
154
minimapWidth: 0,
155
minimapHeightIsEditorHeight: false,
156
minimapIsSampling: false,
157
minimapScale: 1,
158
minimapLineHeight: 1,
159
minimapCanvasInnerWidth: 0,
160
minimapCanvasInnerHeight: 800,
161
minimapCanvasOuterWidth: 0,
162
minimapCanvasOuterHeight: 800,
163
},
164
165
viewportColumn: 98,
166
isWordWrapMinified: false,
167
isViewportWrapping: false,
168
wrappingColumn: -1,
169
170
verticalScrollbarWidth: 0,
171
horizontalScrollbarHeight: 0,
172
173
overviewRuler: {
174
top: 0,
175
width: 0,
176
height: 800,
177
right: 0
178
}
179
});
180
});
181
182
test('EditorLayoutProvider 1.1', () => {
183
doTest({
184
outerWidth: 1000,
185
outerHeight: 800,
186
showGlyphMargin: false,
187
lineHeight: 16,
188
showLineNumbers: false,
189
lineNumbersMinChars: 0,
190
lineNumbersDigitCount: 1,
191
lineDecorationsWidth: 10,
192
typicalHalfwidthCharacterWidth: 10,
193
maxDigitWidth: 10,
194
verticalScrollbarWidth: 11,
195
horizontalScrollbarHeight: 12,
196
scrollbarArrowSize: 13,
197
verticalScrollbarHasArrows: true,
198
minimap: false,
199
minimapSide: 'right',
200
minimapRenderCharacters: true,
201
minimapMaxColumn: 150,
202
pixelRatio: 1,
203
}, {
204
width: 1000,
205
height: 800,
206
207
glyphMarginLeft: 0,
208
glyphMarginWidth: 0,
209
glyphMarginDecorationLaneCount: 1,
210
211
lineNumbersLeft: 0,
212
lineNumbersWidth: 0,
213
214
decorationsLeft: 0,
215
decorationsWidth: 10,
216
217
contentLeft: 10,
218
contentWidth: 990,
219
220
minimap: {
221
renderMinimap: RenderMinimap.None,
222
minimapLeft: 0,
223
minimapWidth: 0,
224
minimapHeightIsEditorHeight: false,
225
minimapIsSampling: false,
226
minimapScale: 1,
227
minimapLineHeight: 1,
228
minimapCanvasInnerWidth: 0,
229
minimapCanvasInnerHeight: 800,
230
minimapCanvasOuterWidth: 0,
231
minimapCanvasOuterHeight: 800,
232
},
233
234
viewportColumn: 97,
235
isWordWrapMinified: false,
236
isViewportWrapping: false,
237
wrappingColumn: -1,
238
239
verticalScrollbarWidth: 11,
240
horizontalScrollbarHeight: 12,
241
242
overviewRuler: {
243
top: 13,
244
width: 11,
245
height: (800 - 2 * 13),
246
right: 0
247
}
248
});
249
});
250
251
test('EditorLayoutProvider 2', () => {
252
doTest({
253
outerWidth: 900,
254
outerHeight: 800,
255
showGlyphMargin: false,
256
lineHeight: 16,
257
showLineNumbers: false,
258
lineNumbersMinChars: 0,
259
lineNumbersDigitCount: 1,
260
lineDecorationsWidth: 10,
261
typicalHalfwidthCharacterWidth: 10,
262
maxDigitWidth: 10,
263
verticalScrollbarWidth: 0,
264
horizontalScrollbarHeight: 0,
265
scrollbarArrowSize: 0,
266
verticalScrollbarHasArrows: false,
267
minimap: false,
268
minimapSide: 'right',
269
minimapRenderCharacters: true,
270
minimapMaxColumn: 150,
271
pixelRatio: 1,
272
}, {
273
width: 900,
274
height: 800,
275
276
glyphMarginLeft: 0,
277
glyphMarginWidth: 0,
278
glyphMarginDecorationLaneCount: 1,
279
280
lineNumbersLeft: 0,
281
lineNumbersWidth: 0,
282
283
decorationsLeft: 0,
284
decorationsWidth: 10,
285
286
contentLeft: 10,
287
contentWidth: 890,
288
289
minimap: {
290
renderMinimap: RenderMinimap.None,
291
minimapLeft: 0,
292
minimapWidth: 0,
293
minimapHeightIsEditorHeight: false,
294
minimapIsSampling: false,
295
minimapScale: 1,
296
minimapLineHeight: 1,
297
minimapCanvasInnerWidth: 0,
298
minimapCanvasInnerHeight: 800,
299
minimapCanvasOuterWidth: 0,
300
minimapCanvasOuterHeight: 800,
301
},
302
303
viewportColumn: 88,
304
isWordWrapMinified: false,
305
isViewportWrapping: false,
306
wrappingColumn: -1,
307
308
verticalScrollbarWidth: 0,
309
horizontalScrollbarHeight: 0,
310
311
overviewRuler: {
312
top: 0,
313
width: 0,
314
height: 800,
315
right: 0
316
}
317
});
318
});
319
320
test('EditorLayoutProvider 3', () => {
321
doTest({
322
outerWidth: 900,
323
outerHeight: 900,
324
showGlyphMargin: false,
325
lineHeight: 16,
326
showLineNumbers: false,
327
lineNumbersMinChars: 0,
328
lineNumbersDigitCount: 1,
329
lineDecorationsWidth: 10,
330
typicalHalfwidthCharacterWidth: 10,
331
maxDigitWidth: 10,
332
verticalScrollbarWidth: 0,
333
horizontalScrollbarHeight: 0,
334
scrollbarArrowSize: 0,
335
verticalScrollbarHasArrows: false,
336
minimap: false,
337
minimapSide: 'right',
338
minimapRenderCharacters: true,
339
minimapMaxColumn: 150,
340
pixelRatio: 1,
341
}, {
342
width: 900,
343
height: 900,
344
345
glyphMarginLeft: 0,
346
glyphMarginWidth: 0,
347
glyphMarginDecorationLaneCount: 1,
348
349
lineNumbersLeft: 0,
350
lineNumbersWidth: 0,
351
352
decorationsLeft: 0,
353
decorationsWidth: 10,
354
355
contentLeft: 10,
356
contentWidth: 890,
357
358
minimap: {
359
renderMinimap: RenderMinimap.None,
360
minimapLeft: 0,
361
minimapWidth: 0,
362
minimapHeightIsEditorHeight: false,
363
minimapIsSampling: false,
364
minimapScale: 1,
365
minimapLineHeight: 1,
366
minimapCanvasInnerWidth: 0,
367
minimapCanvasInnerHeight: 900,
368
minimapCanvasOuterWidth: 0,
369
minimapCanvasOuterHeight: 900,
370
},
371
372
viewportColumn: 88,
373
isWordWrapMinified: false,
374
isViewportWrapping: false,
375
wrappingColumn: -1,
376
377
verticalScrollbarWidth: 0,
378
horizontalScrollbarHeight: 0,
379
380
overviewRuler: {
381
top: 0,
382
width: 0,
383
height: 900,
384
right: 0
385
}
386
});
387
});
388
389
test('EditorLayoutProvider 4', () => {
390
doTest({
391
outerWidth: 900,
392
outerHeight: 900,
393
showGlyphMargin: false,
394
lineHeight: 16,
395
showLineNumbers: false,
396
lineNumbersMinChars: 5,
397
lineNumbersDigitCount: 1,
398
lineDecorationsWidth: 10,
399
typicalHalfwidthCharacterWidth: 10,
400
maxDigitWidth: 10,
401
verticalScrollbarWidth: 0,
402
horizontalScrollbarHeight: 0,
403
scrollbarArrowSize: 0,
404
verticalScrollbarHasArrows: false,
405
minimap: false,
406
minimapSide: 'right',
407
minimapRenderCharacters: true,
408
minimapMaxColumn: 150,
409
pixelRatio: 1,
410
}, {
411
width: 900,
412
height: 900,
413
414
glyphMarginLeft: 0,
415
glyphMarginWidth: 0,
416
glyphMarginDecorationLaneCount: 1,
417
418
lineNumbersLeft: 0,
419
lineNumbersWidth: 0,
420
421
decorationsLeft: 0,
422
decorationsWidth: 10,
423
424
contentLeft: 10,
425
contentWidth: 890,
426
427
minimap: {
428
renderMinimap: RenderMinimap.None,
429
minimapLeft: 0,
430
minimapWidth: 0,
431
minimapHeightIsEditorHeight: false,
432
minimapIsSampling: false,
433
minimapScale: 1,
434
minimapLineHeight: 1,
435
minimapCanvasInnerWidth: 0,
436
minimapCanvasInnerHeight: 900,
437
minimapCanvasOuterWidth: 0,
438
minimapCanvasOuterHeight: 900,
439
},
440
441
viewportColumn: 88,
442
isWordWrapMinified: false,
443
isViewportWrapping: false,
444
wrappingColumn: -1,
445
446
verticalScrollbarWidth: 0,
447
horizontalScrollbarHeight: 0,
448
449
overviewRuler: {
450
top: 0,
451
width: 0,
452
height: 900,
453
right: 0
454
}
455
});
456
});
457
458
test('EditorLayoutProvider 5', () => {
459
doTest({
460
outerWidth: 900,
461
outerHeight: 900,
462
showGlyphMargin: false,
463
lineHeight: 16,
464
showLineNumbers: true,
465
lineNumbersMinChars: 5,
466
lineNumbersDigitCount: 1,
467
lineDecorationsWidth: 10,
468
typicalHalfwidthCharacterWidth: 10,
469
maxDigitWidth: 10,
470
verticalScrollbarWidth: 0,
471
horizontalScrollbarHeight: 0,
472
scrollbarArrowSize: 0,
473
verticalScrollbarHasArrows: false,
474
minimap: false,
475
minimapSide: 'right',
476
minimapRenderCharacters: true,
477
minimapMaxColumn: 150,
478
pixelRatio: 1,
479
}, {
480
width: 900,
481
height: 900,
482
483
glyphMarginLeft: 0,
484
glyphMarginWidth: 0,
485
glyphMarginDecorationLaneCount: 1,
486
487
lineNumbersLeft: 0,
488
lineNumbersWidth: 50,
489
490
decorationsLeft: 50,
491
decorationsWidth: 10,
492
493
contentLeft: 60,
494
contentWidth: 840,
495
496
minimap: {
497
renderMinimap: RenderMinimap.None,
498
minimapLeft: 0,
499
minimapWidth: 0,
500
minimapHeightIsEditorHeight: false,
501
minimapIsSampling: false,
502
minimapScale: 1,
503
minimapLineHeight: 1,
504
minimapCanvasInnerWidth: 0,
505
minimapCanvasInnerHeight: 900,
506
minimapCanvasOuterWidth: 0,
507
minimapCanvasOuterHeight: 900,
508
},
509
510
viewportColumn: 83,
511
isWordWrapMinified: false,
512
isViewportWrapping: false,
513
wrappingColumn: -1,
514
515
verticalScrollbarWidth: 0,
516
horizontalScrollbarHeight: 0,
517
518
overviewRuler: {
519
top: 0,
520
width: 0,
521
height: 900,
522
right: 0
523
}
524
});
525
});
526
527
test('EditorLayoutProvider 6', () => {
528
doTest({
529
outerWidth: 900,
530
outerHeight: 900,
531
showGlyphMargin: false,
532
lineHeight: 16,
533
showLineNumbers: true,
534
lineNumbersMinChars: 5,
535
lineNumbersDigitCount: 5,
536
lineDecorationsWidth: 10,
537
typicalHalfwidthCharacterWidth: 10,
538
maxDigitWidth: 10,
539
verticalScrollbarWidth: 0,
540
horizontalScrollbarHeight: 0,
541
scrollbarArrowSize: 0,
542
verticalScrollbarHasArrows: false,
543
minimap: false,
544
minimapSide: 'right',
545
minimapRenderCharacters: true,
546
minimapMaxColumn: 150,
547
pixelRatio: 1,
548
}, {
549
width: 900,
550
height: 900,
551
552
glyphMarginLeft: 0,
553
glyphMarginWidth: 0,
554
glyphMarginDecorationLaneCount: 1,
555
556
lineNumbersLeft: 0,
557
lineNumbersWidth: 50,
558
559
decorationsLeft: 50,
560
decorationsWidth: 10,
561
562
contentLeft: 60,
563
contentWidth: 840,
564
565
minimap: {
566
renderMinimap: RenderMinimap.None,
567
minimapLeft: 0,
568
minimapWidth: 0,
569
minimapHeightIsEditorHeight: false,
570
minimapIsSampling: false,
571
minimapScale: 1,
572
minimapLineHeight: 1,
573
minimapCanvasInnerWidth: 0,
574
minimapCanvasInnerHeight: 900,
575
minimapCanvasOuterWidth: 0,
576
minimapCanvasOuterHeight: 900,
577
},
578
579
viewportColumn: 83,
580
isWordWrapMinified: false,
581
isViewportWrapping: false,
582
wrappingColumn: -1,
583
584
verticalScrollbarWidth: 0,
585
horizontalScrollbarHeight: 0,
586
587
overviewRuler: {
588
top: 0,
589
width: 0,
590
height: 900,
591
right: 0
592
}
593
});
594
});
595
596
test('EditorLayoutProvider 7', () => {
597
doTest({
598
outerWidth: 900,
599
outerHeight: 900,
600
showGlyphMargin: false,
601
lineHeight: 16,
602
showLineNumbers: true,
603
lineNumbersMinChars: 5,
604
lineNumbersDigitCount: 6,
605
lineDecorationsWidth: 10,
606
typicalHalfwidthCharacterWidth: 10,
607
maxDigitWidth: 10,
608
verticalScrollbarWidth: 0,
609
horizontalScrollbarHeight: 0,
610
scrollbarArrowSize: 0,
611
verticalScrollbarHasArrows: false,
612
minimap: false,
613
minimapSide: 'right',
614
minimapRenderCharacters: true,
615
minimapMaxColumn: 150,
616
pixelRatio: 1,
617
}, {
618
width: 900,
619
height: 900,
620
621
glyphMarginLeft: 0,
622
glyphMarginWidth: 0,
623
glyphMarginDecorationLaneCount: 1,
624
625
lineNumbersLeft: 0,
626
lineNumbersWidth: 60,
627
628
decorationsLeft: 60,
629
decorationsWidth: 10,
630
631
contentLeft: 70,
632
contentWidth: 830,
633
634
minimap: {
635
renderMinimap: RenderMinimap.None,
636
minimapLeft: 0,
637
minimapWidth: 0,
638
minimapHeightIsEditorHeight: false,
639
minimapIsSampling: false,
640
minimapScale: 1,
641
minimapLineHeight: 1,
642
minimapCanvasInnerWidth: 0,
643
minimapCanvasInnerHeight: 900,
644
minimapCanvasOuterWidth: 0,
645
minimapCanvasOuterHeight: 900,
646
},
647
648
viewportColumn: 82,
649
isWordWrapMinified: false,
650
isViewportWrapping: false,
651
wrappingColumn: -1,
652
653
verticalScrollbarWidth: 0,
654
horizontalScrollbarHeight: 0,
655
656
overviewRuler: {
657
top: 0,
658
width: 0,
659
height: 900,
660
right: 0
661
}
662
});
663
});
664
665
test('EditorLayoutProvider 8', () => {
666
doTest({
667
outerWidth: 900,
668
outerHeight: 900,
669
showGlyphMargin: false,
670
lineHeight: 16,
671
showLineNumbers: true,
672
lineNumbersMinChars: 5,
673
lineNumbersDigitCount: 6,
674
lineDecorationsWidth: 10,
675
typicalHalfwidthCharacterWidth: 5,
676
maxDigitWidth: 5,
677
verticalScrollbarWidth: 0,
678
horizontalScrollbarHeight: 0,
679
scrollbarArrowSize: 0,
680
verticalScrollbarHasArrows: false,
681
minimap: false,
682
minimapSide: 'right',
683
minimapRenderCharacters: true,
684
minimapMaxColumn: 150,
685
pixelRatio: 1,
686
}, {
687
width: 900,
688
height: 900,
689
690
glyphMarginLeft: 0,
691
glyphMarginWidth: 0,
692
glyphMarginDecorationLaneCount: 1,
693
694
lineNumbersLeft: 0,
695
lineNumbersWidth: 30,
696
697
decorationsLeft: 30,
698
decorationsWidth: 10,
699
700
contentLeft: 40,
701
contentWidth: 860,
702
703
minimap: {
704
renderMinimap: RenderMinimap.None,
705
minimapLeft: 0,
706
minimapWidth: 0,
707
minimapHeightIsEditorHeight: false,
708
minimapIsSampling: false,
709
minimapScale: 1,
710
minimapLineHeight: 1,
711
minimapCanvasInnerWidth: 0,
712
minimapCanvasInnerHeight: 900,
713
minimapCanvasOuterWidth: 0,
714
minimapCanvasOuterHeight: 900,
715
},
716
717
viewportColumn: 171,
718
isWordWrapMinified: false,
719
isViewportWrapping: false,
720
wrappingColumn: -1,
721
722
verticalScrollbarWidth: 0,
723
horizontalScrollbarHeight: 0,
724
725
overviewRuler: {
726
top: 0,
727
width: 0,
728
height: 900,
729
right: 0
730
}
731
});
732
});
733
734
test('EditorLayoutProvider 8 - rounds floats', () => {
735
doTest({
736
outerWidth: 900,
737
outerHeight: 900,
738
showGlyphMargin: false,
739
lineHeight: 16,
740
showLineNumbers: true,
741
lineNumbersMinChars: 5,
742
lineNumbersDigitCount: 6,
743
lineDecorationsWidth: 10,
744
typicalHalfwidthCharacterWidth: 5.05,
745
maxDigitWidth: 5.05,
746
verticalScrollbarWidth: 0,
747
horizontalScrollbarHeight: 0,
748
scrollbarArrowSize: 0,
749
verticalScrollbarHasArrows: false,
750
minimap: false,
751
minimapSide: 'right',
752
minimapRenderCharacters: true,
753
minimapMaxColumn: 150,
754
pixelRatio: 1,
755
}, {
756
width: 900,
757
height: 900,
758
759
glyphMarginLeft: 0,
760
glyphMarginWidth: 0,
761
glyphMarginDecorationLaneCount: 1,
762
763
lineNumbersLeft: 0,
764
lineNumbersWidth: 30,
765
766
decorationsLeft: 30,
767
decorationsWidth: 10,
768
769
contentLeft: 40,
770
contentWidth: 860,
771
772
minimap: {
773
renderMinimap: RenderMinimap.None,
774
minimapLeft: 0,
775
minimapWidth: 0,
776
minimapHeightIsEditorHeight: false,
777
minimapIsSampling: false,
778
minimapScale: 1,
779
minimapLineHeight: 1,
780
minimapCanvasInnerWidth: 0,
781
minimapCanvasInnerHeight: 900,
782
minimapCanvasOuterWidth: 0,
783
minimapCanvasOuterHeight: 900,
784
},
785
786
viewportColumn: 169,
787
isWordWrapMinified: false,
788
isViewportWrapping: false,
789
wrappingColumn: -1,
790
791
verticalScrollbarWidth: 0,
792
horizontalScrollbarHeight: 0,
793
794
overviewRuler: {
795
top: 0,
796
width: 0,
797
height: 900,
798
right: 0
799
}
800
});
801
});
802
803
test('EditorLayoutProvider 9 - render minimap', () => {
804
doTest({
805
outerWidth: 1000,
806
outerHeight: 800,
807
showGlyphMargin: false,
808
lineHeight: 16,
809
showLineNumbers: false,
810
lineNumbersMinChars: 0,
811
lineNumbersDigitCount: 1,
812
lineDecorationsWidth: 10,
813
typicalHalfwidthCharacterWidth: 10,
814
maxDigitWidth: 10,
815
verticalScrollbarWidth: 0,
816
horizontalScrollbarHeight: 0,
817
scrollbarArrowSize: 0,
818
verticalScrollbarHasArrows: false,
819
minimap: true,
820
minimapSide: 'right',
821
minimapRenderCharacters: true,
822
minimapMaxColumn: 150,
823
pixelRatio: 1,
824
}, {
825
width: 1000,
826
height: 800,
827
828
glyphMarginLeft: 0,
829
glyphMarginWidth: 0,
830
glyphMarginDecorationLaneCount: 1,
831
832
lineNumbersLeft: 0,
833
lineNumbersWidth: 0,
834
835
decorationsLeft: 0,
836
decorationsWidth: 10,
837
838
contentLeft: 10,
839
contentWidth: 893,
840
841
minimap: {
842
renderMinimap: RenderMinimap.Text,
843
minimapLeft: 903,
844
minimapWidth: 97,
845
minimapHeightIsEditorHeight: false,
846
minimapIsSampling: false,
847
minimapScale: 1,
848
minimapLineHeight: 2,
849
minimapCanvasInnerWidth: 97,
850
minimapCanvasInnerHeight: 800,
851
minimapCanvasOuterWidth: 97,
852
minimapCanvasOuterHeight: 800,
853
},
854
855
viewportColumn: 89,
856
isWordWrapMinified: false,
857
isViewportWrapping: false,
858
wrappingColumn: -1,
859
860
verticalScrollbarWidth: 0,
861
horizontalScrollbarHeight: 0,
862
863
overviewRuler: {
864
top: 0,
865
width: 0,
866
height: 800,
867
right: 0
868
}
869
});
870
});
871
872
test('EditorLayoutProvider 9 - render minimap with pixelRatio = 2', () => {
873
doTest({
874
outerWidth: 1000,
875
outerHeight: 800,
876
showGlyphMargin: false,
877
lineHeight: 16,
878
showLineNumbers: false,
879
lineNumbersMinChars: 0,
880
lineNumbersDigitCount: 1,
881
lineDecorationsWidth: 10,
882
typicalHalfwidthCharacterWidth: 10,
883
maxDigitWidth: 10,
884
verticalScrollbarWidth: 0,
885
horizontalScrollbarHeight: 0,
886
scrollbarArrowSize: 0,
887
verticalScrollbarHasArrows: false,
888
minimap: true,
889
minimapSide: 'right',
890
minimapRenderCharacters: true,
891
minimapMaxColumn: 150,
892
pixelRatio: 2,
893
}, {
894
width: 1000,
895
height: 800,
896
897
glyphMarginLeft: 0,
898
glyphMarginWidth: 0,
899
glyphMarginDecorationLaneCount: 1,
900
901
lineNumbersLeft: 0,
902
lineNumbersWidth: 0,
903
904
decorationsLeft: 0,
905
decorationsWidth: 10,
906
907
contentLeft: 10,
908
contentWidth: 893,
909
910
minimap: {
911
renderMinimap: RenderMinimap.Text,
912
minimapLeft: 903,
913
minimapWidth: 97,
914
minimapHeightIsEditorHeight: false,
915
minimapIsSampling: false,
916
minimapScale: 2,
917
minimapLineHeight: 4,
918
minimapCanvasInnerWidth: 194,
919
minimapCanvasInnerHeight: 1600,
920
minimapCanvasOuterWidth: 97,
921
minimapCanvasOuterHeight: 800,
922
},
923
924
viewportColumn: 89,
925
isWordWrapMinified: false,
926
isViewportWrapping: false,
927
wrappingColumn: -1,
928
929
verticalScrollbarWidth: 0,
930
horizontalScrollbarHeight: 0,
931
932
overviewRuler: {
933
top: 0,
934
width: 0,
935
height: 800,
936
right: 0
937
}
938
});
939
});
940
941
test('EditorLayoutProvider 9 - render minimap with pixelRatio = 4', () => {
942
doTest({
943
outerWidth: 1000,
944
outerHeight: 800,
945
showGlyphMargin: false,
946
lineHeight: 16,
947
showLineNumbers: false,
948
lineNumbersMinChars: 0,
949
lineNumbersDigitCount: 1,
950
lineDecorationsWidth: 10,
951
typicalHalfwidthCharacterWidth: 10,
952
maxDigitWidth: 10,
953
verticalScrollbarWidth: 0,
954
horizontalScrollbarHeight: 0,
955
scrollbarArrowSize: 0,
956
verticalScrollbarHasArrows: false,
957
minimap: true,
958
minimapSide: 'right',
959
minimapRenderCharacters: true,
960
minimapMaxColumn: 150,
961
pixelRatio: 4,
962
}, {
963
width: 1000,
964
height: 800,
965
966
glyphMarginLeft: 0,
967
glyphMarginWidth: 0,
968
glyphMarginDecorationLaneCount: 1,
969
970
lineNumbersLeft: 0,
971
lineNumbersWidth: 0,
972
973
decorationsLeft: 0,
974
decorationsWidth: 10,
975
976
contentLeft: 10,
977
contentWidth: 935,
978
979
minimap: {
980
renderMinimap: RenderMinimap.Text,
981
minimapLeft: 945,
982
minimapWidth: 55,
983
minimapHeightIsEditorHeight: false,
984
minimapIsSampling: false,
985
minimapScale: 2,
986
minimapLineHeight: 4,
987
minimapCanvasInnerWidth: 220,
988
minimapCanvasInnerHeight: 3200,
989
minimapCanvasOuterWidth: 55,
990
minimapCanvasOuterHeight: 800,
991
},
992
993
viewportColumn: 93,
994
isWordWrapMinified: false,
995
isViewportWrapping: false,
996
wrappingColumn: -1,
997
998
verticalScrollbarWidth: 0,
999
horizontalScrollbarHeight: 0,
1000
1001
overviewRuler: {
1002
top: 0,
1003
width: 0,
1004
height: 800,
1005
right: 0
1006
}
1007
});
1008
});
1009
1010
test('EditorLayoutProvider 10 - render minimap to left', () => {
1011
doTest({
1012
outerWidth: 1000,
1013
outerHeight: 800,
1014
showGlyphMargin: false,
1015
lineHeight: 16,
1016
showLineNumbers: false,
1017
lineNumbersMinChars: 0,
1018
lineNumbersDigitCount: 1,
1019
lineDecorationsWidth: 10,
1020
typicalHalfwidthCharacterWidth: 10,
1021
maxDigitWidth: 10,
1022
verticalScrollbarWidth: 0,
1023
horizontalScrollbarHeight: 0,
1024
scrollbarArrowSize: 0,
1025
verticalScrollbarHasArrows: false,
1026
minimap: true,
1027
minimapSide: 'left',
1028
minimapRenderCharacters: true,
1029
minimapMaxColumn: 150,
1030
pixelRatio: 4,
1031
}, {
1032
width: 1000,
1033
height: 800,
1034
1035
glyphMarginLeft: 55,
1036
glyphMarginWidth: 0,
1037
glyphMarginDecorationLaneCount: 1,
1038
1039
lineNumbersLeft: 55,
1040
lineNumbersWidth: 0,
1041
1042
decorationsLeft: 55,
1043
decorationsWidth: 10,
1044
1045
contentLeft: 65,
1046
contentWidth: 935,
1047
1048
minimap: {
1049
renderMinimap: RenderMinimap.Text,
1050
minimapLeft: 0,
1051
minimapWidth: 55,
1052
minimapHeightIsEditorHeight: false,
1053
minimapIsSampling: false,
1054
minimapScale: 2,
1055
minimapLineHeight: 4,
1056
minimapCanvasInnerWidth: 220,
1057
minimapCanvasInnerHeight: 3200,
1058
minimapCanvasOuterWidth: 55,
1059
minimapCanvasOuterHeight: 800,
1060
},
1061
1062
viewportColumn: 93,
1063
isWordWrapMinified: false,
1064
isViewportWrapping: false,
1065
wrappingColumn: -1,
1066
1067
verticalScrollbarWidth: 0,
1068
horizontalScrollbarHeight: 0,
1069
1070
overviewRuler: {
1071
top: 0,
1072
width: 0,
1073
height: 800,
1074
right: 0
1075
}
1076
});
1077
});
1078
1079
test('EditorLayoutProvider 11 - minimap mode cover without sampling', () => {
1080
doTest({
1081
outerWidth: 1000,
1082
outerHeight: 800,
1083
showGlyphMargin: false,
1084
lineHeight: 16,
1085
showLineNumbers: false,
1086
lineNumbersMinChars: 0,
1087
lineNumbersDigitCount: 3,
1088
maxLineNumber: 120,
1089
lineDecorationsWidth: 10,
1090
typicalHalfwidthCharacterWidth: 10,
1091
maxDigitWidth: 10,
1092
verticalScrollbarWidth: 0,
1093
horizontalScrollbarHeight: 0,
1094
scrollbarArrowSize: 0,
1095
verticalScrollbarHasArrows: false,
1096
minimap: true,
1097
minimapSide: 'right',
1098
minimapRenderCharacters: true,
1099
minimapMaxColumn: 150,
1100
minimapSize: 'fill',
1101
pixelRatio: 2,
1102
}, {
1103
width: 1000,
1104
height: 800,
1105
1106
glyphMarginLeft: 0,
1107
glyphMarginWidth: 0,
1108
glyphMarginDecorationLaneCount: 1,
1109
1110
lineNumbersLeft: 0,
1111
lineNumbersWidth: 0,
1112
1113
decorationsLeft: 0,
1114
decorationsWidth: 10,
1115
1116
contentLeft: 10,
1117
contentWidth: 893,
1118
1119
minimap: {
1120
renderMinimap: RenderMinimap.Text,
1121
minimapLeft: 903,
1122
minimapWidth: 97,
1123
minimapHeightIsEditorHeight: true,
1124
minimapIsSampling: false,
1125
minimapScale: 3,
1126
minimapLineHeight: 13,
1127
minimapCanvasInnerWidth: 291,
1128
minimapCanvasInnerHeight: 1560,
1129
minimapCanvasOuterWidth: 97,
1130
minimapCanvasOuterHeight: 800,
1131
},
1132
1133
viewportColumn: 89,
1134
isWordWrapMinified: false,
1135
isViewportWrapping: false,
1136
wrappingColumn: -1,
1137
1138
verticalScrollbarWidth: 0,
1139
horizontalScrollbarHeight: 0,
1140
1141
overviewRuler: {
1142
top: 0,
1143
width: 0,
1144
height: 800,
1145
right: 0
1146
}
1147
});
1148
});
1149
1150
test('EditorLayoutProvider 12 - minimap mode cover with sampling', () => {
1151
doTest({
1152
outerWidth: 1000,
1153
outerHeight: 800,
1154
showGlyphMargin: false,
1155
lineHeight: 16,
1156
showLineNumbers: false,
1157
lineNumbersMinChars: 0,
1158
lineNumbersDigitCount: 4,
1159
maxLineNumber: 2500,
1160
lineDecorationsWidth: 10,
1161
typicalHalfwidthCharacterWidth: 10,
1162
maxDigitWidth: 10,
1163
verticalScrollbarWidth: 0,
1164
horizontalScrollbarHeight: 0,
1165
scrollbarArrowSize: 0,
1166
verticalScrollbarHasArrows: false,
1167
minimap: true,
1168
minimapSide: 'right',
1169
minimapRenderCharacters: true,
1170
minimapMaxColumn: 150,
1171
minimapSize: 'fill',
1172
pixelRatio: 2,
1173
}, {
1174
width: 1000,
1175
height: 800,
1176
1177
glyphMarginLeft: 0,
1178
glyphMarginWidth: 0,
1179
glyphMarginDecorationLaneCount: 1,
1180
1181
lineNumbersLeft: 0,
1182
lineNumbersWidth: 0,
1183
1184
decorationsLeft: 0,
1185
decorationsWidth: 10,
1186
1187
contentLeft: 10,
1188
contentWidth: 935,
1189
1190
minimap: {
1191
renderMinimap: RenderMinimap.Text,
1192
minimapLeft: 945,
1193
minimapWidth: 55,
1194
minimapHeightIsEditorHeight: true,
1195
minimapIsSampling: true,
1196
minimapScale: 1,
1197
minimapLineHeight: 1,
1198
minimapCanvasInnerWidth: 110,
1199
minimapCanvasInnerHeight: 1600,
1200
minimapCanvasOuterWidth: 55,
1201
minimapCanvasOuterHeight: 800,
1202
},
1203
1204
viewportColumn: 93,
1205
isWordWrapMinified: false,
1206
isViewportWrapping: false,
1207
wrappingColumn: -1,
1208
1209
verticalScrollbarWidth: 0,
1210
horizontalScrollbarHeight: 0,
1211
1212
overviewRuler: {
1213
top: 0,
1214
width: 0,
1215
height: 800,
1216
right: 0
1217
}
1218
});
1219
});
1220
1221
test('EditorLayoutProvider 13 - minimap mode contain without sampling', () => {
1222
doTest({
1223
outerWidth: 1000,
1224
outerHeight: 800,
1225
showGlyphMargin: false,
1226
lineHeight: 16,
1227
showLineNumbers: false,
1228
lineNumbersMinChars: 0,
1229
lineNumbersDigitCount: 3,
1230
maxLineNumber: 120,
1231
lineDecorationsWidth: 10,
1232
typicalHalfwidthCharacterWidth: 10,
1233
maxDigitWidth: 10,
1234
verticalScrollbarWidth: 0,
1235
horizontalScrollbarHeight: 0,
1236
scrollbarArrowSize: 0,
1237
verticalScrollbarHasArrows: false,
1238
minimap: true,
1239
minimapSide: 'right',
1240
minimapRenderCharacters: true,
1241
minimapMaxColumn: 150,
1242
minimapSize: 'fit',
1243
pixelRatio: 2,
1244
}, {
1245
width: 1000,
1246
height: 800,
1247
1248
glyphMarginLeft: 0,
1249
glyphMarginWidth: 0,
1250
glyphMarginDecorationLaneCount: 1,
1251
1252
lineNumbersLeft: 0,
1253
lineNumbersWidth: 0,
1254
1255
decorationsLeft: 0,
1256
decorationsWidth: 10,
1257
1258
contentLeft: 10,
1259
contentWidth: 893,
1260
1261
minimap: {
1262
renderMinimap: RenderMinimap.Text,
1263
minimapLeft: 903,
1264
minimapWidth: 97,
1265
minimapHeightIsEditorHeight: false,
1266
minimapIsSampling: false,
1267
minimapScale: 2,
1268
minimapLineHeight: 4,
1269
minimapCanvasInnerWidth: 194,
1270
minimapCanvasInnerHeight: 1600,
1271
minimapCanvasOuterWidth: 97,
1272
minimapCanvasOuterHeight: 800,
1273
},
1274
1275
viewportColumn: 89,
1276
isWordWrapMinified: false,
1277
isViewportWrapping: false,
1278
wrappingColumn: -1,
1279
1280
verticalScrollbarWidth: 0,
1281
horizontalScrollbarHeight: 0,
1282
1283
overviewRuler: {
1284
top: 0,
1285
width: 0,
1286
height: 800,
1287
right: 0
1288
}
1289
});
1290
});
1291
1292
test('EditorLayoutProvider 14 - minimap mode contain with sampling', () => {
1293
doTest({
1294
outerWidth: 1000,
1295
outerHeight: 800,
1296
showGlyphMargin: false,
1297
lineHeight: 16,
1298
showLineNumbers: false,
1299
lineNumbersMinChars: 0,
1300
lineNumbersDigitCount: 4,
1301
maxLineNumber: 2500,
1302
lineDecorationsWidth: 10,
1303
typicalHalfwidthCharacterWidth: 10,
1304
maxDigitWidth: 10,
1305
verticalScrollbarWidth: 0,
1306
horizontalScrollbarHeight: 0,
1307
scrollbarArrowSize: 0,
1308
verticalScrollbarHasArrows: false,
1309
minimap: true,
1310
minimapSide: 'right',
1311
minimapRenderCharacters: true,
1312
minimapMaxColumn: 150,
1313
minimapSize: 'fit',
1314
pixelRatio: 2,
1315
}, {
1316
width: 1000,
1317
height: 800,
1318
1319
glyphMarginLeft: 0,
1320
glyphMarginWidth: 0,
1321
glyphMarginDecorationLaneCount: 1,
1322
1323
lineNumbersLeft: 0,
1324
lineNumbersWidth: 0,
1325
1326
decorationsLeft: 0,
1327
decorationsWidth: 10,
1328
1329
contentLeft: 10,
1330
contentWidth: 935,
1331
1332
minimap: {
1333
renderMinimap: RenderMinimap.Text,
1334
minimapLeft: 945,
1335
minimapWidth: 55,
1336
minimapHeightIsEditorHeight: true,
1337
minimapIsSampling: true,
1338
minimapScale: 1,
1339
minimapLineHeight: 1,
1340
minimapCanvasInnerWidth: 110,
1341
minimapCanvasInnerHeight: 1600,
1342
minimapCanvasOuterWidth: 55,
1343
minimapCanvasOuterHeight: 800,
1344
},
1345
1346
viewportColumn: 93,
1347
isWordWrapMinified: false,
1348
isViewportWrapping: false,
1349
wrappingColumn: -1,
1350
1351
verticalScrollbarWidth: 0,
1352
horizontalScrollbarHeight: 0,
1353
1354
overviewRuler: {
1355
top: 0,
1356
width: 0,
1357
height: 800,
1358
right: 0
1359
}
1360
});
1361
});
1362
1363
test('issue #31312: When wrapping, leave 2px for the cursor', () => {
1364
doTest({
1365
outerWidth: 1201,
1366
outerHeight: 422,
1367
showGlyphMargin: true,
1368
lineHeight: 30,
1369
showLineNumbers: true,
1370
lineNumbersMinChars: 3,
1371
lineNumbersDigitCount: 1,
1372
lineDecorationsWidth: 26,
1373
typicalHalfwidthCharacterWidth: 12.04296875,
1374
maxDigitWidth: 12.04296875,
1375
verticalScrollbarWidth: 14,
1376
horizontalScrollbarHeight: 10,
1377
scrollbarArrowSize: 11,
1378
verticalScrollbarHasArrows: false,
1379
minimap: true,
1380
minimapSide: 'right',
1381
minimapRenderCharacters: true,
1382
minimapMaxColumn: 120,
1383
pixelRatio: 2
1384
}, {
1385
width: 1201,
1386
height: 422,
1387
1388
glyphMarginLeft: 0,
1389
glyphMarginWidth: 30,
1390
glyphMarginDecorationLaneCount: 1,
1391
1392
lineNumbersLeft: 30,
1393
lineNumbersWidth: 36,
1394
1395
decorationsLeft: 66,
1396
decorationsWidth: 26,
1397
1398
contentLeft: 92,
1399
contentWidth: 1018,
1400
1401
minimap: {
1402
renderMinimap: RenderMinimap.Text,
1403
minimapLeft: 1096,
1404
minimapWidth: 91,
1405
minimapHeightIsEditorHeight: false,
1406
minimapIsSampling: false,
1407
minimapScale: 2,
1408
minimapLineHeight: 4,
1409
minimapCanvasInnerWidth: 182,
1410
minimapCanvasInnerHeight: 844,
1411
minimapCanvasOuterWidth: 91,
1412
minimapCanvasOuterHeight: 422,
1413
},
1414
1415
viewportColumn: 83,
1416
isWordWrapMinified: false,
1417
isViewportWrapping: false,
1418
wrappingColumn: -1,
1419
1420
verticalScrollbarWidth: 14,
1421
horizontalScrollbarHeight: 10,
1422
1423
overviewRuler: {
1424
top: 0,
1425
width: 14,
1426
height: 422,
1427
right: 0
1428
}
1429
});
1430
1431
});
1432
});
1433
1434