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

/*---
info: |
    If P is not an array index, return
    (Create a property with name P, set its value to V and give it empty attributes)
es5id: 15.4.5.1_A2.1_T1
description: P in [4294967295, -1, true]
---*/

//CHECK#1
var x = [];
x[4294967295] = 1;
if (x.length !== 0) {
  $ERROR('#1.1: x = []; x[4294967295] = 1; x.length === 0. Actual: ' + (x.length));
}

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

//CHECK#2
x = [];
x[-1] = 1;
if (x.length !== 0) {
  $ERROR('#2.1: x = []; x[-1] = 1; x.length === 0. Actual: ' + (x.length));
}

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

//CHECK#3
x = [];
x[true] = 1;
if (x.length !== 0) {
  $ERROR('#3.1: x = []; x[true] = 1; x.length === 0. Actual: ' + (x.length));
}

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