Fix the indexing of Array builtin functions.
The index-dependant builtins didn't handle correctly the positive Infinity value. JerryScript-DCO-1.0-Signed-off-by: Zsolt Borbély zsborbely.u-szeged@partner.samsung.com
This commit is contained in:
@@ -33,6 +33,10 @@ var index = array.indexOf(obj);
|
||||
assert(index === 3);
|
||||
assert(array[index] === obj);
|
||||
|
||||
assert(array.indexOf("foo", NaN) === 0);
|
||||
assert(array.indexOf("foo", Infinity) === -1);
|
||||
assert(array.indexOf("foo", -Infinity) === 0);
|
||||
|
||||
// Checking behavior when length is zero
|
||||
var obj = { indexOf : Array.prototype.indexOf, length : 0 };
|
||||
assert(obj.indexOf("foo") === -1);
|
||||
|
||||
@@ -33,6 +33,10 @@ var index = array.lastIndexOf(obj);
|
||||
assert(index === 3);
|
||||
assert(array[index] === obj);
|
||||
|
||||
assert(array.lastIndexOf("foo", NaN) === 0);
|
||||
assert(array.lastIndexOf("foo", Infinity) === 4);
|
||||
assert(array.lastIndexOf("foo", -Infinity) === -1);
|
||||
|
||||
var arr = [];
|
||||
arr[4294967294] = "foo";
|
||||
assert(arr.lastIndexOf("foo", -1) === 4294967294)
|
||||
|
||||
@@ -20,6 +20,9 @@ var array2 = array.slice("a", "3");
|
||||
var array3 = array.slice(-2);
|
||||
var array4 = array.slice(-12, undefined);
|
||||
var array5 = array.slice(undefined, -3);
|
||||
var array6 = array.slice(Infinity, NaN);
|
||||
var array7 = array.slice(-Infinity, Infinity);
|
||||
var array8 = array.slice(NaN, -Infinity);
|
||||
|
||||
assert (array1.length == 4);
|
||||
assert (array1[0] == 54);
|
||||
@@ -45,6 +48,16 @@ assert (array4[3] == -127);
|
||||
assert (array5.length == 1);
|
||||
assert (array5[0] == 54);
|
||||
|
||||
assert (array6.length == 0);
|
||||
|
||||
assert (array7.length == 4);
|
||||
assert (array7[0] == 54);
|
||||
assert (array7[1] == undefined);
|
||||
assert (array7[2] == "Lemon");
|
||||
assert (array7[3] == -127);
|
||||
|
||||
assert (array8.length == 0);
|
||||
|
||||
// Checking behavior when unable to get length
|
||||
var obj = { slice : Array.prototype.slice };
|
||||
Object.defineProperty(obj, 'length', { 'get' : function () { throw new ReferenceError ("foo"); } });
|
||||
|
||||
@@ -88,6 +88,37 @@ assert (array[3] == -127);
|
||||
assert (array[4] == "sunshine");
|
||||
assert (array6.length == 0);
|
||||
|
||||
// --------------------------------------------------------
|
||||
array = setDefaultValues();
|
||||
var array7 = array.splice(Infinity, NaN);
|
||||
assert (array.length == 4);
|
||||
assert (array[0] == 54);
|
||||
assert (array[1] == undefined);
|
||||
assert (array[2] == -127);
|
||||
assert (array[3] == "sunshine");
|
||||
assert (array7.length == 0);
|
||||
|
||||
// --------------------------------------------------------
|
||||
array = setDefaultValues();
|
||||
var array8 = array.splice(-Infinity, Infinity);
|
||||
|
||||
assert (array.length == 0);
|
||||
assert (array8.length == 4);
|
||||
assert (array8[0] == 54);
|
||||
assert (array8[1] == undefined);
|
||||
assert (array8[2] == -127);
|
||||
assert (array8[3] == "sunshine");
|
||||
|
||||
// --------------------------------------------------------
|
||||
array = setDefaultValues();
|
||||
var array9 = array.splice(NaN, -Infinity);
|
||||
assert (array.length == 4);
|
||||
assert (array[0] == 54);
|
||||
assert (array[1] == undefined);
|
||||
assert (array[2] == -127);
|
||||
assert (array[3] == "sunshine");
|
||||
assert (array9.length == 0);
|
||||
|
||||
// Checking behavior when unable to get length
|
||||
var obj = {splice : Array.prototype.splice};
|
||||
Object.defineProperty(obj, 'length', { 'get' : function () { throw new ReferenceError ("foo"); } });
|
||||
|
||||
Reference in New Issue
Block a user