UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

157 lines (124 loc) 4.55 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2011 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: * Alexander Steitz (aback) ************************************************************************ */ qx.Class.define("qx.test.ui.form.RadioGroup", { extend: qx.test.ui.LayoutTestCase, members: { setUp() { this.__radioGroup = new qx.ui.form.RadioGroup(); this.__radioGroup.setAllowEmptySelection(true); this.__radioButtons = []; var radioButton; for (var i = 0, j = 3; i < j; i++) { radioButton = new qx.ui.form.RadioButton("option " + i); radioButton.setModel("option" + i); this.__radioButtons.push(radioButton); this.__radioGroup.add(radioButton); } }, tearDown() { super.tearDown(); var radioButton; for (var i = 0, j = this.__radioButtons.length; i < j; i++) { this.__radioGroup.remove(this.__radioButtons[i]); radioButton = this.__radioButtons.shift(); radioButton.dispose(); } this.__radioGroup.dispose(); this.__radioButtons = null; }, testHiddenRadioButtons() { var composite = new qx.ui.container.Composite(); for (var i = 0, j = this.__radioButtons.length; i < j; i++) { composite.add(this.__radioButtons[i]); } this.getRoot().add(composite, { left: 100, top: 50 }); // check the 'modelSelection' with all radio buttons visible this.__radioGroup.setModelSelection([this.__radioButtons[1].getModel()]); this.assertEquals( this.__radioButtons[1].getModel(), this.__radioGroup.getModelSelection().getItem(0), "Model selection does not work correctly!" ); this.assertTrue( this.__radioGroup.isSelected(this.__radioButtons[1]), "Wrong radio button selected!" ); // now hide the radio group and check if the selection change still works for (var i = 0, j = this.__radioButtons.length; i < j; i++) { this.__radioButtons[i].exclude(); } this.__radioGroup.setModelSelection([this.__radioButtons[0].getModel()]); this.assertEquals( this.__radioButtons[0].getModel(), this.__radioGroup.getModelSelection().getItem(0), "Model selection does not work correctly!" ); this.assertTrue( this.__radioGroup.isSelected(this.__radioButtons[0]), "Hidden radio button not selected!" ); composite.destroy(); }, /** * @ignore(qx.test.ui.form.RadioGroupTest) */ testAlteredGroupProperty() { qx.Class.define("qx.test.ui.form.RadioGroupTest", { extend: qx.core.Object, properties: { locked: { init: false, check: "Boolean", event: "changeLocked", nullable: false }, // set by the RadioGroup lockedGroup: { init: null, check: "qx.ui.form.RadioGroup", nullable: true } } }); var rg; var testObj1, testObj2, testObj3; rg = new qx.ui.form.RadioGroup(); rg.set({ groupedProperty: "locked", groupProperty: "lockedGroup" }); testObj1 = new qx.test.ui.form.RadioGroupTest(); testObj2 = new qx.test.ui.form.RadioGroupTest(); testObj3 = new qx.test.ui.form.RadioGroupTest(); // Add the test objects to the radio group. This should automatically // select the first one. rg.add(testObj1, testObj2, testObj3); // Ensure it did and the other ones are off this.assertTrue(testObj1.getLocked()); this.assertFalse(testObj2.getLocked()); this.assertFalse(testObj3.getLocked()); // Select the second one. rg.setSelection([testObj2]); // Ensure it's now on and the other ones are off this.assertTrue(testObj2.getLocked()); this.assertFalse(testObj1.getLocked()); this.assertFalse(testObj3.getLocked()); // Also ensure that the selection is as we expect this.assertEquals(rg.getSelection()[0], testObj2); // Clean up testObj1.dispose(); testObj2.dispose(); testObj3.dispose(); qx.Class.undefine("qx.test.ui.form.RadioGroupTest"); } } });