@qooxdoo/framework
Version:
The JS Framework for Coders
250 lines (208 loc) • 8.36 kB
JavaScript
/* ************************************************************************
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:
* Christian Hagendorn (chris_schmidt)
************************************************************************ */
qx.Class.define("qx.test.ui.selection.AbstractMultiSelectonTest",
{
extend : qx.test.ui.selection.AbstractSingleSelectonTest,
type : "abstract",
members :
{
testSetSelectionWithTooMuchElements : function()
{
// Do nothing
},
// overridden
testSetSelection : function()
{
this.base(arguments);
// Sets up the new selection
var selection = [];
selection[0] = this._notInSelection[0];
selection[1] = this._notInSelection[1];
selection[2] = this._notInSelection[2];
selection[3] = this._notInSelection[3];
selection[4] = this._notInSelection[4];
this._testSetSelection(selection);
this.flush();
},
testSetSelectionOverrideWithLess : function()
{
// Sets up the new selection
this._selection = [];
this._selection[0] = this._notInSelection[0];
this._selection[1] = this._notInSelection[1];
this._selection[2] = this._notInSelection[2];
this._selection[3] = this._notInSelection[3];
this._selection[4] = this._notInSelection[4];
this._widget.setSelection(this._selection);
this.flush();
// Test setSelection() with the same elements, but less
var expected = [this._selection[0], this._selection[2],
this._selection[4]];
this._widget.setSelection(expected);
// Tests the result from "getSelection"
var result = this._widget.getSelection();
this._assertArrayEquals(expected, result, "Selection is wrong");
// Test setSelection(), with one element from the selection before
this._widget.setSelection(this._selection);
this._widget.setSelection([this._selection[0]]);
result = this._widget.getSelection();
expected = [this._selection[0]];
this._assertArrayEquals(expected, result, "Selection is wrong");
this.flush();
},
testSelectAll : function()
{
// Resets the selection to compare the results.
this._widget.resetSelection();
// Tests event and select all items
var widget = this._widget;
var that = this;
this.assertEventFired(widget, "changeSelection", function () {
widget.selectAll();
that.flush();
}, function(event) {
// Tests the result from the event
that._assertArrayEquals(that._getChildren(), event.getData(),
"Selection is wrong!");
}, "'changeSelection' event not fired!");
// A second selectAll() shouldn't fire an event
this.assertEventNotFired(widget, "changeSelection", function () {
widget.selectAll();
}, function(event) {}, "'changeSelection' event fired!");
// Tests the result from "getSelection"
this._selection = this._widget.getSelection();
this._assertArrayEquals(this._getChildren(), this._selection,
"Selection is wrong!");
},
testAddToSelection : function()
{
// Sets up a new item for selection
var newValue = this._notInSelection[0];
this._selection[this._selection.length] = newValue;
// Tests event and adds item to the selection
var widget = this._widget;
var that = this;
this.assertEventFired(widget, "changeSelection", function () {
widget.addToSelection(newValue);
that.flush();
}, function(event) {
// Tests the result from the event
that._assertArrayEquals(that._selection, event.getData(),
"The result of the selection is wrong");
}, "'changeSelection' event not fired!");
// A second selection shouldn't fire an event
this.assertEventNotFired(widget, "changeSelection", function () {
widget.addToSelection(newValue);
}, function(event) {}, "'changeSelection' event fired!");
// Tests the result from "getSelection"
this._assertArrayEquals(this._selection, this._widget.getSelection(),
"Selection is wrong");
},
testAddToSelectionWithNotChildElement : function()
{
var that = this;
var testElement = this._createTestElement("Test Element");
this.assertException(function() {
that._widget.addToSelection(testElement);
}, Error, null, "No error occurs by trying to add an element" +
" to the selection which isn't a child element!");
testElement.destroy();
},
testRemoveFromSelection : function()
{
// Sets up the item to remove and update the selection array
var selection = this._selection;
var itemToRemove = selection[selection.length - 1];
delete selection[selection.length - 1];
selection.length = selection.length - 1;
// Tests event and removes the item
var widget = this._widget;
var that = this;
this.assertEventFired(widget, "changeSelection", function () {
widget.removeFromSelection(itemToRemove);
that.flush();
}, function(event) {
// Tests the result from the event
that._assertArrayEquals(that._selection, event.getData(),
"The result of the selection is wrong");
}, "'changeSelection' event not fired!");
// Tests the result from "getSelection"
this._assertArrayEquals(this._selection, this._widget.getSelection(),
"Selection is wrong");
},
testRemoveFromSelectionWithNotChildElement : function()
{
var that = this;
var testElement = this._createTestElement("Test Element");
this.assertException(function() {
that._widget.removeFromSelection(testElement);
}, Error, null, "No error occurs by trying to remove an element" +
" which isn't a child element!");
testElement.destroy();
},
testRemoveFromSelectionWithNotSelectedElement : function()
{
var itemToRemove = this._notInSelection[0];
var widget = this._widget;
this.assertEventNotFired(widget, "changeSelection", function () {
widget.removeFromSelection(itemToRemove);
}, function(event) {}, "'changeSelection' event fired!");
},
testInvertSelection : function()
{
var that = this;
var widget = this._widget;
this.assertEventFired(widget, "changeSelection", function () {
widget.invertSelection();
that.flush();
}, function(event) {
// Tests the result from the event
that._assertArrayEquals(that._notInSelection, event.getData(),
"The result of the selection is wrong");
}, "'changeSelection' event not fired!");
// Tests the result from "getSelection"
this._assertArrayEquals(this._notInSelection, this._widget.getSelection(),
"Selection is wrong");
},
testInvertSelectionWithErrors : function()
{
var widget = this._widget;
widget.setSelectionMode("single");
this.assertException(function() {
widget.invertSelection();
}, Error, null, "No error occurs by trying to invert elements" +
" in 'single' selection mode!");
},
testInvertSelectionWithDisabledChildElements : function()
{
// test setup
var tempNotInSelection = [];
for (var i = 0; i < this._notInSelection.length; i++) {
tempNotInSelection.push(this._notInSelection[i]);
}
this._notInSelection = tempNotInSelection;
var that = this;
var widget = this._widget;
this.assertEventFired(widget, "changeSelection", function () {
widget.invertSelection();
that.flush();
}, function(event) {
// Tests the result from the event
that._assertArrayEquals(that._notInSelection, event.getData(),
"The result of the selection is wrong");
}, "'changeSelection' event not fired!");
// Tests the result from "getSelection"
this._assertArrayEquals(this._notInSelection, this._widget.getSelection(),
"Selection is wrong");
}
}
});