123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- var assert = require('assert');
- var Base62 = require('../base62');
- describe("encode", function() {
- it("should encode a number to a Base62 string", function() {
- assert.equal(Base62.encode(0), '0');
- assert.equal(Base62.encode(999), 'g7');
- assert.equal(Base62.encode(65), '13');
- //test big numbers
- assert.equal(Base62.encode(10000000000001), "2Q3rKTOF");
- assert.equal(Base62.encode(10000000000002), "2Q3rKTOG");
- });
- });
- describe("decode", function() {
- it("should decode a number from a Base62 string", function() {
- assert.equal(Base62.decode('0'), 0);
- assert.equal(Base62.decode('g7'), 999);
- assert.equal(Base62.decode('13'), 65);
- //zero padded strings
- assert.equal(Base62.decode('0013'), 65);
- //test big numbers
- assert.equal(Base62.decode("2Q3rKTOF"), 10000000000001);
- assert.equal(Base62.decode("2Q3rKTOH"), 10000000000003);
- });
- });
- describe("setCharacterSequence", function(){
- it("should update the character sequence", function(){
- Base62.setCharacterSet("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
- //Test default character set is not intact
- assert.notEqual(Base62.encode(999), 'g7');
- //Test new character set test cases
- var testCases = {
- "G7": 999,
- "Lxf7": 5234233,
- "qx": 3283,
- "29": 133,
- "1S": 90,
- "3k": 232,
- "4I": 266,
- "2X": 157,
- "1E": 76,
- "1L": 83
- };
- Object.keys(testCases).forEach(function(base62String){
- assert.equal(Base62.encode(testCases[base62String]), base62String);
- assert.equal(Base62.decode(base62String), testCases[base62String]);
- });
- });
- it("should throw exceptions on invalid strings", function(){
- var errorCheck = function(err) {
- if ( (err instanceof Error) && /value/.test(err) ) {
- return true;
- }
- };
- assert.throws(function(){
- Base62.setCharacterSet("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy");
- }, /You must supply 62 characters/);
- assert.throws(function(){
- Base62.setCharacterSet("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;");
- }, /You must supply 62 characters/);
- assert.throws(function(){
- Base62.setCharacterSet("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxzz");
- }, /You must use unique characters/);
- });
- });
|