ES5Harness.registerTest({

    id: "15.4.4.16-7-c-i-21",

    path: "TestCases/chapter15/15.4/15.4.4/15.4.4.16/15.4.4.16-7-c-i-21.js",

    description: "Array.prototype.every - element to be retrieved is inherited accessor property without a get function on an Array-like object",

    test: function testcase() {

        var accessed = false;

        function callbackfn(val, idx, obj) {
            accessed = true;
            return typeof val === "undefined";
        }

        var proto = {};
        Object.defineProperty(proto, "1", {
            set: function () { },
            configurable: true
        });

        var Con = function () { };
        Con.prototype = proto;

        var child = new Con();
        child.length = 2;

        return Array.prototype.every.call(child, callbackfn) && accessed;
    },

    precondition: function prereq() {
        return fnExists(Array.prototype.every) && fnExists(Object.defineProperty) && fnSupportsArrayIndexGettersOnObjects();
    }
});
