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+
6+ WScript . LoadScriptFile ( "..\\UnitTestFramework\\UnitTestFramework.js" ) ;
7+
8+ let tests = [
9+ {
10+ name : "GetProxyProperties: no argugments" ,
11+ body : function ( ) {
12+ let properties = WScript . GetProxyProperties ( ) ;
13+ assert . isUndefined ( properties , "ProxyProperties of nothing should be undefined." ) ;
14+ }
15+ } ,
16+ {
17+ name : "GetProxyProperties: non-proxy arguments" ,
18+ body : function ( ) {
19+ let properties = WScript . GetProxyProperties ( undefined ) ;
20+ assert . isUndefined ( properties , "ProxyProperties of undefined should be undefined." ) ;
21+ properties = WScript . GetProxyProperties ( 1 ) ;
22+ assert . isUndefined ( properties , "ProxyProperties of number should be undefined." ) ;
23+ properties = WScript . GetProxyProperties ( { } ) ;
24+ assert . isUndefined ( properties , "ProxyProperties of non-proxy object should be undefined." ) ;
25+ }
26+ } ,
27+ {
28+ name : "GetProxyProperties: revocable Proxy" ,
29+ body : function ( ) {
30+ let revocable = Proxy . revocable ( { someProperty : true , otherProperty : false } , { otherProperty : true , newProperty : 5 } ) ;
31+ let proxy = revocable . proxy ;
32+ let properties = WScript . GetProxyProperties ( proxy ) ;
33+
34+ let names = Object . getOwnPropertyNames ( properties ) ;
35+ assert . areEqual ( names . length , 3 , "proxy properties names should have length 3." ) ;
36+ assert . isTrue ( names . includes ( "target" ) ) ;
37+ assert . isTrue ( names . includes ( "handler" ) ) ;
38+ assert . isTrue ( names . includes ( "revoked" ) ) ;
39+ assert . isFalse ( properties . revoked , "Revoked bool should be false." ) ;
40+
41+ names = Object . getOwnPropertyNames ( properties . target ) ;
42+ assert . areEqual ( names . length , 2 , "proxy properties target names should have length 2." ) ;
43+ assert . areEqual ( properties . target . someProperty , true ) ;
44+ assert . areEqual ( properties . target . otherProperty , false ) ;
45+
46+ names = Object . getOwnPropertyNames ( properties . handler ) ;
47+ assert . areEqual ( names . length , 2 , "proxy properties handler names should have length 2." ) ;
48+ assert . areEqual ( properties . handler . newProperty , 5 ) ;
49+ assert . areEqual ( properties . handler . otherProperty , true ) ;
50+
51+ revocable . revoke ( ) ;
52+ properties = WScript . GetProxyProperties ( proxy ) ;
53+
54+ names = Object . getOwnPropertyNames ( properties ) ;
55+ assert . areEqual ( names . length , 3 , "proxy properties names for revokes proxy should have length 3." ) ;
56+ assert . isTrue ( names . includes ( "target" ) ) ;
57+ assert . isTrue ( names . includes ( "handler" ) ) ;
58+ assert . isTrue ( properties . revoked , "Revoked bool should be true." ) ;
59+
60+ assert . isUndefined ( properties . target , "Target of revoked proxy should be undefined." ) ;
61+ assert . isUndefined ( properties . handler , "Handler of revoked proxy should be undefined." ) ;
62+ }
63+ } ,
64+ {
65+ name : "GetProxyProperties: normal Proxy" ,
66+ body : function ( ) {
67+ let proxy = new Proxy ( { someProperty : true , otherProperty : false } , { otherProperty : true , newProperty : 5 } ) ;
68+ let properties = WScript . GetProxyProperties ( proxy ) ;
69+
70+ let names = Object . getOwnPropertyNames ( properties ) ;
71+ assert . areEqual ( names . length , 3 , "proxy properties names should have length 3" ) ;
72+ assert . isTrue ( names . includes ( "target" ) ) ;
73+ assert . isTrue ( names . includes ( "handler" ) ) ;
74+ assert . isTrue ( names . includes ( "revoked" ) ) ;
75+ assert . isFalse ( properties . revoked , "Revoked bool should be false." ) ;
76+
77+ names = Object . getOwnPropertyNames ( properties . target ) ;
78+ assert . areEqual ( names . length , 2 , "proxy properties target names should have length 2" ) ;
79+ assert . areEqual ( properties . target . someProperty , true ) ;
80+ assert . areEqual ( properties . target . otherProperty , false ) ;
81+
82+ names = Object . getOwnPropertyNames ( properties . handler ) ;
83+ assert . areEqual ( names . length , 2 , "proxy properties handler names should have length 2" ) ;
84+ assert . areEqual ( properties . handler . newProperty , 5 ) ;
85+ assert . areEqual ( properties . handler . otherProperty , true ) ;
86+ }
87+ }
88+ ] ;
89+
90+ testRunner . runTests ( tests , { verbose : WScript . Arguments [ 0 ] != "summary" } ) ;
0 commit comments