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 84 lines 3.0 kB view raw
1import { test, summary } from './helpers.js'; 2 3console.log('sessionStorage Tests\n'); 4 5test('sessionStorage exists', typeof sessionStorage, 'object'); 6 7sessionStorage.setItem('key1', 'value1'); 8test('setItem/getItem basic', sessionStorage.getItem('key1'), 'value1'); 9 10sessionStorage.setItem('key1', 'newValue'); 11test('setItem overwrites', sessionStorage.getItem('key1'), 'newValue'); 12 13test('getItem non-existent', sessionStorage.getItem('nonExistent'), null); 14 15sessionStorage.clear(); 16test('length after clear', sessionStorage.length, 0); 17 18sessionStorage.setItem('a', '1'); 19test('length after 1 item', sessionStorage.length, 1); 20 21sessionStorage.setItem('b', '2'); 22test('length after 2 items', sessionStorage.length, 2); 23 24sessionStorage.setItem('c', '3'); 25test('length after 3 items', sessionStorage.length, 3); 26 27let keys = []; 28for (let i = 0; i < sessionStorage.length; i++) { 29 keys.push(sessionStorage.key(i)); 30} 31test('key() returns keys', keys.length, 3); 32test('key() includes a', keys.includes('a'), true); 33test('key() includes b', keys.includes('b'), true); 34test('key() includes c', keys.includes('c'), true); 35 36test('key() out of bounds', sessionStorage.key(100), null); 37test('key() negative index', sessionStorage.key(-1), null); 38 39sessionStorage.removeItem('b'); 40test('removeItem decreases length', sessionStorage.length, 2); 41test('removeItem removes key', sessionStorage.getItem('b'), null); 42test('removeItem keeps others', sessionStorage.getItem('a'), '1'); 43 44sessionStorage.removeItem('nonExistent'); 45test('removeItem non-existent key', sessionStorage.length, 2); 46 47sessionStorage.clear(); 48test('clear removes all', sessionStorage.length, 0); 49test('clear removes a', sessionStorage.getItem('a'), null); 50test('clear removes c', sessionStorage.getItem('c'), null); 51 52sessionStorage.setItem('number', '42'); 53test('store number string', sessionStorage.getItem('number'), '42'); 54 55sessionStorage.setItem('bool', 'true'); 56test('store bool string', sessionStorage.getItem('bool'), 'true'); 57 58sessionStorage.setItem('empty', ''); 59test('store empty string', sessionStorage.getItem('empty'), ''); 60 61sessionStorage.setItem('key-with-dash', 'dash'); 62test('key with dash', sessionStorage.getItem('key-with-dash'), 'dash'); 63 64sessionStorage.setItem('key_with_underscore', 'underscore'); 65test('key with underscore', sessionStorage.getItem('key_with_underscore'), 'underscore'); 66 67sessionStorage.setItem('key.with.dot', 'dot'); 68test('key with dot', sessionStorage.getItem('key.with.dot'), 'dot'); 69 70sessionStorage.setItem('special', 'hello\nworld'); 71test('value with newline', sessionStorage.getItem('special'), 'hello\nworld'); 72 73sessionStorage.setItem('unicode', 'Hello'); 74test('value with unicode', sessionStorage.getItem('unicode'), 'Hello'); 75 76const obj = { name: 'John', age: 30 }; 77sessionStorage.setItem('user', JSON.stringify(obj)); 78const retrieved = JSON.parse(sessionStorage.getItem('user')); 79test('JSON storage name', retrieved.name, 'John'); 80test('JSON storage age', retrieved.age, 30); 81 82sessionStorage.clear(); 83 84summary();