From 405ea0bf6f1d91ada0b04fc5942829e7ff0fab43 Mon Sep 17 00:00:00 2001 From: "Ryan X. Charles" Date: Tue, 29 Apr 2014 17:59:24 -0400 Subject: [PATCH] fix bignum issue In the browser, sometimes the config for bignum wasn't being set up if (somehow ... still not sure how this is possible) you use bitcore without using require('bitcore'). This would by pass the code that set the config for bignum. Solution is to put the config for bignum in bignum itself (in the browser). This fixes, in particular, an issue with base58 where it was depending on bignum having the proper config. Also I add the base58 tests to run in the browser which they weren't previously. And finally I add a small test for Bignum in the browser that makes sure the config is set properly. --- bitcore.js | 5 ---- lib/browser/Bignum.js | 2 ++ test/index.html | 2 ++ test/test.Base58.js | 52 ++++++++++++++++++++----------------- test/test.Bignum.browser.js | 18 +++++++++++++ 5 files changed, 50 insertions(+), 29 deletions(-) create mode 100644 test/test.Bignum.browser.js diff --git a/bitcore.js b/bitcore.js index 4a6af689a..1ab83ef4e 100644 --- a/bitcore.js +++ b/bitcore.js @@ -62,8 +62,3 @@ requireWhenAccessed('Message', './lib/Message'); requireWhenAccessed('Electrum', './lib/Electrum'); module.exports.Buffer = Buffer; -if (typeof process.versions === 'undefined') { - // Browser specific - module.exports.Bignum.config({EXPONENTIAL_AT: 9999999, DECIMAL_PLACES: 0, ROUNDING_MODE: 1}); -} - diff --git a/lib/browser/Bignum.js b/lib/browser/Bignum.js index 9a947d96e..b017dcad8 100644 --- a/lib/browser/Bignum.js +++ b/lib/browser/Bignum.js @@ -2118,4 +2118,6 @@ P['valueOf'] = function () { // EXPORT +BigNumber.config({EXPONENTIAL_AT: 9999999, DECIMAL_PLACES: 0, ROUNDING_MODE: 1}); module.exports = BigNumber; + diff --git a/test/index.html b/test/index.html index 5f88d545d..79a80fa49 100644 --- a/test/index.html +++ b/test/index.html @@ -16,7 +16,9 @@ + + diff --git a/test/test.Base58.js b/test/test.Base58.js index edc9227a2..0d2d6c6d0 100644 --- a/test/test.Base58.js +++ b/test/test.Base58.js @@ -1,6 +1,8 @@ -var assert = require('assert'); -var base58 = require('../lib/Base58').base58; -var base58Check = require('../lib/Base58').base58Check; +var chai = chai || require('chai'); +var assert = chai.assert; +var bitcore = bitcore || require('../bitcore'); +var base58 = bitcore.Base58.base58; +var base58Check = bitcore.Base58.base58Check; var testData = [ ["61", "2g", "C2dGTwc"], @@ -19,31 +21,33 @@ var testData = [ //suite('basic'); -test('allData', function() { - base58.encodeTest = function(raw, b58str) { - assert.equal(base58.encode(raw), b58str); - }; +describe('Base58', function() { + it('should pass these tests', function() { + base58.encodeTest = function(raw, b58str) { + assert.equal(base58.encode(raw), b58str); + }; - base58.decodeTest = function(raw, b58str) { - assert.equal(raw.toString('hex'), base58.decode(b58str).toString('hex')); - }; + base58.decodeTest = function(raw, b58str) { + assert.equal(raw.toString('hex'), base58.decode(b58str).toString('hex')); + }; - base58Check.encodeTest = function(raw, b58str) { - assert.equal(base58Check.encode(raw), b58str); - }; + base58Check.encodeTest = function(raw, b58str) { + assert.equal(base58Check.encode(raw), b58str); + }; - base58Check.decodeTest = function(raw, b58str) { - assert.equal(raw.toString('hex'), base58Check.decode(b58str).toString('hex')); - }; + base58Check.decodeTest = function(raw, b58str) { + assert.equal(raw.toString('hex'), base58Check.decode(b58str).toString('hex')); + }; - testData.forEach(function(datum) { - var raw = new Buffer(datum[0], 'hex'); - var b58 = datum[1]; - var b58Check = datum[2]; + testData.forEach(function(datum) { + var raw = new Buffer(datum[0], 'hex'); + var b58 = datum[1]; + var b58Check = datum[2]; - base58.encodeTest(raw, b58); - base58.decodeTest(raw, b58); - base58Check.encodeTest(raw, b58Check); - base58Check.decodeTest(raw, b58Check); + base58.encodeTest(raw, b58); + base58.decodeTest(raw, b58); + base58Check.encodeTest(raw, b58Check); + base58Check.decodeTest(raw, b58Check); + }); }); }); diff --git a/test/test.Bignum.browser.js b/test/test.Bignum.browser.js new file mode 100644 index 000000000..172d410f2 --- /dev/null +++ b/test/test.Bignum.browser.js @@ -0,0 +1,18 @@ +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); +var coinUtil = coinUtil || bitcore.util; +var should = chai.should(); +var assert = chai.assert; + +var Bignum = bitcore.Bignum; + +if (typeof process == 'undefined' || typeof process.versions == 'undefined') { + describe('#Bignum.browser', function() { + it('should have proper config settings', function() { + bitcore.Bignum.config().EXPONENTIAL_AT[0].should.equal(-9999999); + bitcore.Bignum.config().EXPONENTIAL_AT[1].should.equal(9999999); + bitcore.Bignum.config().DECIMAL_PLACES.should.equal(0); + bitcore.Bignum.config().ROUNDING_MODE.should.equal(1); + }); + }); +}