UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

174 lines (141 loc) 5.04 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2017 Martijn Evers, The Netherlands License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Martijn Evers (mever) ************************************************************************ */ /** * @ignore(qx.test.ui.core.AbstractScrollArea.fixture.CustomWidget) */ qx.Class.define("qx.test.ui.core.AbstractScrollArea", { extend: qx.test.ui.LayoutTestCase, include: qx.dev.unit.MMock, members: { /** @type {qx.test.ui.core.AbstractScrollArea.fixture.CustomWidget} */ __widget: null, /** @type {qx.ui.container.Composite} */ __outer: null, setUp() { qx.Class.define( "qx.test.ui.core.AbstractScrollArea.fixture.CustomWidget", { extend: qx.ui.core.scroll.AbstractScrollArea, members: { /** * @param widget {qx.ui.core.LayoutItem} */ setSingleChild(widget) { this.getChildControl("pane").add(widget); }, /** * @param side {String} Either 'x' or 'y'. * @returns {boolean} */ hasScrollBar(side) { this._computeScrollbars(); return this._isChildControlVisible("scrollbar-" + side); } } } ); this.__outer = new qx.ui.container.Composite(new qx.ui.layout.Grow()); this.__outer.set({ maxWidth: 100, maxHeight: 100, width: 100, height: 100 }); this.__widget = new qx.test.ui.core.AbstractScrollArea.fixture.CustomWidget(); this.__outer.add(this.__widget); this.getRoot().add(this.__outer); super.setUp(); }, tearDown() { this.getSandbox().restore(); qx.Class.undefine( "qx.test.ui.core.AbstractScrollArea.fixture.CustomWidget" ); super.tearDown(); }, /** * @param expected {qx.ui.core.Widget|Bounds} * @param actual {qx.ui.core.Widget} */ assertBounds(expected, actual) { var expectedBounds, actualBounds; if (expected instanceof qx.ui.core.Widget) { expectedBounds = expected.getBounds(); } else { expectedBounds = expected; } actualBounds = actual.getBounds(); this.assertIdentical(expectedBounds.top, actualBounds.top); this.assertIdentical(expectedBounds.left, actualBounds.left); this.assertIdentical(expectedBounds.width, actualBounds.width); this.assertIdentical(expectedBounds.height, actualBounds.height); }, "test default behaviour"() { var inner = new qx.ui.core.Widget(); this.__widget.setSingleChild(inner); this.flush(); this.assertBounds(inner, this.__widget); }, "test smaller widget than container"() { var inner = new qx.ui.core.Widget(); inner.set({ minWidth: 80, minHeight: 80 }); this.__widget.setSingleChild(inner); this.flush(); this.assertBounds(inner, this.__widget); this.assertFalse(this.__widget.hasScrollBar("x")); this.assertFalse(this.__widget.hasScrollBar("y")); }, "test bigger widget than container"() { var inner = new qx.ui.core.Widget(); inner.set({ minWidth: 120, minHeight: 120 }); this.__widget.setSingleChild(inner); this.flush(); this.assertBounds( { left: 0, top: 0, width: 100, height: 100 }, this.__widget ); this.assertBounds({ left: 0, top: 0, width: 120, height: 120 }, inner); this.assertTrue(this.__widget.hasScrollBar("x")); this.assertTrue(this.__widget.hasScrollBar("y")); }, "test bigger preferred widget than container"() { var inner = new qx.ui.core.Widget(); inner.set({ width: 120, height: 120 }); this.__widget.setSingleChild(inner); this.flush(); this.assertBounds( { left: 0, top: 0, width: 100, height: 100 }, this.__widget ); this.assertBounds({ left: 0, top: 0, width: 100, height: 100 }, inner); this.assertFalse(this.__widget.hasScrollBar("x")); this.assertFalse(this.__widget.hasScrollBar("y")); }, "test bigger widget than smaller preferred container"() { var inner = new qx.ui.core.Widget(); inner.set({ minWidth: 120, minHeight: 120 }); this.__widget.setSingleChild(inner); this.__outer.set({ width: 100, height: 100 }); this.__outer.resetMaxWidth(); this.__outer.resetMaxHeight(); this.flush(); this.assertBounds( { left: 0, top: 0, width: 100, height: 100 }, this.__widget ); this.assertBounds({ left: 0, top: 0, width: 120, height: 120 }, inner); this.assertTrue(this.__widget.hasScrollBar("x")); this.assertTrue(this.__widget.hasScrollBar("y")); } } });