| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- Object.defineProperty(RegExp, "fakeProp", {
- value: 101,
- writable: true,
- enumerable: true,
- configurable: true
- });
- var propertyConstructorArray = ["fakeProp","$_","$*","$&","$+","$`","$'","input",
- "lastMatch","lastParen","leftContext","rightContext",
- "index","length","prototype","constructor"
- ];
- var propertyInstanceArray = ["global","ignoreCase","lastIndex","multiline","source","sticky"];
- function RegexTests(i,propertyArray)
- {
- WScript.Echo("starting Property[",i,"]: ",propertyArray[i]);
- //Does the property exist
- var doesPropExist = RegExp.hasOwnProperty(propertyArray[i]);
- WScript.Echo("Does Property exist: ",doesPropExist);
- if(!doesPropExist) return;
- //Is the property configurable
- var isPropConfig = Object.getOwnPropertyDescriptor(RegExp, propertyArray[i]).configurable;
- WScript.Echo("Is the Property configurable: ",isPropConfig);
- var canRedefine = false;
- var canDelete = false;
- if(isPropConfig)
- {
- canRedefine = true;
- canDelete = true;
- }
- var propValueBefore = RegExp[propertyArray[i]];
- try
- {
- Object.defineProperty(RegExp, propertyArray[i], { get : function () { return 'OVERRIDE' } });
- }
- catch(err)
- {
- if(isPropConfig) WScript.Echo("Fail");
- else WScript.Echo("PASS, Not Configurable and will not allow redefinition");
- }
- var deleteProp = false;
- if(isPropConfig)
- {
- if(RegExp[propertyArray[i]] =="OVERRIDE") WScript.Echo("PASS");
- else WScript.Echo("FAIL, currently equals: ",RegExp[propertyArray[i]]);
- }
- else
- {
- if(RegExp[propertyArray[i]] ==propValueBefore) WScript.Echo("PASS");
- else WScript.Echo("FAIL, currently equals: ",RegExp[propertyArray[i]]);
- }
- deleteProp = delete RegExp[propertyArray[i]];
- WScript.Echo("can you delete the property: ",canDelete, "did it actually delete?",deleteProp);
- if(deleteProp ==canDelete) WScript.Echo("Pass Delete Test");
- else WScript.Echo("Fail Delete Test");
- }
- function RegexInstanceTests(i,propertyArray)
- {
- var pattern1=new RegExp("e");
- WScript.Echo("starting Property[",i,"]: ",propertyArray[i]);
- //Does the property exist
- var doesPropExist = pattern1.hasOwnProperty(propertyArray[i]);
- WScript.Echo("Does Property exist: ",doesPropExist);
- if(!doesPropExist) return;
- var isPropConfig = Object.getOwnPropertyDescriptor(pattern1, propertyArray[i]).configurable;
- WScript.Echo("Is the Property configurable: ",isPropConfig);
- var canRedefine = false;
- var canDelete = false;
- if(isPropConfig)
- {
- canRedefine = true;
- canDelete = true;
- }
- var propValueBefore = pattern1[propertyArray[i]];
- try
- {
- Object.defineProperty(pattern1, propertyArray[i], { get : function () { return 'OVERRIDE' } });
- }
- catch(err)
- {
- if(isPropConfig) WScript.Echo("Fail");
- else WScript.Echo("PASS, Not Configurable and will not allow redefinition");
- }
- var deleteProp = false;
- if(isPropConfig)
- {
- if(pattern1[propertyArray[i]] =="OVERRIDE") WScript.Echo("PASS");
- else WScript.Echo("FAIL, currently equals: ",pattern1[propertyArray[i]]);
- }
- else
- {
- if(pattern1[propertyArray[i]] ==propValueBefore) WScript.Echo("PASS");
- else WScript.Echo("FAIL, currently equals: ",pattern1[propertyArray[i]]);
- }
- deleteProp = delete pattern1[propertyArray[i]];
- WScript.Echo("can you delete the property: ",canDelete, "did it actually delete?",deleteProp);
- if(deleteProp ==canDelete) WScript.Echo("Pass Delete Test");
- else WScript.Echo("Fail Delete Test");
- }
- for(var i = 0; i < propertyConstructorArray.length;i++)
- {
- RegexTests(i,propertyConstructorArray);
- WScript.Echo("\n");
- }
- for(var i = 0; i < propertyInstanceArray.length;i++)
- {
- RegexTests(i,propertyInstanceArray);
- WScript.Echo("\n");
- }
- for(var i = 0; i < propertyInstanceArray.length;i++)
- {
- RegexInstanceTests(i,propertyInstanceArray);
- WScript.Echo("\n");
- }
|