From fdc78dad2ecace02bb6cbfdf0e7db817c248f395 Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Thu, 6 Mar 2014 17:21:42 -0600 Subject: [PATCH 1/3] merge weilu's changes --- src/address.js | 13 +------------ test/address.js | 52 +++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 49 insertions(+), 16 deletions(-) diff --git a/src/address.js b/src/address.js index a4e6a63..a4d5168 100644 --- a/src/address.js +++ b/src/address.js @@ -14,7 +14,7 @@ var Address = function (bytes, version) { this.hash = bytes.length <= 35 ? base58.checkDecode(bytes) : bytes.length <= 40 ? conv.hexToBytes(bytes) - : util.error('Bad input'); + : util.error('invalid or unrecognized input'); this.version = version || this.hash.version || mainnet; } @@ -33,10 +33,6 @@ Address.prototype.toString = function () { return base58.checkEncode(this.hash.slice(0), this.version); }; -Address.prototype.getHash = function () { - return conv.bytesToHex(this.hash); -}; - Address.getVersion = function(string) { return base58.decode(string)[0]; } @@ -50,11 +46,4 @@ Address.validate = function(string) { } }; -/** - * Parse a Bitcoin address contained in a string. - */ -Address.decodeString = function (string) { - return base58.checkDecode(string); -}; - module.exports = Address; diff --git a/test/address.js b/test/address.js index 6ea05b0..9dc50bc 100644 --- a/test/address.js +++ b/test/address.js @@ -1,13 +1,14 @@ /* global describe, it */ -var assert = require('assert'); -var Address = require('../src/address.js'); -var network = require('../src/network.js'); +var assert = require('assert') +var Address = require('../src/address.js') +var network = require('../src/network.js') +var base58 = require('../src/base58.js') var mainnet = network.mainnet.addressVersion var testnet = network.testnet.addressVersion describe('Address', function() { var testnetAddress, mainnetAddress; - var testnetP2shAddress, mainnetP2shAddress; + var testnetP2shAddress, mainnetP2shAddress beforeEach(function(){ testnetAddress = 'mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef' @@ -16,6 +17,49 @@ describe('Address', function() { mainnetP2shAddress = '3NJZLcZEEYBpxYEUGewU4knsQRn1WM5Fkt' }) + describe('parsing', function() { + it('works with Address object', function() { + var addr = new Address(new Address('mwrB4fgT1KSBCqELaWv7o7tsExuQzW3NY3', network.testnet.addressVersion)) + + assert.equal(addr.toString(), 'mwrB4fgT1KSBCqELaWv7o7tsExuQzW3NY3') + assert.equal(addr.version, network.testnet.addressVersion) + }) + + it('works with hex', function() { + var addr = new Address('13483382d3c3d43fc9d7b52e652b6bbb70e8b667') + assert.equal(addr.toString(), '12kxLGqrnnchwN9bHHNV2fWDtJGwxKTcJS') + }) + + it('throws error for invalid or unrecognized input', function() { + var addr = + assert.throws( + function() { + new Address('beepboopbeepboopbeepboopbeepboopbeepboopbeep') + }, + Error + ) + }) + + it('works for byte input', function() { + var hash = base58.checkDecode('1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa') + var addr = new Address(hash) + assert.equal(addr.hash, hash) + assert.equal(network.mainnet.addressVersion, hash.version) + + var hash = base58.checkDecode('mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef') + var addr = new Address(hash) + assert.equal(addr.hash, hash) + assert.equal(network.testnet.addressVersion, hash.version) + }) + }) + + describe('getVersion', function() { + it('returns the proper address version', function() { + assert.equal(Address.getVersion('1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa'), network.mainnet.addressVersion) + assert.equal(Address.getVersion('mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef'), network.testnet.addressVersion) + }) + }) + describe('toString', function() { it('defaults to base58', function() { var addr = '18fN1QTGWmHWCA9r2dyDH6FbMEyc7XHmQQ'; From 09925cff5aae567fc4958e219e867b47e5e528bd Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Thu, 6 Mar 2014 17:27:40 -0600 Subject: [PATCH 2/3] cleanup throw tests, add case for bad input --- test/address.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/test/address.js b/test/address.js index 9dc50bc..3b33f7d 100644 --- a/test/address.js +++ b/test/address.js @@ -31,13 +31,9 @@ describe('Address', function() { }) it('throws error for invalid or unrecognized input', function() { - var addr = - assert.throws( - function() { - new Address('beepboopbeepboopbeepboopbeepboopbeepboopbeep') - }, - Error - ) + assert.throws(function() { + new Address('beepboopbeepboopbeepboopbeepboopbeepboopbeep') + }, Error) }) it('works for byte input', function() { @@ -51,6 +47,12 @@ describe('Address', function() { assert.equal(addr.hash, hash) assert.equal(network.testnet.addressVersion, hash.version) }) + + it('fails for bad input', function() { + assert.throws(function() { + new Address('foo') + }, Error) + }) }) describe('getVersion', function() { From a6706ea8bed730375c4ced0691be993a94690005 Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Thu, 6 Mar 2014 17:57:32 -0600 Subject: [PATCH 3/3] fix spacing --- test/address.js | 66 ++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/test/address.js b/test/address.js index 3b33f7d..4b5f8d1 100644 --- a/test/address.js +++ b/test/address.js @@ -18,48 +18,48 @@ describe('Address', function() { }) describe('parsing', function() { - it('works with Address object', function() { - var addr = new Address(new Address('mwrB4fgT1KSBCqELaWv7o7tsExuQzW3NY3', network.testnet.addressVersion)) + it('works with Address object', function() { + var addr = new Address(new Address('mwrB4fgT1KSBCqELaWv7o7tsExuQzW3NY3', network.testnet.addressVersion)) - assert.equal(addr.toString(), 'mwrB4fgT1KSBCqELaWv7o7tsExuQzW3NY3') - assert.equal(addr.version, network.testnet.addressVersion) - }) + assert.equal(addr.toString(), 'mwrB4fgT1KSBCqELaWv7o7tsExuQzW3NY3') + assert.equal(addr.version, network.testnet.addressVersion) + }) - it('works with hex', function() { - var addr = new Address('13483382d3c3d43fc9d7b52e652b6bbb70e8b667') - assert.equal(addr.toString(), '12kxLGqrnnchwN9bHHNV2fWDtJGwxKTcJS') - }) + it('works with hex', function() { + var addr = new Address('13483382d3c3d43fc9d7b52e652b6bbb70e8b667') + assert.equal(addr.toString(), '12kxLGqrnnchwN9bHHNV2fWDtJGwxKTcJS') + }) - it('throws error for invalid or unrecognized input', function() { - assert.throws(function() { - new Address('beepboopbeepboopbeepboopbeepboopbeepboopbeep') - }, Error) - }) + it('throws error for invalid or unrecognized input', function() { + assert.throws(function() { + new Address('beepboopbeepboopbeepboopbeepboopbeepboopbeep') + }, Error) + }) - it('works for byte input', function() { - var hash = base58.checkDecode('1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa') - var addr = new Address(hash) - assert.equal(addr.hash, hash) - assert.equal(network.mainnet.addressVersion, hash.version) + it('works for byte input', function() { + var hash = base58.checkDecode('1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa') + var addr = new Address(hash) + assert.equal(addr.hash, hash) + assert.equal(network.mainnet.addressVersion, hash.version) - var hash = base58.checkDecode('mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef') - var addr = new Address(hash) - assert.equal(addr.hash, hash) - assert.equal(network.testnet.addressVersion, hash.version) - }) + var hash = base58.checkDecode('mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef') + var addr = new Address(hash) + assert.equal(addr.hash, hash) + assert.equal(network.testnet.addressVersion, hash.version) + }) - it('fails for bad input', function() { - assert.throws(function() { - new Address('foo') - }, Error) - }) + it('fails for bad input', function() { + assert.throws(function() { + new Address('foo') + }, Error) + }) }) describe('getVersion', function() { - it('returns the proper address version', function() { - assert.equal(Address.getVersion('1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa'), network.mainnet.addressVersion) - assert.equal(Address.getVersion('mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef'), network.testnet.addressVersion) - }) + it('returns the proper address version', function() { + assert.equal(Address.getVersion('1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa'), network.mainnet.addressVersion) + assert.equal(Address.getVersion('mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef'), network.testnet.addressVersion) + }) }) describe('toString', function() {