description(
"This test checks that constructor properties are not enumeratable, but are writable deletable."
);

function canEnum(object, propertyName)
{
    for (prop in object)
        if (prop == propertyName)
            return true;
    return false;
}

function checkConstructor(expression)
{
    shouldBe(expression + ".hasOwnProperty('constructor')", "true");
    shouldBe("canEnum(" + expression + ", 'constructor')", "false");
    shouldBe("x = " + expression + "; x.constructor = 4; x.constructor", "4");
    shouldBe("x = " + expression + "; delete x.constructor; x.hasOwnProperty('constructor')", "false");
}

checkConstructor("(function () { }).prototype");
function declaredFunction() { }
checkConstructor("declaredFunction.prototype");
checkConstructor("(new Function).prototype");

checkConstructor("Array.prototype");
checkConstructor("Boolean.prototype");
checkConstructor("Date.prototype");
checkConstructor("Error.prototype");
checkConstructor("EvalError.prototype");
checkConstructor("Function.prototype");
checkConstructor("Number.prototype");
checkConstructor("Object.prototype");
checkConstructor("RangeError.prototype");
checkConstructor("ReferenceError.prototype");
checkConstructor("RegExp.prototype");
checkConstructor("String.prototype");
checkConstructor("SyntaxError.prototype");
checkConstructor("TypeError.prototype");
checkConstructor("URIError.prototype");

checkConstructor("document.createTextNode('').__proto__");
