blob: 5676008a851dbbe53a382f6ff63ac8771e48b271 [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
function write(args)
{
WScript.Echo(args);
}
write("Test case 0");
(function() {
var test = function ()
{
var x = {
get value(){
return 20;
},
set value(val){
this._value = val;
}
}
x.value;
write(x.value);
}
test();
test();
})();
write("Test case 1");
(function() {
var test = function ()
{
var x = {
get value(){
return this._value;
},
set value(val){
this._value = val;
}
}
x.value = 10;
write(x.value);
}
test();
test();
})();
write("Test case 2");
(function() {
var test = function ()
{
var ab = {};
Object.defineProperty(ab,"foo",{get:function(){write("In getter"); return 10;}, configurable: true});
write(ab.foo);
}
test();
test();
})();
write("Test case 3");
(function() {
var test = function (alter)
{
var x = {
get value(){
return this._value;
},
set value(val){
this._value = val;
}
}
if(alter)
{
Object.defineProperty(x,"value",{value: 20, writable: true, enumerable: true, configurable: true});
}
write(x.value);
}
test(false);
test(true);
})();
write("Test case 4");
(function() {
var test = function (alter)
{
var x = {
_value : 10,
get value(){
return this._value;
},
set value(val){
this._value = val;
}
}
delete x.value;
write(x.value);
}
test();
test();
})();
write("Test case 5");
(function() {
var test = function (alter)
{
var x = {
_value : 10,
get value(){
return this._value;
},
set value(val){
this._value = val;
}
}
if(alter)
{
delete x.value;
}
write(x.value);
}
test(false);
test(true);
})();
write("Test case 6");
(function() {
var test = function (alter)
{
var x = {
_value : 25,
get value(){
return this._value;
},
set value(val){
this._value = val;
}
}
if(alter)
{
Object.defineProperty(x,"value",{get:function(){write("In getter");return 10;}, configurable: true});
}
write(x.value);
}
test(false);
test(true);
})();
write("Test case 7");
(function() {
var test = function ()
{
function foo(){ }
foo.prototype.value = 10;
var x = new foo();
Object.defineProperty(x,"value",{get:function(){write("In getter");return 10;}, configurable: true});
write(x.value);
}
test();
test();
})();
write("Test case 8");
(function() {
var test = function ()
{
function foo(){ }
foo.prototype.value = 10;
var x = new foo();
write(x.value);
Object.defineProperty(x,"value",{get:function(){write("In getter");return 10;}, configurable: true});
write(x.value);
}
test();
test();
})();
write("Test case 9");
(function() {
var test = function (alter)
{
function foo(){ }
if (alter)
{
foo.prototype.value = 10;
}
var x = new foo();
Object.defineProperty(x,"value",{get:function(){write("In getter");return 10;}, configurable: true});
write(x.value);
}
test(false);
test(true);
})();
write("Test case 10");
(function() {
var test = function (alter)
{
var x = {value: 10};
if (alter)
{
write(x.value);
}
Object.defineProperty(x,"value",{get:function(){write("In getter");return 10;}, configurable: true});
write(x.value);
}
test(false);
test(true);
})();
write("Test case 11");
(function() {
var test = function (alter)
{
var x = {};
Object.defineProperty(x,"value",{get:function(y){write("In getter");return 10 + y;}, configurable: true});
write(x.value);
}
test(false);
test(true);
})();