UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

276 lines (234 loc) 8.82 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2010 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: * Daniel Wagner (d_wagner) * Christian Hagendorn (chris_schmidt) ************************************************************************ */ qx.Class.define("qx.test.ui.tree.Tree", { extend : qx.test.ui.LayoutTestCase, members : { _tree : null, setUp : function() { this.base(arguments); this._tree = new qx.ui.tree.Tree(); this.getRoot().add(this._tree); var tRoot = new qx.ui.tree.TreeFolder("root"); this._tree.setRoot(tRoot); tRoot.setOpen(false); this.flush(); }, tearDown : function() { this.base(arguments); this._disposeObjects("_tree"); }, testGetPreviousSiblingOf : function() { var tRoot = this._tree.getRoot(); var item1 = new qx.ui.tree.TreeFile("1"); tRoot.add(item1); var item1_1 = new qx.ui.tree.TreeFile("1_1"); item1.add(item1_1); var item1_2 = new qx.ui.tree.TreeFile("1_2"); item1.add(item1_2); var item2 = new qx.ui.tree.TreeFile("2"); tRoot.add(item2); this.assertNull(this._tree.getPreviousSiblingOf(item1_1)); this.assertIdentical(item1, this._tree.getPreviousSiblingOf(item2)); }, testGetNextSiblingOf : function() { var tRoot = this._tree.getRoot(); var item1 = new qx.ui.tree.TreeFile("1"); tRoot.add(item1); var item1_1 = new qx.ui.tree.TreeFile("1_1"); item1.add(item1_1); var item1_2 = new qx.ui.tree.TreeFile("1_2"); item1.add(item1_2); var item2 = new qx.ui.tree.TreeFile("2"); tRoot.add(item2); this.assertNull(this._tree.getNextSiblingOf(item1_2)); this.assertIdentical(item2, this._tree.getNextSiblingOf(item1)); }, testGetNextNodeOf : function() { var tRoot = this._tree.getRoot(); var item1 = new qx.ui.tree.TreeFile("1"); tRoot.add(item1); var item1_1 = new qx.ui.tree.TreeFile("1_1"); item1.add(item1_1); var item1_2 = new qx.ui.tree.TreeFile("1_2"); item1.add(item1_2); var item2 = new qx.ui.tree.TreeFile("2"); tRoot.add(item2); this.assertIdentical(item1_1, this._tree.getNextNodeOf(item1)); this.assertIdentical(item1_2, this._tree.getNextNodeOf(item1_1)); this.assertNull(this._tree.getNextNodeOf(item2)); }, testGetNextNodeOfInvisible : function() { var tRoot = this._tree.getRoot(); tRoot.setOpen(true); var item1 = new qx.ui.tree.TreeFile("1"); tRoot.add(item1); var item1_1 = new qx.ui.tree.TreeFile("1_1"); item1.add(item1_1); var item1_2 = new qx.ui.tree.TreeFile("1_2"); item1.add(item1_2); var item2 = new qx.ui.tree.TreeFile("2"); tRoot.add(item2); this.assertIdentical(item2, this._tree.getNextNodeOf(item1, false)); item1.setOpen(true); this.assertIdentical(item1_1, this._tree.getNextNodeOf(item1, false)); }, testGetPreviousNodeOf : function() { var tRoot = this._tree.getRoot(); var item1 = new qx.ui.tree.TreeFile("1"); tRoot.add(item1); var item1_1 = new qx.ui.tree.TreeFile("1_1"); item1.add(item1_1); var item1_2 = new qx.ui.tree.TreeFile("1_2"); item1.add(item1_2); var item2 = new qx.ui.tree.TreeFile("2"); tRoot.add(item2); this.assertIdentical(item1_2, this._tree.getPreviousNodeOf(item2)); this.assertIdentical(item1_1, this._tree.getPreviousNodeOf(item1_2)); this.assertNull(this._tree.getPreviousNodeOf(tRoot)); }, testGetPreviousNodeOfInvisible : function() { var tRoot = this._tree.getRoot(); tRoot.setOpen(true); var item1 = new qx.ui.tree.TreeFile("1"); tRoot.add(item1); var item1_1 = new qx.ui.tree.TreeFile("1_1"); item1.add(item1_1); var item1_2 = new qx.ui.tree.TreeFile("1_2"); item1.add(item1_2); var item2 = new qx.ui.tree.TreeFile("2"); tRoot.add(item2); this.assertIdentical(item1, this._tree.getPreviousNodeOf(item2, false)); item1.setOpen(true); this.assertIdentical(item1_2, this._tree.getPreviousNodeOf(item2, false)); }, testAddBefore : function() { /* * root => add 2 before 3 => root * - 1 - 1 * - 3 - 2 * - 4 - 3 * - 4 */ var tRoot = this._tree.getRoot(); tRoot.setOpen(true); var item1 = new qx.ui.tree.TreeFile("1"); tRoot.add(item1); var item3 = new qx.ui.tree.TreeFile("3"); tRoot.add(item3); var item4 = new qx.ui.tree.TreeFile("4"); tRoot.add(item4); //this.info("before addBefore: " + this.__printChildren(tRoot.getChildren())); var item2 = new qx.ui.tree.TreeFile("2"); tRoot.addBefore(item2, item3); //this.info("after addBefore: " + this.__printChildren(tRoot.getChildren())); this.assertIdentical(item1, this._tree.getPreviousNodeOf(item2), "check: 1 before 2"); this.assertIdentical(item3, this._tree.getNextNodeOf(item2), "check: 3 after 2"); }, testAddAfter : function() { /* * root => add 2 after 1 => root * - 1 - 1 * - 3 - 2 * - 4 - 3 * - 4 */ var tRoot = this._tree.getRoot(); tRoot.setOpen(true); var item1 = new qx.ui.tree.TreeFile("1"); tRoot.add(item1); var item3 = new qx.ui.tree.TreeFile("3"); tRoot.add(item3); var item4 = new qx.ui.tree.TreeFile("4"); tRoot.add(item4); //this.info("before addAfter: " + this.__printChildren(tRoot.getChildren())); var item2 = new qx.ui.tree.TreeFile("2"); tRoot.addAfter(item2, item1); //this.info("after addAfter: " + this.__printChildren(tRoot.getChildren())); this.assertIdentical(item1, this._tree.getPreviousNodeOf(item2), "check: 1 before 2"); this.assertIdentical(item3, this._tree.getNextNodeOf(item2), "check: 3 after 2"); }, testChangeOrderWithAddBefore : function() { /* * root => add 1 before 3 => root * - 1 - 2 * - 2 - 1 * - 3 - 3 * - 4 - 4 */ var tRoot = this._tree.getRoot(); tRoot.setOpen(true); var item1 = new qx.ui.tree.TreeFile("1"); tRoot.add(item1); var item2 = new qx.ui.tree.TreeFile("2"); tRoot.add(item2); var item3 = new qx.ui.tree.TreeFile("3"); tRoot.add(item3); var item4 = new qx.ui.tree.TreeFile("4"); tRoot.add(item4); //this.info("before addBefore: " + this.__printChildren(tRoot.getChildren())); tRoot.addBefore(item1, item3); //this.info("after addBefore: " + this.__printChildren(tRoot.getChildren())); this.assertIdentical(item1, this._tree.getPreviousNodeOf(item3), "check: 1 before 3"); this.assertIdentical(item1, this._tree.getNextNodeOf(item2), "check: 1 after 2"); }, testChangeOrderWithAddAfter : function() { /* * root => add 1 after 3 => root * - 1 - 2 * - 2 - 3 * - 3 - 1 * - 4 - 4 */ var tRoot = this._tree.getRoot(); tRoot.setOpen(true); var item1 = new qx.ui.tree.TreeFile("1"); tRoot.add(item1); var item2 = new qx.ui.tree.TreeFile("2"); tRoot.add(item2); var item3 = new qx.ui.tree.TreeFile("3"); tRoot.add(item3); var item4 = new qx.ui.tree.TreeFile("4"); tRoot.add(item4); //this.info("before addAfter: " + this.__printChildren(tRoot.getChildren())); tRoot.addAfter(item1, item3); //this.info("after addAfter: " + this.__printChildren(tRoot.getChildren())); this.assertIdentical(item1, this._tree.getPreviousNodeOf(item4), "check: 1 before 4"); this.assertIdentical(item1, this._tree.getNextNodeOf(item3), "check: 1 after 3"); }, __printChildren : function(children) { var result = ""; for (var i = 0; i < children.length; i++) { result += children[i].getLabel(); if (i < children.length - 1) { result += "->"; } } return result; } } });