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 57 lines 2.1 kB view raw
1import { test, summary } from './helpers.js'; 2 3console.log('Delete Operator Tests\n'); 4 5const obj = { a: 1, b: 2, c: 3 }; 6 7let result = delete obj.a; 8test('delete existing property returns true', result, true); 9test('property removed after delete', obj.a, undefined); 10test('has property after delete', 'a' in obj, false); 11test('other properties remain', obj.b, 2); 12 13result = delete obj.nonexistent; 14test('delete non-existent property returns true', result, true); 15 16const nested = { outer: { inner: 42 } }; 17result = delete nested.outer.inner; 18test('delete nested property', result, true); 19test('nested property removed', nested.outer.inner, undefined); 20test('parent still exists', typeof nested.outer, 'object'); 21 22const arr = [1, 2, 3, 4, 5]; 23result = delete arr[2]; 24test('delete array element returns true', result, true); 25test('array element becomes undefined', arr[2], undefined); 26test('array length unchanged', arr.length, 5); 27test('array has hole', 2 in arr, false); 28 29const withUndefined = { x: undefined }; 30result = delete withUndefined.x; 31test('delete property set to undefined', result, true); 32test('property gone after delete', 'x' in withUndefined, false); 33 34const computed = { foo: 'bar', baz: 'qux' }; 35const key = 'foo'; 36result = delete computed[key]; 37test('delete with computed key', result, true); 38test('computed key property removed', computed.foo, undefined); 39 40const proto = { inherited: true }; 41const child = Object.create(proto); 42child.own = 'value'; 43result = delete child.own; 44test('delete own property', result, true); 45test('own property removed', child.own, undefined); 46test('inherited property still accessible', child.inherited, true); 47result = delete child.inherited; 48test('delete inherited returns true but keeps it', result, true); 49test('inherited still accessible after delete', child.inherited, true); 50 51const symbolKey = Symbol('test'); 52const withSymbol = { [symbolKey]: 'symbol value' }; 53result = delete withSymbol[symbolKey]; 54test('delete symbol property returns true', result, true); 55test('symbol property removed', withSymbol[symbolKey], undefined); 56 57summary();