text: //-------------------------------------------------------------------------------------------------------
  // 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);
  })();
  
  try {
    eval("({ g\\u0065t foo() {} })");
    write("Get and set cannot contain unicode escapes");
  } catch {}
  