blob: 16fba573b9cb313b19ea8fde85b169d37f61f570 [file] [log] [blame]
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
'use strict';
base.require('base.bbox2');
base.require('ui.quad_view_viewport');
base.unittest.testSuite('ui.quad_view_viewport', function() {
var QuadViewViewport = ui.QuadViewViewport;
test('basicsHighDPIUnpadded', function() {
var bbox = new base.BBox2();
bbox.addXY(0, 0);
bbox.addXY(4000, 2000);
var vp = new QuadViewViewport(bbox.asRect(), 0.125, 0, 2);
assertEquals(500, vp.worldWidthInDevicePixels_);
assertEquals(250, vp.worldHeightInDevicePixels_);
assertEquals(250, vp.layoutRect_.width);
assertEquals(125, vp.layoutRect_.height);
// Top left.
var tmp = vp.layoutPixelsToWorldPixels(vec2.createXY(0, 0));
assertEquals(0, tmp[0]);
assertEquals(0, tmp[1]);
// World center.
var tmp = vp.layoutPixelsToWorldPixels(vec2.createXY(125, 62.5));
assertEquals(2000, tmp[0]);
assertEquals(1000, tmp[1]);
// Bottom right.
var tmp = vp.layoutPixelsToWorldPixels(vec2.createXY(250, 125));
assertEquals(4000, tmp[0]);
assertEquals(2000, tmp[1]);
assertRectEquals(bbox.asRect(), vp.unpaddedWorldRect);
});
test('basicsHighDPI', function() {
var bbox = new base.BBox2();
bbox.addXY(0, 0);
bbox.addXY(4000, 2000);
var vp = new QuadViewViewport(bbox.asRect(), 0.125, 0.1, 2);
assertEquals(550, vp.worldWidthInDevicePixels_);
assertEquals(300, vp.worldHeightInDevicePixels_);
assertEquals(275, vp.layoutRect_.width);
assertEquals(150, vp.layoutRect_.height);
// Top left.
var tmp = vp.layoutPixelsToWorldPixels(vec2.createXY(0, 0));
assertEquals(-200, tmp[0]);
assertEquals(-200, tmp[1]);
// World center.
var tmp = vp.layoutPixelsToWorldPixels(vec2.createXY(137.5, 75));
assertEquals(2000, tmp[0]);
assertEquals(1000, tmp[1]);
// Bottom right.
var tmp = vp.layoutPixelsToWorldPixels(vec2.createXY(275, 150));
assertEquals(4200, tmp[0]);
assertEquals(2200, tmp[1]);
assertRectEquals(bbox.asRect(), vp.unpaddedWorldRect);
});
});