UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

286 lines (217 loc) 7.98 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2007-2008 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) ************************************************************************ */ qx.Class.define("qx.test.ui.layout.Grid", { extend : qx.dev.unit.TestCase, members : { setUp : function() { this._gridWidget = new qx.test.ui.layout.LayoutItem(100, 50); this._gridLayout = new qx.ui.layout.Grid(); this._gridWidget.setLayout(this._gridLayout); this.root = new qx.test.ui.layout.LayoutRoot(); this.root.add(this._gridWidget); }, tearDown : function() { this.root.dispose(); this._gridWidget.dispose(); this._gridLayout.dispose(); }, flush : function() { qx.ui.core.queue.Manager.flush(); }, assertSize : function(layoutItem, width, height) { this.flush(); this.assertEquals(width, layoutItem.bounds.width); this.assertEquals(height, layoutItem.bounds.height); }, _getFixedWidget : function() { var widget = new qx.test.ui.layout.LayoutItem(200, 100); widget.set({ allowGrowX: false, allowShrinkX: false, allowGrowY: false, allowShrinkY: false }); return widget; }, testRowSpanWithoutFlex : function() { // test with spacing this._gridLayout.setSpacingY(6); var w1 = new qx.test.ui.layout.LayoutItem(100, 100); this._gridWidget.add(w1, {row: 0, column: 1}); var w2 = new qx.test.ui.layout.LayoutItem(100, 100); this._gridWidget.add(w2, {row: 1, column: 1}); var w3 = new qx.test.ui.layout.LayoutItem(100, 300); this._gridWidget.add(w3, {row: 0, column: 0, rowSpan: 2}); this.flush(); this.assertEquals(300, this._gridWidget.bounds.height); w1.dispose(); w2.dispose(); w3.dispose(); }, testGetCellWidget : function() { var grid = this._gridLayout; this.assertNull(grid.getCellWidget(0, 0)); this.assertNull(grid.getCellWidget(1, 1)); var w00 = this._getFixedWidget(); this._gridWidget.add(w00, {row: 0, column: 0}); this.assertEquals(w00, grid.getCellWidget(0, 0)); this.assertNull(grid.getCellWidget(1, 1)); var w11 = this._getFixedWidget(); this._gridWidget.add(w11, {row: 1, column: 1}); this.assertEquals(w00, grid.getCellWidget(0, 0)); this.assertEquals(w11, grid.getCellWidget(1, 1)); this.assertNull(grid.getCellWidget(1, 0)); }, testAutoSize : function() { this._gridWidget.add(this._getFixedWidget(), {row: 0, column: 0}); this._gridWidget.add(this._getFixedWidget(), {row: 0, column: 1}); this._gridWidget.add(this._getFixedWidget(), {row: 1, column: 0}); this._gridWidget.add(this._getFixedWidget(), {row: 1, column: 1}); this.assertSize(this._gridWidget, 400, 200); // spacing this._gridLayout.setSpacingY(10); this._gridLayout.setSpacingX(20); this.assertSize(this._gridWidget, 420, 210); }, testAddRemove : function() { var a = this._getFixedWidget(); var b = this._getFixedWidget(); var c = this._getFixedWidget(); var d = this._getFixedWidget(); this._gridLayout.setSpacingY(10); this._gridLayout.setSpacingX(20); // initial layout: // ab // cd this._gridWidget.add(a, {row: 0, column: 0}); this._gridWidget.add(b, {row: 0, column: 1}); this._gridWidget.add(c, {row: 1, column: 0}); this._gridWidget.add(d, {row: 1, column: 1}); this.assertSize(this._gridWidget, 420, 210); // layout: // a // c this._gridWidget.remove(b); this._gridWidget.remove(d); this.assertSize(this._gridWidget, 200, 210); // layout: // a, d, b, c this._gridWidget.remove(c); this._gridWidget.add(d, {row: 0, column: 1}); this._gridWidget.add(b, {row: 0, column: 2}); this._gridWidget.add(c, {row: 0, column: 3}); this.assertSize(this._gridWidget, 860, 100); }, testVisibility : function() { var a = this._getFixedWidget(); var b = this._getFixedWidget(); var c = this._getFixedWidget(); var d = this._getFixedWidget(); this._gridLayout.setSpacingY(10); this._gridLayout.setSpacingX(20); // initial layout: // ab // cd this._gridWidget.add(a, {row: 0, column: 0}); this._gridWidget.add(b, {row: 0, column: 1}); this._gridWidget.add(c, {row: 1, column: 0}); this._gridWidget.add(d, {row: 1, column: 1}); this.assertSize(this._gridWidget, 420, 210); // layout: // ab // cd a.setVisibility("hidden"); b.setVisibility("hidden"); c.setVisibility("hidden"); this.assertSize(this._gridWidget, 420, 210); // layout: // ab b.setVisibility("visible"); c.setVisibility("excluded"); d.setVisibility("excluded"); this.assertSize(this._gridWidget, 420, 100); // layout: // cd a.setVisibility("excluded"); b.setVisibility("excluded"); c.setVisibility("visible"); d.setVisibility("visible"); this.assertSize(this._gridWidget, 420, 110); }, testCellSize : function() { this._gridLayout.setRowHeight(0, 40); this._gridLayout.setRowHeight(1, 150); this._gridLayout.setColumnWidth(0, 70); this._gridLayout.setColumnWidth(1, 290); var a = new qx.test.ui.layout.LayoutItem(100, 50); var b = new qx.test.ui.layout.LayoutItem(100, 50); var c = new qx.test.ui.layout.LayoutItem(100, 50); var d = new qx.test.ui.layout.LayoutItem(100, 50); this._gridWidget.add(a, {row: 0, column: 0}); this._gridWidget.add(b, {row: 0, column: 1}); this._gridWidget.add(c, {row: 1, column: 0}); this._gridWidget.add(d, {row: 1, column: 1}); this.assertSize(a, 70, 40); this.assertSize(b, 290, 40); this.assertSize(c, 70, 150); this.assertSize(d, 290, 150); }, testCellMinSize : function() { var a = new qx.test.ui.layout.LayoutItem(100, 50).set({ minWidth: 200, minHeight: 200 }); var b = new qx.test.ui.layout.LayoutItem(100, 50); var c = new qx.test.ui.layout.LayoutItem(100, 50); var d = new qx.test.ui.layout.LayoutItem(100, 50); this._gridWidget.add(a, {row: 0, column: 0}); this._gridWidget.add(b, {row: 0, column: 1}); this._gridWidget.add(c, {row: 1, column: 0}); this._gridWidget.add(d, {row: 1, column: 1}); this.assertSize(a, 200, 200); this.assertSize(b, 100, 200); this.assertSize(c, 200, 50); this.assertSize(d, 100, 50); }, testGetRowCount : function() { this.assertEquals(0, this._gridLayout.getRowCount()); this._gridWidget.add(new qx.test.ui.layout.LayoutItem(100, 50), {row: 0, column: 0}); this.assertEquals(1, this._gridLayout.getRowCount()); this._gridWidget.add(new qx.test.ui.layout.LayoutItem(100, 50), {row: 4, column: 0}); this.assertEquals(5, this._gridLayout.getRowCount()); }, testGetColumnCount : function() { this.assertEquals(0, this._gridLayout.getColumnCount()); this._gridWidget.add(new qx.test.ui.layout.LayoutItem(100, 50), {row: 0, column: 0}); this.assertEquals(1, this._gridLayout.getColumnCount()); this._gridWidget.add(new qx.test.ui.layout.LayoutItem(100, 50), {row: 0, column: 4}); this.assertEquals(5, this._gridLayout.getColumnCount()); } }, destruct : function() { this._gridWidget = this._gridLayout = null; } });