cluster-id
Version:
Database cluster friendly object id with great query isolation.
48 lines (41 loc) • 1.22 kB
JavaScript
/* global test, expect */
var ref = require('./base64');
var encode = ref.encode;
var decode = ref.decode;
var BASE = ref.BASE;
test('numbers in range 0..63 to base64 string of length 1', function () {
expect(encode(0)).toBe('-')
expect(encode(63)).toBe('z')
for (var num = 0; num < BASE; num++) {
expect(encode(num)).toMatch(/^[\w-]$/)
}
})
test('ensure base64 symbols are in char ascending order', function () {
for (var num = 0, prev = (void 0); num < BASE; num++) {
var symbol = encode(num)
if (prev) { expect(symbol > prev).toBe(true) }
prev = symbol
}
})
test('encode and decode zero', function () {
expect(encode(0)).toBe('-')
expect(decode('-')).toBe(0)
})
test('encode and decode 1000', function () {
expect(encode(1000)).toBe('Ec')
expect(decode('Ec')).toBe(1000)
})
test('encode and decode Number.MAX_SAFE_INTEGER', function () {
expect(encode(Number.MAX_SAFE_INTEGER)).toBe('Uzzzzzzzz')
expect(decode('Uzzzzzzzz')).toBe(Number.MAX_SAFE_INTEGER)
})
test('encode to and decode Fibonacci numbers', function () {
var a = 1
var b = 1
while (b < Number.MAX_SAFE_INTEGER) {
expect(decode(encode(b))).toBe(b)
var temp = a + b
a = b
b = temp
}
})