MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 52 lines 1.3 kB view raw
1import { test, summary } from './helpers.js'; 2 3console.log('Proxy Tests\n'); 4 5const target = { a: 1, b: 2 }; 6const handler = { 7 get(obj, prop) { 8 return prop in obj ? obj[prop] : 'default'; 9 } 10}; 11const proxy = new Proxy(target, handler); 12 13test('proxy get existing', proxy.a, 1); 14test('proxy get missing', proxy.c, 'default'); 15 16const setHandler = { 17 set(obj, prop, value) { 18 obj[prop] = value * 2; 19 return true; 20 } 21}; 22const setProxy = new Proxy({}, setHandler); 23setProxy.x = 5; 24test('proxy set', setProxy.x, 10); 25 26const hasHandler = { 27 has(obj, prop) { 28 return prop.startsWith('_') ? false : prop in obj; 29 } 30}; 31const hasProxy = new Proxy({ _private: 1, public: 2 }, hasHandler); 32test('proxy has public', 'public' in hasProxy, true); 33test('proxy has private', '_private' in hasProxy, false); 34 35const deleteHandler = { 36 deleteProperty(obj, prop) { 37 if (prop.startsWith('_')) return false; 38 delete obj[prop]; 39 return true; 40 } 41}; 42const delProxy = new Proxy({ _keep: 1, remove: 2 }, deleteHandler); 43delete delProxy.remove; 44delete delProxy._keep; 45test('proxy delete allowed', delProxy.remove, undefined); 46test('proxy delete blocked', delProxy._keep, 1); 47 48const revocable = Proxy.revocable({ x: 1 }, {}); 49test('revocable proxy get', revocable.proxy.x, 1); 50revocable.revoke(); 51 52summary();