// Copyright (c) 2012 Ecma International.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
es5id: 15.2.3.7-6-a-185
description: >
    Object.defineProperties - TypeError is thrown if 'O' is an Array,
    'P' is an array index named property,[[Writable]] attribute of the
    length property in 'O' is false, value of 'P' is bigger than value
    of the length property in 'O'  (15.4.5.1 step 4.b)
---*/

        var arr = [1, 2, 3];

        Object.defineProperty(arr, "length", {
            writable: false
        });
assert.throws(TypeError, function() {
            Object.defineProperties(arr, {
                "4": {
                    value: "abc"
                }
            });
});
assert.sameValue(arr[0], 1, 'arr[0]');
assert.sameValue(arr[1], 2, 'arr[1]');
assert.sameValue(arr[2], 3, 'arr[2]');
assert.sameValue(arr.hasOwnProperty("3"), false, 'arr.hasOwnProperty("3")');
assert.sameValue(arr.hasOwnProperty("4"), false, 'arr.hasOwnProperty("4")');
