// 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]));    
}
