Metrics refactor (#4627)

This commit is contained in:
alschmiedt
2021-02-10 16:19:56 -08:00
committed by GitHub
parent 5e293f60b9
commit a8f28c6b11
6 changed files with 470 additions and 281 deletions

View File

@@ -43,70 +43,82 @@ suite('Metrics', function() {
test('GetContentDimensionsExact - empty', function() {
var ws = makeMockWs(1, 0, 0, 0, 0);
var defaultZoom = Blockly.WorkspaceSvg.getContentDimensionsExact_(ws);
var metricsManager = new Blockly.MetricsManager(ws);
var defaultZoom = metricsManager.getContentDimensionsExact_(ws);
assertDimensionsMatch(defaultZoom, 0, 0, 0, 0);
});
test('GetContentDimensionsExact - empty zoom in', function() {
var ws = makeMockWs(2, 0, 0, 0, 0);
var zoomIn = Blockly.WorkspaceSvg.getContentDimensionsExact_(ws);
var metricsManager = new Blockly.MetricsManager(ws);
var zoomIn = metricsManager.getContentDimensionsExact_(ws);
assertDimensionsMatch(zoomIn, 0, 0, 0, 0);
});
test('GetContentDimensionsExact - empty zoom out', function() {
var ws = makeMockWs(.5, 0, 0, 0, 0);
var zoomOut = Blockly.WorkspaceSvg.getContentDimensionsExact_(ws);
var metricsManager = new Blockly.MetricsManager(ws);
var zoomOut = metricsManager.getContentDimensionsExact_(ws);
assertDimensionsMatch(zoomOut, 0, 0, 0, 0);
});
test('GetContentDimensionsExact - non empty at origin', function() {
var ws = makeMockWs(1, 0, 0, 100, 100);
var defaultZoom = Blockly.WorkspaceSvg.getContentDimensionsExact_(ws);
var metricsManager = new Blockly.MetricsManager(ws);
var defaultZoom = metricsManager.getContentDimensionsExact_(ws);
// Pixel and ws units are the same at default zoom.
assertDimensionsMatch(defaultZoom, 0, 0, 100, 100);
});
test('GetContentDimensionsExact - non empty at origin zoom in', function() {
var ws = makeMockWs(2, 0, 0, 100, 100);
var zoomIn = Blockly.WorkspaceSvg.getContentDimensionsExact_(ws);
var metricsManager = new Blockly.MetricsManager(ws);
var zoomIn = metricsManager.getContentDimensionsExact_(ws);
// 1 ws unit = 2 pixels at this zoom level.
assertDimensionsMatch(zoomIn, 0, 0, 200, 200);
});
test('GetContentDimensionsExact - non empty at origin zoom out', function() {
var ws = makeMockWs(.5, 0, 0, 100, 100);
var zoomOut = Blockly.WorkspaceSvg.getContentDimensionsExact_(ws);
var metricsManager = new Blockly.MetricsManager(ws);
var zoomOut = metricsManager.getContentDimensionsExact_(ws);
// 1 ws unit = 0.5 pixels at this zoom level.
assertDimensionsMatch(zoomOut, 0, 0, 50, 50);
});
test('GetContentDimensionsExact - non empty positive origin', function() {
var ws = makeMockWs(1, 10, 10, 100, 100);
var defaultZoom = Blockly.WorkspaceSvg.getContentDimensionsExact_(ws);
var metricsManager = new Blockly.MetricsManager(ws);
var defaultZoom = metricsManager.getContentDimensionsExact_(ws);
// Pixel and ws units are the same at default zoom.
assertDimensionsMatch(defaultZoom, 10, 10, 100, 100);
});
test('GetContentDimensionsExact - non empty positive origin zoom in', function() {
var ws = makeMockWs(2, 10, 10, 100, 100);
var zoomIn = Blockly.WorkspaceSvg.getContentDimensionsExact_(ws);
var metricsManager = new Blockly.MetricsManager(ws);
var zoomIn = metricsManager.getContentDimensionsExact_(ws);
// 1 ws unit = 2 pixels at this zoom level.
assertDimensionsMatch(zoomIn, 20, 20, 200, 200);
});
test('GetContentDimensionsExact - non empty positive origin zoom out', function() {
var ws = makeMockWs(.5, 10, 10, 100, 100);
var zoomOut = Blockly.WorkspaceSvg.getContentDimensionsExact_(ws);
var metricsManager = new Blockly.MetricsManager(ws);
var zoomOut = metricsManager.getContentDimensionsExact_(ws);
// 1 ws unit = 0.5 pixels at this zoom level.
assertDimensionsMatch(zoomOut, 5, 5, 50, 50);
});
test('GetContentDimensionsExact - non empty negative origin', function() {
var ws = makeMockWs(1, -10, -10, 100, 100);
var defaultZoom = Blockly.WorkspaceSvg.getContentDimensionsExact_(ws);
var metricsManager = new Blockly.MetricsManager(ws);
var defaultZoom = metricsManager.getContentDimensionsExact_(ws);
// Pixel and ws units are the same at default zoom.
assertDimensionsMatch(defaultZoom, -10, -10, 100, 100);
});
test('GetContentDimensionsExact - non empty negative origin zoom in', function() {
var ws = makeMockWs(2, -10, -10, 100, 100);
var zoomIn = Blockly.WorkspaceSvg.getContentDimensionsExact_(ws);
var metricsManager = new Blockly.MetricsManager(ws);
var zoomIn = metricsManager.getContentDimensionsExact_(ws);
// 1 ws unit = 2 pixels at this zoom level.
assertDimensionsMatch(zoomIn, -20, -20, 200, 200);
});
test('GetContentDimensionsExact - non empty negative origin zoom out', function() {
var ws = makeMockWs(.5, -10, -10, 100, 100);
var zoomOut = Blockly.WorkspaceSvg.getContentDimensionsExact_(ws);
var metricsManager = new Blockly.MetricsManager(ws);
var zoomOut = metricsManager.getContentDimensionsExact_(ws);
// 1 ws unit = 0.5 pixels at this zoom level.
assertDimensionsMatch(zoomOut, -5, -5, 50, 50);
});