@qooxdoo/framework
Version:
The JS Framework for Coders
326 lines (251 loc) • 10.6 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2004-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:
* Martin Wittemann (martinwittemann)
* Mustafa Sak (msak)
************************************************************************ */
qx.Class.define("qx.test.ui.command.Command",
{
extend : qx.dev.unit.TestCase,
include : qx.dev.unit.MMock,
members :
{
__cmd : null,
__button : null,
__toolbarButton : null,
__menuButton : null,
setUp : function()
{
this.__cmd = new qx.ui.command.Command();
this.__button = new qx.ui.form.Button("a");
this.__button.setCommand(this.__cmd);
this.__toolbarButton = new qx.ui.toolbar.Button("b");
this.__toolbarButton.setCommand(this.__cmd);
this.__menuButton = new qx.ui.menu.Button("c");
this.__menuButton.setCommand(this.__cmd);
qx.locale.Manager.getInstance().setLocale("en");
},
tearDown : function()
{
this.__cmd.dispose();
this.__button.destroy();
this.__toolbarButton.destroy();
this.__menuButton.destroy();
qx.locale.Manager.getInstance().resetLocale();
},
testLabel : function()
{
// set a label
this.__cmd.setLabel("a");
this.assertEquals(this.__cmd.getLabel(), this.__button.getLabel());
this.assertEquals(this.__cmd.getLabel(), this.__toolbarButton.getLabel());
this.assertEquals(this.__cmd.getLabel(), this.__menuButton.getLabel());
// set null
this.__cmd.setLabel(null);
this.assertEquals(this.__cmd.getLabel(), this.__button.getLabel());
this.assertEquals(this.__cmd.getLabel(), this.__toolbarButton.getLabel());
this.assertEquals(this.__cmd.getLabel(), this.__menuButton.getLabel());
// set a second string
this.__cmd.setLabel("b");
this.assertEquals(this.__cmd.getLabel(), this.__button.getLabel());
this.assertEquals(this.__cmd.getLabel(), this.__toolbarButton.getLabel());
this.assertEquals(this.__cmd.getLabel(), this.__menuButton.getLabel());
// reset
this.__cmd.resetLabel();
this.assertEquals(this.__cmd.getLabel(), this.__button.getLabel());
this.assertEquals(this.__cmd.getLabel(), this.__toolbarButton.getLabel());
this.assertEquals(this.__cmd.getLabel(), this.__menuButton.getLabel());
},
testEnabled : function()
{
this.skip("Skipped because not relevant anymore");
// set disabled
this.__cmd.setEnabled(false);
this.assertEquals(this.__cmd.getEnabled(), this.__button.getEnabled());
this.assertEquals(this.__cmd.getEnabled(), this.__toolbarButton.getEnabled());
this.assertEquals(this.__cmd.getEnabled(), this.__menuButton.getEnabled());
// set enabled
this.__cmd.setEnabled(true);
this.assertEquals(this.__cmd.getEnabled(), this.__button.getEnabled());
this.assertEquals(this.__cmd.getEnabled(), this.__toolbarButton.getEnabled());
this.assertEquals(this.__cmd.getEnabled(), this.__menuButton.getEnabled());
},
testIcon : function()
{
// set a string
this.__cmd.setIcon("a");
this.assertEquals(this.__cmd.getIcon(), this.__button.getIcon());
this.assertEquals(this.__cmd.getIcon(), this.__toolbarButton.getIcon());
this.assertEquals(this.__cmd.getIcon(), this.__menuButton.getIcon());
// set null
this.__cmd.setIcon(null);
this.assertEquals(this.__cmd.getIcon(), this.__button.getIcon());
this.assertEquals(this.__cmd.getIcon(), this.__toolbarButton.getIcon());
this.assertEquals(this.__cmd.getIcon(), this.__menuButton.getIcon());
// set a second string
this.__cmd.setIcon("b");
this.assertEquals(this.__cmd.getIcon(), this.__button.getIcon());
this.assertEquals(this.__cmd.getIcon(), this.__toolbarButton.getIcon());
this.assertEquals(this.__cmd.getIcon(), this.__menuButton.getIcon());
// reset
this.__cmd.resetIcon();
this.assertEquals(this.__cmd.getIcon(), this.__button.getIcon());
this.assertEquals(this.__cmd.getIcon(), this.__toolbarButton.getIcon());
this.assertEquals(this.__cmd.getIcon(), this.__menuButton.getIcon());
},
testToolTipText : function()
{
// set a string
this.__cmd.setToolTipText("a");
this.assertEquals(this.__cmd.getToolTipText(), this.__button.getToolTipText());
this.assertEquals(this.__cmd.getToolTipText(), this.__toolbarButton.getToolTipText());
this.assertEquals(this.__cmd.getToolTipText(), this.__menuButton.getToolTipText());
// set null
this.__cmd.setIcon(null);
this.assertEquals(this.__cmd.getToolTipText(), this.__button.getToolTipText());
this.assertEquals(this.__cmd.getToolTipText(), this.__toolbarButton.getToolTipText());
this.assertEquals(this.__cmd.getToolTipText(), this.__menuButton.getToolTipText());
// set a second string
this.__cmd.setIcon("b");
this.assertEquals(this.__cmd.getToolTipText(), this.__button.getToolTipText());
this.assertEquals(this.__cmd.getToolTipText(), this.__toolbarButton.getToolTipText());
this.assertEquals(this.__cmd.getToolTipText(), this.__menuButton.getToolTipText());
// reset
this.__cmd.resetIcon();
this.assertEquals(this.__cmd.getToolTipText(), this.__button.getToolTipText());
this.assertEquals(this.__cmd.getToolTipText(), this.__toolbarButton.getToolTipText());
this.assertEquals(this.__cmd.getToolTipText(), this.__menuButton.getToolTipText());
},
testRemoveCommand : function()
{
// remove the command (has been set in the setUp method)
this.__button.setCommand(null);
this.__toolbarButton.setCommand(null);
this.__menuButton.setCommand(null);
// set a label
this.__cmd.setLabel("x");
// check if the label has been set
this.assertEquals("a", this.__button.getLabel());
this.assertEquals("b", this.__toolbarButton.getLabel());
this.assertEquals("c", this.__menuButton.getLabel());
},
testValue : function()
{
var menuCheckBox = new qx.ui.menu.CheckBox();
var menuRadioButton = new qx.ui.menu.RadioButton();
var toggleButton = new qx.ui.form.ToggleButton();
// set the command
menuRadioButton.setCommand(this.__cmd);
menuCheckBox.setCommand(this.__cmd);
toggleButton.setCommand(this.__cmd);
// set the value
this.__cmd.setValue(true);
this.assertEquals(this.__cmd.getValue(), menuCheckBox.getValue());
this.assertEquals(this.__cmd.getValue(), menuRadioButton.getValue());
this.assertEquals(this.__cmd.getValue(), toggleButton.getValue());
// set the value
this.__cmd.setValue(false);
this.assertEquals(this.__cmd.getValue(), menuCheckBox.getValue());
this.assertEquals(this.__cmd.getValue(), menuRadioButton.getValue());
this.assertEquals(this.__cmd.getValue(), toggleButton.getValue());
toggleButton.dispose();
menuCheckBox.dispose();
menuRadioButton.dispose();
},
testMenu : function()
{
var splitButton = new qx.ui.form.SplitButton();
splitButton.setCommand(this.__cmd);
var menu = new qx.ui.menu.Menu();
// set the menu
this.__cmd.setMenu(menu);
this.assertEquals(menu, splitButton.getMenu());
this.assertEquals(menu, this.__menuButton.getMenu());
// reset the menu
this.__cmd.resetMenu();
this.assertNull(splitButton.getMenu());
this.assertNull(this.__menuButton.getMenu());
splitButton.dispose();
menu.destroy();
},
testInit : function()
{
// check if the init values after setting the command was added
this.assertEquals("a", this.__button.getLabel());
this.assertEquals("b", this.__toolbarButton.getLabel());
this.assertEquals("c", this.__menuButton.getLabel());
// add a new command
var cmd = new qx.ui.command.Command();
cmd.setLabel("x");
this.__button.setCommand(cmd);
this.__toolbarButton.setCommand(cmd);
this.__menuButton.setCommand(cmd);
this.assertEquals(cmd.getLabel(), this.__button.getLabel());
this.assertEquals(cmd.getLabel(), this.__toolbarButton.getLabel());
this.assertEquals(cmd.getLabel(), this.__menuButton.getLabel());
cmd.dispose();
},
testIconAsToolTipText : function() {
// for [BUG #4534]
var cmd = new qx.ui.command.Command("Control+D");
cmd.setToolTipText("affe");
var button1 = new qx.ui.form.Button("x", "y");
button1.setCommand(cmd);
this.assertEquals("affe", button1.getToolTipText());
button1.dispose();
cmd.dispose();
},
testDestructExecutable : function() {
// Create the command
var cmd = new qx.ui.command.Command("Meta+T");
// Create a button linked to cmd
var button = new qx.ui.form.Button("Command button", null,cmd);
cmd.setEnabled(false);
button.destroy();
// make sure the dispose queue is flushed
qx.ui.core.queue.Manager.flush();
cmd.setEnabled(true);
cmd.dispose();
// test makes sure that code is running, no assert needed
},
testFireExecuteCount : function()
{
var handler = this.spy();
// Create the command
var cmd = new qx.ui.command.Command("Meta+T");
cmd.addListener("execute", handler);
cmd.setEnabled(false);
cmd.setActive(false);
cmd.execute();
this.assertCallCount(handler, 0);
cmd.setEnabled(true);
cmd.setActive(false);
cmd.execute();
this.assertCallCount(handler, 0);
cmd.setEnabled(true);
cmd.setActive(true);
cmd.execute();
this.assertCallCount(handler, 1);
cmd.dispose();
},
testGetShortcut : function() {
// for bug #7036
var cmd = new qx.ui.command.Command("Control+X");
this.assertEquals('Control+X', cmd.getShortcut());
cmd.dispose();
},
testShortCutToString : function() {
// for bug #8465
var cmd = new qx.ui.command.Command("Ctrl+X");
this.assertEquals("Ctrl+X", cmd.toString());
cmd.dispose();
this.assertEquals("qx.ui.command.Command[undefined]",cmd.toString());
}
}
});