basealphabet
Version:
converts number to arbitrary alphabets and back
61 lines (48 loc) • 1.33 kB
JavaScript
var BaseAlphabet = require('./index.js').BaseAlphabet;
var tests = 0;
var failed = 0;
var assert = function(blah) {
if(!blah) {
failed++;
throw new "Test failed here"
} else {
tests++;
}
}
var alpha32 = new BaseAlphabet({
alphabet: '0123456789ABCDEFGHJKMNPQRTUVWXY$',
radix: 32,
caseInsensitive: true,
alias: { '醁' : 'Y' }
});
console.log("AZQ=",alpha32.toDecimal("A$Q"));
assert(alpha32.toDecimal("$") == 31);
assert(alpha32.toDecimal("0") == 0);
assert(alpha32.toDecimal("10") == 32);
assert(alpha32.toDecimal("1$") == 32+31);
assert(alpha32.toAlphabet(31) == '$');
try {
assert(alpha32.toAlphabet(31) == 'A');
} catch(e) {
assert(true);
}
assert(alpha32.toAlphabet(32+31) == '1$');
assert(alpha32.toDecimal("醁") == 30);
assert(alpha32.toDecimal("11") == (32+1));
assert(alpha32.toDecimal("醁1") == ((32*30)+1));
var alphaStrange = new BaseAlphabet({
alphabet: 'QLJK',
radix: 4
});
assert(alphaStrange.toDecimal("Q") == 0);
assert(alphaStrange.toAlphabet(4) == 'LQ');
assert(alphaStrange.toAlphabet(0) == 'Q');
var s1=alpha32.randomNumber(1)
var s2=alpha32.randomNumber(8)
assert(s1.length == 1);
assert(s2.length == 8);
console.log('tests',tests);
console.log('should have failed',failed);
assert(tests == 15)
assert(failed == 1)
console.log("if no visisble exceptions throw we are good.")