UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

338 lines (269 loc) 11.4 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2009 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Fabian Jakobs (fjakobs) * Christian Hagendorn (chris_schmidt) ************************************************************************ */ qx.Class.define("qx.test.util.placement.Placement", { extend : qx.dev.unit.TestCase, members : { testEnoughSpace : function() { var size = {width: 200, height: 300}; var area = {width: 1000, height: 1000}; var target = {left: 500, top: 500, right: 600, bottom: 550}; var offsets = {top: 0, left: 0, bottom: 0, right: 0}; var modes = ["direct", "keep-align", "best-fit"]; for (var i=0; i<modes.length; i++) { var mode = modes[i]; this.assertJsonEquals( {left: 500, top: 200}, qx.util.placement.Placement.compute(size, area, target, offsets, "top-left", mode, mode), mode ); this.assertJsonEquals( {left: 450, top: 200}, qx.util.placement.Placement.compute(size, area, target, offsets, "top-center", mode, mode), mode ); this.assertJsonEquals( {left: 400, top: 200}, qx.util.placement.Placement.compute(size, area, target, offsets, "top-right", mode, mode), mode ); this.assertJsonEquals( {left: 500, top: 550}, qx.util.placement.Placement.compute(size, area, target, offsets, "bottom-left", mode, mode), mode ); this.assertJsonEquals( {left: 450, top: 550}, qx.util.placement.Placement.compute(size, area, target, offsets, "bottom-center", mode, mode), mode ); this.assertJsonEquals( {left: 400, top: 550}, qx.util.placement.Placement.compute(size, area, target, offsets, "bottom-right", mode, mode), mode ); this.assertJsonEquals( {left: 300, top: 500}, qx.util.placement.Placement.compute(size, area, target, offsets, "left-top", mode, mode), mode ); this.assertJsonEquals( {left: 300, top: 375}, qx.util.placement.Placement.compute(size, area, target, offsets, "left-middle", mode, mode), mode ); this.assertJsonEquals( {left: 300, top: 250}, qx.util.placement.Placement.compute(size, area, target, offsets, "left-bottom", mode, mode), mode ); this.assertJsonEquals( {left: 600, top: 500}, qx.util.placement.Placement.compute(size, area, target, offsets, "right-top", mode, mode), mode ); this.assertJsonEquals( {left: 600, top: 375}, qx.util.placement.Placement.compute(size, area, target, offsets, "right-middle", mode, mode), mode ); this.assertJsonEquals( {left: 600, top: 250}, qx.util.placement.Placement.compute(size, area, target, offsets, "right-bottom", mode, mode), mode ); } }, testRestrictedBottomKeepAlign : function() { var size = {width: 200, height: 300}; var area = {width: 1000, height: 600}; var target = {left: 500, top: 500, right: 600, bottom: 550}; var offsets = {top: 0, left: 0, bottom: 0, right: 0}; this.assertJsonEquals( {left: 500, top: 200}, qx.util.placement.Placement.compute(size, area, target, offsets, "bottom-left", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 450, top: 200}, qx.util.placement.Placement.compute(size, area, target, offsets, "bottom-center", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 400, top: 200}, qx.util.placement.Placement.compute(size, area, target, offsets, "bottom-right", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 300, top: 250}, qx.util.placement.Placement.compute(size, area, target, offsets, "left-top", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 300, top: 250}, qx.util.placement.Placement.compute(size, area, target, offsets, "left-middle", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 600, top: 250}, qx.util.placement.Placement.compute(size, area, target, offsets, "right-top", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 600, top: 250}, qx.util.placement.Placement.compute(size, area, target, offsets, "right-middle", "keep-align", "keep-align") ); }, testRestrictedTopKeepAlign : function() { var size = {width: 200, height: 300}; var area = {width: 1000, height: 1000}; var target = {left: 500, top: 100, right: 600, bottom: 150}; var offsets = {top: 0, left: 0, bottom: 0, right: 0}; this.assertJsonEquals( {left: 500, top: 150}, qx.util.placement.Placement.compute(size, area, target, offsets, "top-left", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 450, top: 150}, qx.util.placement.Placement.compute(size, area, target, offsets, "top-center", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 400, top: 150}, qx.util.placement.Placement.compute(size, area, target, offsets, "top-right", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 300, top: 100}, qx.util.placement.Placement.compute(size, area, target, offsets, "left-middle", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 300, top: 100}, qx.util.placement.Placement.compute(size, area, target, offsets, "left-bottom", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 600, top: 100}, qx.util.placement.Placement.compute(size, area, target, offsets, "right-middle", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 600, top: 100}, qx.util.placement.Placement.compute(size, area, target, offsets, "right-bottom", "keep-align", "keep-align") ); }, testRestrictedRightKeepAlign : function() { var size = {width: 200, height: 300}; var area = {width: 700, height: 1000}; var target = {left: 500, top: 500, right: 600, bottom: 550}; var offsets = {top: 0, left: 0, bottom: 0, right: 0}; this.assertJsonEquals( {left: 300, top: 500}, qx.util.placement.Placement.compute(size, area, target, offsets, "right-top", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 300, top: 375}, qx.util.placement.Placement.compute(size, area, target, offsets, "right-middle", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 300, top: 250}, qx.util.placement.Placement.compute(size, area, target, offsets, "right-bottom", "keep-align", "keep-align") ); }, testRestrictedLeftKeepAlign : function() { var size = {width: 200, height: 300}; var area = {width: 1000, height: 1000}; var target = {left: 100, top: 500, right: 200, bottom: 550}; var offsets = {top: 0, left: 0, bottom: 0, right: 0}; this.assertJsonEquals( {left: 200, top: 500}, qx.util.placement.Placement.compute(size, area, target, offsets, "left-top", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 200, top: 375}, qx.util.placement.Placement.compute(size, area, target, offsets, "left-middle", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 200, top: 250}, qx.util.placement.Placement.compute(size, area, target, offsets, "left-bottom", "keep-align", "keep-align") ); }, testRestrictedBottomAndTopWithBetterBottomKeepAlign : function() { var size = {width: 200, height: 300}; var area = {width: 1000, height: 440}; var target = {left: 500, top: 100, right: 600, bottom: 150}; var offsets = {top: 10, bottom: 20, left: 0, right: 0}; this.assertJsonEquals( {left: 500, top: 160}, qx.util.placement.Placement.compute(size, area, target, offsets, "bottom-left", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 450, top: 160}, qx.util.placement.Placement.compute(size, area, target, offsets, "bottom-center", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 500, top: 160}, qx.util.placement.Placement.compute(size, area, target, offsets, "top-left", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 450, top: 160}, qx.util.placement.Placement.compute(size, area, target, offsets, "top-center", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 600, top: 110}, qx.util.placement.Placement.compute(size, area, target, offsets, "right-top", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 600, top: 110}, qx.util.placement.Placement.compute(size, area, target, offsets, "right-middle", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 600, top: 110}, qx.util.placement.Placement.compute(size, area, target, offsets, "right-bottom", "keep-align", "keep-align") ); }, testRestrictedLeftAndRightWithBetterLeftKeepAlign : function() { var size = {width: 200, height: 300}; var area = {width: 650, height: 1000}; var target = {left: 500, top: 500, right: 600, bottom: 550}; var offsets = {top: 0, bottom: 0, left: 10, right: 20}; this.assertJsonEquals( {left: 280, top: 500}, qx.util.placement.Placement.compute(size, area, target, offsets, "left-top", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 280, top: 375}, qx.util.placement.Placement.compute(size, area, target, offsets, "left-middle", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 280, top: 500}, qx.util.placement.Placement.compute(size, area, target, offsets, "right-top", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 280, top: 375}, qx.util.placement.Placement.compute(size, area, target, offsets, "right-middle", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 380, top: 550}, qx.util.placement.Placement.compute(size, area, target, offsets, "bottom-left", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 380, top: 550}, qx.util.placement.Placement.compute(size, area, target, offsets, "bottom-center", "keep-align", "keep-align") ); this.assertJsonEquals( {left: 380, top: 550}, qx.util.placement.Placement.compute(size, area, target, offsets, "bottom-right", "keep-align", "keep-align") ); } } });