UNPKG

unique-sequence

Version:

Generate a sequence of short strings unique within their scope.

257 lines (247 loc) 8.96 kB
const { generatorCustom, generatorNum, generatorAlphaUpper, generatorAlphaLower, generatorAlphaNumUpper, generatorAlphaNumLower, } = require('.'); test('custom list', () => { const list = ['a', 'b']; const gen = generatorCustom(list); expect(gen.next().value).toBe('a'); expect(gen.next().value).toBe('b'); expect(gen.next().value).toBe('ba'); expect(gen.next().value).toBe('bb'); expect(gen.next().value).toBe('baa'); expect(gen.next().value).toBe('bab'); expect(gen.next().value).toBe('bba'); expect(gen.next().value).toBe('bbb'); expect(gen.next().value).toBe('baaa'); }); test('custom list', () => { const list = ['a', 'b', 'c']; const gen = generatorCustom(list); expect(gen.next().value).toBe('a'); expect(gen.next().value).toBe('b'); expect(gen.next().value).toBe('c'); expect(gen.next().value).toBe('ba'); expect(gen.next().value).toBe('bb'); expect(gen.next().value).toBe('bc'); expect(gen.next().value).toBe('ca'); expect(gen.next().value).toBe('cb'); expect(gen.next().value).toBe('cc'); expect(gen.next().value).toBe('baa'); expect(gen.next().value).toBe('bab'); expect(gen.next().value).toBe('bac'); expect(gen.next().value).toBe('bba'); expect(gen.next().value).toBe('bbb'); expect(gen.next().value).toBe('bbc'); expect(gen.next().value).toBe('bca'); expect(gen.next().value).toBe('bcb'); expect(gen.next().value).toBe('bcc'); expect(gen.next().value).toBe('caa'); expect(gen.next().value).toBe('cab'); expect(gen.next().value).toBe('cac'); expect(gen.next().value).toBe('cba'); expect(gen.next().value).toBe('cbb'); expect(gen.next().value).toBe('cbc'); expect(gen.next().value).toBe('cca'); expect(gen.next().value).toBe('ccb'); expect(gen.next().value).toBe('ccc'); expect(gen.next().value).toBe('baaa'); }); test('num', () => { const gen = generatorNum(); expect(gen.next().value).toBe('0'); expect(gen.next().value).toBe('1'); expect(gen.next().value).toBe('2'); expect(gen.next().value).toBe('3'); expect(gen.next().value).toBe('4'); expect(gen.next().value).toBe('5'); expect(gen.next().value).toBe('6'); expect(gen.next().value).toBe('7'); expect(gen.next().value).toBe('8'); expect(gen.next().value).toBe('9'); expect(gen.next().value).toBe('10'); expect(gen.next().value).toBe('11'); }); test('alpha upper', () => { const gen = generatorAlphaUpper(); expect(gen.next().value).toBe('A'); expect(gen.next().value).toBe('B'); expect(gen.next().value).toBe('C'); expect(gen.next().value).toBe('D'); expect(gen.next().value).toBe('E'); expect(gen.next().value).toBe('F'); expect(gen.next().value).toBe('G'); expect(gen.next().value).toBe('H'); expect(gen.next().value).toBe('I'); expect(gen.next().value).toBe('J'); expect(gen.next().value).toBe('K'); expect(gen.next().value).toBe('L'); expect(gen.next().value).toBe('M'); expect(gen.next().value).toBe('N'); expect(gen.next().value).toBe('O'); expect(gen.next().value).toBe('P'); expect(gen.next().value).toBe('Q'); expect(gen.next().value).toBe('R'); expect(gen.next().value).toBe('S'); expect(gen.next().value).toBe('T'); expect(gen.next().value).toBe('U'); expect(gen.next().value).toBe('V'); expect(gen.next().value).toBe('W'); expect(gen.next().value).toBe('X'); expect(gen.next().value).toBe('Y'); expect(gen.next().value).toBe('Z'); expect(gen.next().value).toBe('BA'); expect(gen.next().value).toBe('BB'); expect(gen.next().value).toBe('BC'); }); test('alpha lower', () => { const gen = generatorAlphaLower(); expect(gen.next().value).toBe('a'); expect(gen.next().value).toBe('b'); expect(gen.next().value).toBe('c'); expect(gen.next().value).toBe('d'); expect(gen.next().value).toBe('e'); expect(gen.next().value).toBe('f'); expect(gen.next().value).toBe('g'); expect(gen.next().value).toBe('h'); expect(gen.next().value).toBe('i'); expect(gen.next().value).toBe('j'); expect(gen.next().value).toBe('k'); expect(gen.next().value).toBe('l'); expect(gen.next().value).toBe('m'); expect(gen.next().value).toBe('n'); expect(gen.next().value).toBe('o'); expect(gen.next().value).toBe('p'); expect(gen.next().value).toBe('q'); expect(gen.next().value).toBe('r'); expect(gen.next().value).toBe('s'); expect(gen.next().value).toBe('t'); expect(gen.next().value).toBe('u'); expect(gen.next().value).toBe('v'); expect(gen.next().value).toBe('w'); expect(gen.next().value).toBe('x'); expect(gen.next().value).toBe('y'); expect(gen.next().value).toBe('z'); expect(gen.next().value).toBe('ba'); expect(gen.next().value).toBe('bb'); expect(gen.next().value).toBe('bc'); }); test('alphanum upper', () => { const gen = generatorAlphaNumUpper(); expect(gen.next().value).toBe('0'); expect(gen.next().value).toBe('1'); expect(gen.next().value).toBe('2'); expect(gen.next().value).toBe('3'); expect(gen.next().value).toBe('4'); expect(gen.next().value).toBe('5'); expect(gen.next().value).toBe('6'); expect(gen.next().value).toBe('7'); expect(gen.next().value).toBe('8'); expect(gen.next().value).toBe('9'); expect(gen.next().value).toBe('A'); expect(gen.next().value).toBe('B'); expect(gen.next().value).toBe('C'); expect(gen.next().value).toBe('D'); expect(gen.next().value).toBe('E'); expect(gen.next().value).toBe('F'); expect(gen.next().value).toBe('G'); expect(gen.next().value).toBe('H'); expect(gen.next().value).toBe('I'); expect(gen.next().value).toBe('J'); expect(gen.next().value).toBe('K'); expect(gen.next().value).toBe('L'); expect(gen.next().value).toBe('M'); expect(gen.next().value).toBe('N'); expect(gen.next().value).toBe('O'); expect(gen.next().value).toBe('P'); expect(gen.next().value).toBe('Q'); expect(gen.next().value).toBe('R'); expect(gen.next().value).toBe('S'); expect(gen.next().value).toBe('T'); expect(gen.next().value).toBe('U'); expect(gen.next().value).toBe('V'); expect(gen.next().value).toBe('W'); expect(gen.next().value).toBe('X'); expect(gen.next().value).toBe('Y'); expect(gen.next().value).toBe('Z'); expect(gen.next().value).toBe('10'); expect(gen.next().value).toBe('11'); expect(gen.next().value).toBe('12'); expect(gen.next().value).toBe('13'); expect(gen.next().value).toBe('14'); expect(gen.next().value).toBe('15'); expect(gen.next().value).toBe('16'); expect(gen.next().value).toBe('17'); expect(gen.next().value).toBe('18'); expect(gen.next().value).toBe('19'); expect(gen.next().value).toBe('1A'); expect(gen.next().value).toBe('1B'); }); test('alphanum lower', () => { const gen = generatorAlphaNumLower(); expect(gen.next().value).toBe('0'); expect(gen.next().value).toBe('1'); expect(gen.next().value).toBe('2'); expect(gen.next().value).toBe('3'); expect(gen.next().value).toBe('4'); expect(gen.next().value).toBe('5'); expect(gen.next().value).toBe('6'); expect(gen.next().value).toBe('7'); expect(gen.next().value).toBe('8'); expect(gen.next().value).toBe('9'); expect(gen.next().value).toBe('a'); expect(gen.next().value).toBe('b'); expect(gen.next().value).toBe('c'); expect(gen.next().value).toBe('d'); expect(gen.next().value).toBe('e'); expect(gen.next().value).toBe('f'); expect(gen.next().value).toBe('g'); expect(gen.next().value).toBe('h'); expect(gen.next().value).toBe('i'); expect(gen.next().value).toBe('j'); expect(gen.next().value).toBe('k'); expect(gen.next().value).toBe('l'); expect(gen.next().value).toBe('m'); expect(gen.next().value).toBe('n'); expect(gen.next().value).toBe('o'); expect(gen.next().value).toBe('p'); expect(gen.next().value).toBe('q'); expect(gen.next().value).toBe('r'); expect(gen.next().value).toBe('s'); expect(gen.next().value).toBe('t'); expect(gen.next().value).toBe('u'); expect(gen.next().value).toBe('v'); expect(gen.next().value).toBe('w'); expect(gen.next().value).toBe('x'); expect(gen.next().value).toBe('y'); expect(gen.next().value).toBe('z'); expect(gen.next().value).toBe('10'); expect(gen.next().value).toBe('11'); expect(gen.next().value).toBe('12'); expect(gen.next().value).toBe('13'); expect(gen.next().value).toBe('14'); expect(gen.next().value).toBe('15'); expect(gen.next().value).toBe('16'); expect(gen.next().value).toBe('17'); expect(gen.next().value).toBe('18'); expect(gen.next().value).toBe('19'); expect(gen.next().value).toBe('1a'); expect(gen.next().value).toBe('1b'); }); test('test higher ranges', () => { const genN = generatorNum(); const genAU = generatorAlphaUpper(); const genAL = generatorAlphaLower(); for (let i = 0; i < 1000; i++) { genN.next().value; //eslint-disable-line genAU.next().value; //eslint-disable-line genAL.next().value; //eslint-disable-line } expect(genN.next().value).toBe('1000'); expect(genAU.next().value).toBe('BMM'); expect(genAL.next().value).toBe('bmm'); });