react / wstein / node_modules / browserify / node_modules / crypto-browserify / node_modules / create-ecdh / node_modules / bn.js / test / constructor-test.js
80559 viewsvar assert = require('assert');1var BN = require('../').BN;2var fixtures = require('./fixtures');34describe('BN.js/Constructor', function() {5describe('with Smi input', function() {6it('should accept one limb number', function() {7assert.equal(new BN(12345).toString(16), '3039');8});910it('should accept two-limb number', function() {11assert.equal(new BN(0x4123456).toString(16), '4123456');12});1314it('should accept 52 bits of precision', function() {15var num = Math.pow(2, 52);16assert.equal(new BN(num, 10).toString(10), num.toString(10));17});1819it('should accept max safe integer', function() {20var num = Math.pow(2, 53) - 1;21assert.equal(new BN(num, 10).toString(10), num.toString(10));22});2324it('should not accept an unsafe integer', function() {25var num = Math.pow(2, 53);26assert.throws(function() { new BN(num, 10); });27});2829});3031describe('with String input', function() {32it('should accept base-16', function() {33assert.equal(new BN('1A6B765D8CDF', 16).toString(16), '1a6b765d8cdf');34assert.equal(new BN('1A6B765D8CDF', 16).toString(), '29048849665247');35});3637it('should accept base-hex', function() {38assert.equal(new BN('FF', 'hex').toString(), '255');39});4041it('should accept base-16 with spaces', function() {42var num = 'a89c e5af8724 c0a23e0e 0ff77500';43assert.equal(new BN(num, 16).toString(16), num.replace(/ /g, ''));44});4546it('should accept long base-16', function() {47var num = '123456789abcdef123456789abcdef123456789abcdef';48assert.equal(new BN(num, 16).toString(16), num);49});5051it('should accept positive base-10', function() {52assert.equal(new BN('10654321').toString(), '10654321');53assert.equal(new BN('29048849665247').toString(16), '1a6b765d8cdf');54});5556it('should accept negative base-10', function() {57assert.equal(new BN('-29048849665247').toString(16), '-1a6b765d8cdf');58});5960it('should accept long base-10', function() {61var num = '10000000000000000';62assert.equal(new BN(num).toString(10), num);63});6465it('should accept base-2', function() {66var base2 = '11111111111111111111111111111111111111111111111111111';67assert.equal(new BN(base2, 2).toString(2), base2);68});6970it('should accept base-36', function() {71var base36 = 'zzZzzzZzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz';72assert.equal(new BN(base36, 36).toString(36), base36.toLowerCase());73});7475it('should not overflow limbs during base-10', function() {76var num = '65820182292848241686198767302293' +77'20890292528855852623664389292032';78assert(new BN(num).words[0] < 0x4000000);79});80});8182describe('with Array input', function() {83it('should not fail on empty array', function() {84assert.equal(new BN([ ]).toString(16), '0');85});8687it('should import/export big endian', function() {88assert.equal(new BN([ 1, 2, 3 ]).toString(16), '10203');89assert.equal(new BN([ 1, 2, 3, 4 ]).toString(16), '1020304');90assert.equal(new BN([ 1, 2, 3, 4, 5 ]).toString(16), '102030405');91assert.equal(new BN([ 1, 2, 3, 4, 5, 6, 7, 8 ]).toString(16),92'102030405060708');93assert.equal(new BN([ 1, 2, 3, 4 ]).toArray().join(','), '1,2,3,4');94assert.equal(new BN([ 1, 2, 3, 4, 5, 6, 7, 8 ]).toArray().join(','),95'1,2,3,4,5,6,7,8');96});9798it('should import little endian', function() {99assert.equal(new BN([ 1, 2, 3 ], 10, 'le').toString(16), '30201');100assert.equal(new BN([ 1, 2, 3, 4 ], 10, 'le').toString(16), '4030201');101assert.equal(new BN([ 1, 2, 3, 4, 5 ], 10, 'le').toString(16),102'504030201');103assert.equal(new BN([ 1, 2, 3, 4, 5, 6, 7, 8 ], 'le').toString(16),104'807060504030201');105});106107it('should import big endian with implicit base', function() {108assert.equal(new BN([ 1, 2, 3, 4, 5 ], 'le').toString(16), '504030201');109});110});111112describe('with BN input', function() {113it('should clone BN', function() {114var num = new BN(12345);115assert.equal(new BN(num).toString(10), '12345');116});117});118});119120121