Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/editor/test/common/view/overviewZoneManager.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 { ColorZone, OverviewRulerZone, OverviewZoneManager } from '../../../common/viewModel/overviewZoneManager.js';
9
10
suite('Editor View - OverviewZoneManager', () => {
11
12
ensureNoDisposablesAreLeakedInTestSuite();
13
14
test('pixel ratio 1, dom height 600', () => {
15
const LINE_COUNT = 50;
16
const LINE_HEIGHT = 20;
17
const manager = new OverviewZoneManager((lineNumber) => LINE_HEIGHT * lineNumber);
18
manager.setDOMWidth(30);
19
manager.setDOMHeight(600);
20
manager.setOuterHeight(LINE_COUNT * LINE_HEIGHT);
21
manager.setLineHeight(LINE_HEIGHT);
22
manager.setPixelRatio(1);
23
24
manager.setZones([
25
new OverviewRulerZone(1, 1, 0, '1'),
26
new OverviewRulerZone(10, 10, 0, '2'),
27
new OverviewRulerZone(30, 31, 0, '3'),
28
new OverviewRulerZone(50, 50, 0, '4'),
29
]);
30
31
// one line = 12, but cap is at 6
32
assert.deepStrictEqual(manager.resolveColorZones(), [
33
new ColorZone(12, 24, 1), //
34
new ColorZone(120, 132, 2), // 120 -> 132
35
new ColorZone(360, 384, 3), // 360 -> 372 [360 -> 384]
36
new ColorZone(588, 600, 4), // 588 -> 600
37
]);
38
});
39
40
test('pixel ratio 1, dom height 300', () => {
41
const LINE_COUNT = 50;
42
const LINE_HEIGHT = 20;
43
const manager = new OverviewZoneManager((lineNumber) => LINE_HEIGHT * lineNumber);
44
manager.setDOMWidth(30);
45
manager.setDOMHeight(300);
46
manager.setOuterHeight(LINE_COUNT * LINE_HEIGHT);
47
manager.setLineHeight(LINE_HEIGHT);
48
manager.setPixelRatio(1);
49
50
manager.setZones([
51
new OverviewRulerZone(1, 1, 0, '1'),
52
new OverviewRulerZone(10, 10, 0, '2'),
53
new OverviewRulerZone(30, 31, 0, '3'),
54
new OverviewRulerZone(50, 50, 0, '4'),
55
]);
56
57
// one line = 6, cap is at 6
58
assert.deepStrictEqual(manager.resolveColorZones(), [
59
new ColorZone(6, 12, 1), //
60
new ColorZone(60, 66, 2), // 60 -> 66
61
new ColorZone(180, 192, 3), // 180 -> 192
62
new ColorZone(294, 300, 4), // 294 -> 300
63
]);
64
});
65
66
test('pixel ratio 2, dom height 300', () => {
67
const LINE_COUNT = 50;
68
const LINE_HEIGHT = 20;
69
const manager = new OverviewZoneManager((lineNumber) => LINE_HEIGHT * lineNumber);
70
manager.setDOMWidth(30);
71
manager.setDOMHeight(300);
72
manager.setOuterHeight(LINE_COUNT * LINE_HEIGHT);
73
manager.setLineHeight(LINE_HEIGHT);
74
manager.setPixelRatio(2);
75
76
manager.setZones([
77
new OverviewRulerZone(1, 1, 0, '1'),
78
new OverviewRulerZone(10, 10, 0, '2'),
79
new OverviewRulerZone(30, 31, 0, '3'),
80
new OverviewRulerZone(50, 50, 0, '4'),
81
]);
82
83
// one line = 6, cap is at 12
84
assert.deepStrictEqual(manager.resolveColorZones(), [
85
new ColorZone(12, 24, 1), //
86
new ColorZone(120, 132, 2), // 120 -> 132
87
new ColorZone(360, 384, 3), // 360 -> 384
88
new ColorZone(588, 600, 4), // 588 -> 600
89
]);
90
});
91
});
92
93