// Copyright 2009 the Sputnik authors.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
info: |
    The 0 property of the newly constructed object is set to item0
    (if supplied); the 1 property of the newly constructed object is set to item1
    (if supplied); and, in general, for as many arguments as there are, the k property
    of the newly constructed object is set to argument k, where the first argument is
    considered to be argument number 0
es5id: 15.4.2.1_A2.2_T1
description: Checking correct work this algorithm
---*/

//CHECK#
var x = new Array(
0,1,2,3,4,5,6,7,8,9,
10,11,12,13,14,15,16,17,18,19,
20,21,22,23,24,25,26,27,28,29,
30,31,32,33,34,35,36,37,38,39,
40,41,42,43,44,45,46,47,48,49,
50,51,52,53,54,55,56,57,58,59,
60,61,62,63,64,65,66,67,68,69,
70,71,72,73,74,75,76,77,78,79,
80,81,82,83,84,85,86,87,88,89,
90,91,92,93,94,95,96,97,98,99
);

for (var i = 0; i < 100; i++) {
  var result = true;
  if (x[i] !== i) {
    result = false;
  }
}

if (result !== true) {
  $ERROR('#1: x[i] === i. Actual: ' + (x[i]));
}
