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 96 lines 3.6 kB view raw
1import { test, testDeep, summary } from './helpers.js'; 2 3console.log('Navigator Tests\n'); 4 5test('navigator exists', typeof navigator, 'object'); 6test('navigator toStringTag', Object.prototype.toString.call(navigator), '[object Navigator]'); 7 8test('navigator.hardwareConcurrency exists', typeof navigator.hardwareConcurrency, 'number'); 9test('navigator.hardwareConcurrency is positive', navigator.hardwareConcurrency >= 1, true); 10test('navigator.hardwareConcurrency is integer', Number.isInteger(navigator.hardwareConcurrency), true); 11 12test('navigator.language exists', typeof navigator.language, 'string'); 13test('navigator.language is en-US', navigator.language, 'en-US'); 14 15test('navigator.languages exists', Array.isArray(navigator.languages), true); 16test('navigator.languages length', navigator.languages.length >= 1, true); 17test('navigator.languages contains language', navigator.languages.includes(navigator.language), true); 18 19test('navigator.platform exists', typeof navigator.platform, 'string'); 20test('navigator.platform is non-empty', navigator.platform.length > 0, true); 21 22test('navigator.userAgent exists', typeof navigator.userAgent, 'string'); 23test('navigator.userAgent starts with Ant', navigator.userAgent.startsWith('Ant/'), true); 24 25console.log('\nLockManager Tests\n'); 26 27test('navigator.locks exists', typeof navigator.locks, 'object'); 28test('navigator.locks toStringTag', Object.prototype.toString.call(navigator.locks), '[object LockManager]'); 29test('navigator.locks.request exists', typeof navigator.locks.request, 'function'); 30test('navigator.locks.query exists', typeof navigator.locks.query, 'function'); 31 32(async () => { 33 let exclusiveLockAcquired = false; 34 let exclusiveLockName = null; 35 let exclusiveLockMode = null; 36 let exclusiveLockReleased = false; 37 38 await navigator.locks 39 .request('test_resource', async lock => { 40 exclusiveLockAcquired = true; 41 exclusiveLockName = lock.name; 42 exclusiveLockMode = lock.mode; 43 return 'done'; 44 }) 45 .then(() => { 46 exclusiveLockReleased = true; 47 }); 48 49 test('exclusive lock was acquired', exclusiveLockAcquired, true); 50 test('exclusive lock has correct name', exclusiveLockName, 'test_resource'); 51 test('exclusive lock has correct mode', exclusiveLockMode, 'exclusive'); 52 test('exclusive lock was released', exclusiveLockReleased, true); 53 54 let sharedLockMode = null; 55 56 await navigator.locks.request('shared_resource', { mode: 'shared' }, async lock => { 57 sharedLockMode = lock.mode; 58 }); 59 60 test('shared lock has correct mode', sharedLockMode, 'shared'); 61 62 let ifAvailableResult = null; 63 64 await navigator.locks.request('available_resource', { ifAvailable: true }, async lock => { 65 ifAvailableResult = lock ? 'acquired' : 'not available'; 66 }); 67 68 test('ifAvailable lock was acquired', ifAvailableResult, 'acquired'); 69 70 const queryResult = await navigator.locks.query(); 71 72 test('query returns object', typeof queryResult, 'object'); 73 test('query has held array', Array.isArray(queryResult.held), true); 74 test('query has pending array', Array.isArray(queryResult.pending), true); 75 76 let lockOrder = []; 77 78 await navigator.locks.request('order_test', async lock => { 79 lockOrder.push(1); 80 }); 81 82 await navigator.locks.request('order_test', async lock => { 83 lockOrder.push(2); 84 }); 85 86 testDeep('locks execute in order', lockOrder, [1, 2]); 87 88 let lockToStringTag = null; 89 await navigator.locks.request('tostring_test', async lock => { 90 lockToStringTag = Object.prototype.toString.call(lock); 91 }); 92 93 test('Lock toStringTag', lockToStringTag, '[object Lock]'); 94 95 summary(); 96})();