UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

307 lines (253 loc) 7.34 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2012 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 (wittemann) ************************************************************************ */ /** * @require(qx.lang.normalize.Array) */ qx.Class.define("qx.test.lang.normalize.Array", { extend: qx.dev.unit.TestCase, include: [qx.dev.unit.MMock], members: { testShims() { var testArray = ["entry1", "entry2"]; for (var index in testArray) { this.assertTrue(index == 0 || index == 1); } }, testIndexOf() { var obj = {}; var arr = [1, obj, "str", 1]; this.assertEquals(0, arr.indexOf(1)); this.assertEquals(1, arr.indexOf(obj)); this.assertEquals(2, arr.indexOf("str")); this.assertEquals(-1, arr.indexOf(0)); }, testLastIndexOf() { var obj = {}; var arr = [1, obj, "str", 1]; this.assertEquals(3, arr.lastIndexOf(1)); this.assertEquals(1, arr.lastIndexOf(obj)); this.assertEquals(2, arr.lastIndexOf("str")); this.assertEquals(-1, arr.lastIndexOf(0)); }, testForEach() { var obj = {}; var arr = [1, obj, "str", 1]; arr[10] = 12; var values = []; var indexes = []; arr.forEach(function (element, index, array) { values[index] = element; indexes.push(index); this.assertEquals(arr, array); }, this); this.assertArrayEquals(arr, values); this.assertArrayEquals([0, 1, 2, 3, 10], indexes); }, testFilter() { var arr = [1, 2, 3, 4]; arr[10] = 11; var values = []; var indexes = []; var odd = arr.filter(function (element, index, array) { values[index] = element; indexes.push(index); this.assertEquals(arr, array); return index % 2 == 1; }, this); this.assertArrayEquals(arr, values); this.assertArrayEquals([0, 1, 2, 3, 10], indexes); this.assertArrayEquals([2, 4], odd); }, testMap() { var arr = [1, 2, 3, 4]; arr[10] = 11; var values = []; var indexes = []; var result = arr.map(function (element, index, array) { values[index] = element; indexes.push(index); this.assertEquals(arr, array); return element + 1; }, this); var expected = [2, 3, 4, 5]; expected[10] = 12; this.assertArrayEquals(expected, result); this.assertArrayEquals(arr, values); this.assertArrayEquals([0, 1, 2, 3, 10], indexes); }, testSome() { var arr = [1, 2, 3, 4]; arr[10] = 11; var values = []; var indexes = []; var result = arr.some(function (element, index, array) { values[index] = element; indexes.push(index); this.assertEquals(arr, array); }, this); this.assertFalse(result); this.assertArrayEquals(arr, values); this.assertArrayEquals([0, 1, 2, 3, 10], indexes); this.assertTrue( arr.some(function (element) { return element == 3; }) ); this.assertFalse( arr.some(function (element, index) { return index == 6; }) ); }, testFind() { var arr = [1, 2, 3, 4]; arr[10] = 11; var values = []; var indexes = []; var result = arr.find(function (element, index, array) { values[index] = element; indexes.push(index); this.assertEquals(arr, array); }, this); this.assertUndefined(result); this.assertArrayEquals(arr, values); this.assertArrayEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], indexes); this.assertEquals( arr.find(function (element) { return element == 3; }), 3 ); this.assertUndefined( arr.find(function (element, index) { return index == 6; }) ); }, testFindIndex() { var arr = [1, 2, 3, 4]; arr[10] = 11; var values = []; var indexes = []; var result = arr.findIndex(function (element, index, array) { values[index] = element; indexes.push(index); this.assertEquals(arr, array); }, this); this.assertEquals(result, -1); this.assertArrayEquals(arr, values); this.assertArrayEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], indexes); this.assertEquals( arr.findIndex(function (element) { return element == 3; }), 2 ); this.assertEquals( arr.findIndex(function (element, index) { return element == 6; }), -1 ); }, testEvery() { var arr = [1, 2, 3, 4]; arr[10] = 11; var values = []; var indexes = []; var result = arr.every(function (element, index, array) { values[index] = element; indexes.push(index); this.assertEquals(arr, array); return true; }, this); this.assertTrue(result); this.assertArrayEquals(arr, values); this.assertArrayEquals([0, 1, 2, 3, 10], indexes); this.assertFalse( arr.every(function (element) { return element == 3; }) ); this.assertTrue( arr.every(function (element, index) { return element == index + 1; }) ); }, testReduce() { this.assertEquals( 10, [].reduce(function () {}, 10) ); var spy = this.spy(); [1].reduce(spy, 10); this.assertCalledWith(spy, 10, 1, 0, [1]); this.assertEquals( 6, [1, 2, 3].reduce(function (a, b) { return a + b; }, 0) ); this.assertArrayEquals( [0, 1, 2, 3, 4], [ [1, 2], [3, 4] ].reduce( function (a, b) { return a.concat(b); }, [0] ) ); }, testReduceRight() { this.assertEquals( 10, [].reduceRight(function () {}, 10) ); var spy = this.spy(); [1].reduceRight(spy, 10); this.assertCalledWith(spy, 10, 1, 0, [1]); this.assertEquals( 6, [1, 2, 3].reduceRight(function (a, b) { return a + b; }, 0) ); this.assertArrayEquals( [0, 3, 4, 1, 2], [ [1, 2], [3, 4] ].reduceRight( function (a, b) { return a.concat(b); }, [0] ) ); }, testIncludes() { var arr = ["one", "two", "three"]; this.assertTrue(arr.includes("one"), "includes does not work!"); this.assertTrue(arr.includes("two"), "includes does not work!"); this.assertTrue(arr.includes("three"), "includes does not work!"); this.assertFalse(arr.includes("four"), "includes does not work!"); arr = [NaN]; this.assertTrue(arr.includes(NaN), "includes does not work!"); arr = []; this.assertFalse(arr.includes("one"), "includes does not work!"); } } });