cluster-id
Version:
Database cluster friendly object id with great query isolation.
46 lines (41 loc) • 1.66 kB
JavaScript
/* global test, expect */
var createCounter = require('./counter')
var ref = require('./base64');
var BASE = ref.BASE;
var encode = ref.encode;
test('return unchanged single symbol counter', function () {
var ref = createCounter(1);
var encodeCounter = ref.encodeCounter;
expect(encode(10, 1)).toBe('9')
expect(encodeCounter(10)).toBe('9')
})
test('swap symbols in 2 symbols counter', function () {
var ref = createCounter(2);
var encodeCounter = ref.encodeCounter;
expect(encode(BASE - 1, 2)).toBe('-z')
expect(encodeCounter(BASE - 1)).toBe('z-')
expect(encode(Math.pow( BASE, 2 ) - 2, 2)).toBe('zy')
expect(encodeCounter(Math.pow( BASE, 2 ) - 2)).toBe('yz')
})
test('swap symbols in 3 symbols counter', function () {
var ref = createCounter(3);
var encodeCounter = ref.encodeCounter;
expect(encode(BASE - 1, 3)).toBe('--z')
expect(encodeCounter(BASE - 1, 3)).toBe('z--')
expect(encode(Math.pow( BASE, 2 ) - 2, 3)).toBe('-zy')
expect(encodeCounter(Math.pow( BASE, 2 ) - 2)).toBe('yz-')
expect(encode(Math.pow( BASE, 2 ) + 3, 3)).toBe('0-2')
expect(encodeCounter(Math.pow( BASE, 2 ) + 3)).toBe('2-0')
})
test('swap symbols in 4 symbols counter', function () {
var ref = createCounter(4);
var encodeCounter = ref.encodeCounter;
expect(encode(BASE - 1, 4)).toBe('---z')
expect(encodeCounter(BASE - 1)).toBe('z---')
expect(encode(BASE + 3, 4)).toBe('--02')
expect(encodeCounter(BASE + 3)).toBe('20--')
expect(encode(Math.pow( BASE, 2 ) + 3, 4)).toBe('-0-2')
expect(encodeCounter(Math.pow( BASE, 2 ) + 3)).toBe('2-0-')
expect(encode(556789, 4)).toBe('16vp')
expect(encodeCounter(556789)).toBe('pv61')
})