setget.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. function write(args)
  6. {
  7. WScript.Echo(args);
  8. }
  9. write("Test case 0");
  10. (function() {
  11. var test = function ()
  12. {
  13. var x = {
  14. get value(){
  15. return 20;
  16. },
  17. set value(val){
  18. this._value = val;
  19. }
  20. }
  21. x.value;
  22. write(x.value);
  23. }
  24. test();
  25. test();
  26. })();
  27. write("Test case 1");
  28. (function() {
  29. var test = function ()
  30. {
  31. var x = {
  32. get value(){
  33. return this._value;
  34. },
  35. set value(val){
  36. this._value = val;
  37. }
  38. }
  39. x.value = 10;
  40. write(x.value);
  41. }
  42. test();
  43. test();
  44. })();
  45. write("Test case 2");
  46. (function() {
  47. var test = function ()
  48. {
  49. var ab = {};
  50. Object.defineProperty(ab,"foo",{get:function(){write("In getter"); return 10;}, configurable: true});
  51. write(ab.foo);
  52. }
  53. test();
  54. test();
  55. })();
  56. write("Test case 3");
  57. (function() {
  58. var test = function (alter)
  59. {
  60. var x = {
  61. get value(){
  62. return this._value;
  63. },
  64. set value(val){
  65. this._value = val;
  66. }
  67. }
  68. if(alter)
  69. {
  70. Object.defineProperty(x,"value",{value: 20, writable: true, enumerable: true, configurable: true});
  71. }
  72. write(x.value);
  73. }
  74. test(false);
  75. test(true);
  76. })();
  77. write("Test case 4");
  78. (function() {
  79. var test = function (alter)
  80. {
  81. var x = {
  82. _value : 10,
  83. get value(){
  84. return this._value;
  85. },
  86. set value(val){
  87. this._value = val;
  88. }
  89. }
  90. delete x.value;
  91. write(x.value);
  92. }
  93. test();
  94. test();
  95. })();
  96. write("Test case 5");
  97. (function() {
  98. var test = function (alter)
  99. {
  100. var x = {
  101. _value : 10,
  102. get value(){
  103. return this._value;
  104. },
  105. set value(val){
  106. this._value = val;
  107. }
  108. }
  109. if(alter)
  110. {
  111. delete x.value;
  112. }
  113. write(x.value);
  114. }
  115. test(false);
  116. test(true);
  117. })();
  118. write("Test case 6");
  119. (function() {
  120. var test = function (alter)
  121. {
  122. var x = {
  123. _value : 25,
  124. get value(){
  125. return this._value;
  126. },
  127. set value(val){
  128. this._value = val;
  129. }
  130. }
  131. if(alter)
  132. {
  133. Object.defineProperty(x,"value",{get:function(){write("In getter");return 10;}, configurable: true});
  134. }
  135. write(x.value);
  136. }
  137. test(false);
  138. test(true);
  139. })();
  140. write("Test case 7");
  141. (function() {
  142. var test = function ()
  143. {
  144. function foo(){ }
  145. foo.prototype.value = 10;
  146. var x = new foo();
  147. Object.defineProperty(x,"value",{get:function(){write("In getter");return 10;}, configurable: true});
  148. write(x.value);
  149. }
  150. test();
  151. test();
  152. })();
  153. write("Test case 8");
  154. (function() {
  155. var test = function ()
  156. {
  157. function foo(){ }
  158. foo.prototype.value = 10;
  159. var x = new foo();
  160. write(x.value);
  161. Object.defineProperty(x,"value",{get:function(){write("In getter");return 10;}, configurable: true});
  162. write(x.value);
  163. }
  164. test();
  165. test();
  166. })();
  167. write("Test case 9");
  168. (function() {
  169. var test = function (alter)
  170. {
  171. function foo(){ }
  172. if (alter)
  173. {
  174. foo.prototype.value = 10;
  175. }
  176. var x = new foo();
  177. Object.defineProperty(x,"value",{get:function(){write("In getter");return 10;}, configurable: true});
  178. write(x.value);
  179. }
  180. test(false);
  181. test(true);
  182. })();
  183. write("Test case 10");
  184. (function() {
  185. var test = function (alter)
  186. {
  187. var x = {value: 10};
  188. if (alter)
  189. {
  190. write(x.value);
  191. }
  192. Object.defineProperty(x,"value",{get:function(){write("In getter");return 10;}, configurable: true});
  193. write(x.value);
  194. }
  195. test(false);
  196. test(true);
  197. })();
  198. write("Test case 11");
  199. (function() {
  200. var test = function (alter)
  201. {
  202. var x = {};
  203. Object.defineProperty(x,"value",{get:function(y){write("In getter");return 10 + y;}, configurable: true});
  204. write(x.value);
  205. }
  206. test(false);
  207. test(true);
  208. })();
  209. try {
  210. eval("({ g\\u0065t foo() {} })");
  211. write("Get and set cannot contain unicode escapes");
  212. } catch {}