@qooxdoo/framework
Version:
The JS Framework for Coders
333 lines (290 loc) • 9.12 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() {
// Do nothing
},
// overridden
testSetSelection() {
super.testSetSelection();
// 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() {
// 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() {
// 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() {
// 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() {
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() {
// 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() {
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() {
var itemToRemove = this._notInSelection[0];
var widget = this._widget;
this.assertEventNotFired(
widget,
"changeSelection",
function () {
widget.removeFromSelection(itemToRemove);
},
function (event) {},
"'changeSelection' event fired!"
);
},
testInvertSelection() {
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() {
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() {
// 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"
);
}
}
});