@qooxdoo/framework
Version:
The JS Framework for Coders
187 lines (146 loc) • 5.06 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:
* Fabian Jakobs (fjakobs)
* Christian Hagendorn (chris_schmidt)
************************************************************************ */
qx.Class.define("qx.test.lang.Array", {
extend: qx.dev.unit.TestCase,
members: {
/**
* Array tests
*
*/
testAppend() {
this.assertNotUndefined(qx.lang.Array.append);
var a = [1, 2, 3];
qx.lang.Array.append(a, [4, 5, 6]);
this.assertJsonEquals(a, [1, 2, 3, 4, 5, 6]);
var a = [1, 2, 3];
qx.lang.Array.append(a, new qx.data.Array([4, 5, 6]));
this.assertJsonEquals(a, [1, 2, 3, 4, 5, 6]);
var a = new qx.data.Array([1, 2, 3]);
qx.lang.Array.append(a, [4, 5, 6]);
this.assertJsonEquals(a.toArray(), [1, 2, 3, 4, 5, 6]);
a.dispose();
var error = false;
try {
qx.lang.Array.append(a, 1);
} catch (ex) {
error = true;
}
this.assert(error);
},
testExclude() {
var a = [1, 2, 3, 4, 5];
qx.lang.Array.exclude(a, [2, 4]);
this.assertJsonEquals([1, 3, 5], a);
var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
qx.lang.Array.exclude(a, [1, 2, 3]);
this.assertJsonEquals([0, 4, 5, 6, 7, 8, 9], a);
var a = [1, 2, 3, 4, 5];
qx.lang.Array.exclude(a, new qx.data.Array([1, 3, 5]));
this.assertJsonEquals([2, 4], a);
var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
qx.lang.Array.exclude(a, new qx.data.Array([1, 2, 3]));
this.assertJsonEquals([0, 4, 5, 6, 7, 8, 9], a);
var a = new qx.data.Array([1, 2, 3, 4, 5]);
qx.lang.Array.exclude(a, [1, 3, 5]);
this.assertJsonEquals([2, 4], a.toArray());
a.dispose();
var a = new qx.data.Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
qx.lang.Array.exclude(a, [1, 2, 3]);
this.assertJsonEquals([0, 4, 5, 6, 7, 8, 9], a.toArray());
a.dispose();
},
testMinNumeric() {
var a = [-3, -2, -1, 0, 1, 2, 3];
var result = qx.lang.Array.min(a);
this.assertEquals(-3, result);
},
testMaxNumeric() {
var a = [-3, -2, -1, 0, 1, 2, 3];
var result = qx.lang.Array.max(a);
this.assertEquals(3, result);
},
testMinMixed() {
var a = [-3, -2, -1, 0, 1, 2, 3, "foo", "bar", undefined, null];
var result = qx.lang.Array.min(a);
this.assertEquals(-3, result);
},
testMaxMixed() {
var a = [-3, -2, -1, 0, 1, 2, 3, "foo", "bar", undefined, null];
var result = qx.lang.Array.max(a);
this.assertEquals(3, result);
},
testMinEmpty() {
var a = [];
var result = qx.lang.Array.min(a);
this.assertEquals(null, result);
},
testMaxEmpty() {
var a = [];
var result = qx.lang.Array.max(a);
this.assertEquals(null, result);
},
testRemove() {
var a = [-3, -2, -1, 0, 1, 2, 3];
qx.lang.Array.remove(a, 2);
this.assertJsonEquals(a, [-3, -2, -1, 0, 1, 3]);
this.assertEquals(6, a.length);
var da = new qx.data.Array([-3, -2, -1, 0, 1, 2, 3]);
qx.lang.Array.remove(da, 2);
this.assertJsonEquals(da.toArray(), [-3, -2, -1, 0, 1, 3]);
this.assertEquals(6, da.length);
},
testRemoveAt() {
var a = [-3, -2, -1, 0, 1, 2, 3];
qx.lang.Array.removeAt(a, 3);
this.assertJsonEquals(a, [-3, -2, -1, 1, 2, 3]);
this.assertEquals(6, a.length);
},
testRemoveAll() {
var a = [-3, -2, -1, 0, 1, 2, 3];
qx.lang.Array.removeAll(a);
this.assertJsonEquals(a, []);
this.assertEquals(0, a.length);
},
testContains() {
var a = [-3, -2, -1, 0, 1, 2, 3];
var da = new qx.data.Array(a);
this.assertTrue(a.includes(-2));
this.assertFalse(a.includes(-10));
this.assertTrue(da.includes(-2));
this.assertFalse(da.includes(-10));
da.dispose();
},
testEquals() {
var a = [-3, -2, -1, 0, 1, 2, 3];
var da = new qx.data.Array(a);
this.assertFalse(da.toArray() === a);
this.assertTrue(qx.lang.Array.equals(a, da));
this.assertTrue(qx.lang.Array.equals(da, a));
this.assertFalse(qx.lang.Array.equals(a, [4, 5, 6]));
},
testReplace() {
var a = [1, 2, 3];
var tmp = qx.lang.Array.replace(a, ["one", "two", "three"]);
this.assertTrue(a === tmp);
this.assertArrayEquals(["one", "two", "three"], a);
},
testToNativeArray() {
var da = new qx.data.Array([1, 2, 3]);
var na = qx.lang.Array.toNativeArray(da);
this.assertTrue(da.toArray() === na);
na = qx.lang.Array.toNativeArray(da, true);
this.assertTrue(da.toArray() !== na);
this.assertArrayEquals([1, 2, 3], na);
}
}
});