const assert = require('assert'); const L = require('./launch.js'); assert.deepStrictEqual(L.prefixIntent('=2+2'), { intent: 'app', query: '=2+2' }); assert.deepStrictEqual(L.prefixIntent('firefox'), { intent: 'app', query: 'firefox' }); const exact = L.fuzzyScore('firefox', 'firefox', 0); const prefix = L.fuzzyScore('fire', 'firefox', 0); const wbSub = L.fuzzyScore('fb', 'firefox browser', 0); const loose = L.fuzzyScore('frfx', 'firefox', 0); assert.ok(exact > prefix, 'exact > prefix'); assert.ok(prefix > wbSub, 'prefix > word-boundary subsequence'); assert.ok(wbSub > loose, 'word-boundary subsequence > loose subsequence'); assert.ok(loose >= 0, 'loose subsequence is a match'); assert.strictEqual(L.fuzzyScore('zzz', 'firefox', 0), -1); assert.strictEqual(L.fuzzyScore('', 'anything', 900), 900); const apps = L.buildApps([ { id: 'gimp', name: 'GIMP', icon: 'gimp', comment: 'Image editor', genericName: 'Image Editor', categories: ['Graphics'], keywords: ['paint', 'photo'] }, { id: 'firefox', name: 'Firefox', icon: 'firefox-icon', genericName: 'Web Browser', categories: ['Network'], keywords: ['web', 'browser'], actions: [ { id: 'new-window', name: 'New Window', icon: 'window-new', command: ['firefox', '--new-window'] }, { id: 'private-window', name: 'Private Window', command: ['firefox', '--private-window'] } ] } ]); assert.deepStrictEqual(apps.map(a => a.title), ['Firefox', 'GIMP']); assert.strictEqual(apps[0].icon, 'firefox-icon'); assert.strictEqual(apps[0].id, 'app:firefox'); assert.strictEqual(apps[0].desktopPath, 'firefox.desktop'); assert.strictEqual(apps[0].subtitle, 'Web Browser ยท Network'); assert.strictEqual(apps[0].details[0].value, 'Network'); assert.strictEqual(apps[0].details[1].value, 'web; browser'); assert.strictEqual(apps[0].actions[0].title, 'New Window'); assert.deepStrictEqual(apps[0].actions[0].execArgv, ['firefox', '--new-window']); assert.ok(L.buildApps([{ id: 'noname' }]).length === 0); const titleRank = L.rankResults('Firefox', { apps }); assert.strictEqual(titleRank.providerIntent, 'app'); assert.strictEqual(titleRank.selectedIndex, 0); assert.strictEqual(titleRank.results[0].title, 'Firefox'); assert.strictEqual(titleRank.results[0].provider, 'app'); assert.strictEqual(titleRank.results[0].icon, 'firefox-icon'); const keywordRank = L.rankResults('browser', { apps }); assert.strictEqual(keywordRank.results[0].title, 'Firefox'); assert.ok(keywordRank.results.every(r => r.provider === 'app')); const emptyRank = L.rankResults('', { apps }); assert.strictEqual(emptyRank.selectedIndex, 0); assert.deepStrictEqual(emptyRank.results.map(r => r.title), ['Firefox', 'GIMP']); console.log('launch.test.js: ALL PASS');