diff --git a/package.json b/package.json index ffd0f85..86c5e56 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "create-hmac": "^1.1.3", "ecurve": "^1.0.0", "randombytes": "^2.0.1", - "typeforce": "^1.5.5", + "typeforce": "^1.6.2", "wif": "^1.1.0" }, "devDependencies": { diff --git a/src/types.js b/src/types.js index 038d9b3..1a8ca86 100644 --- a/src/types.js +++ b/src/types.js @@ -2,7 +2,8 @@ var typeforce = require('typeforce') function nBuffer (value, n) { typeforce(types.Buffer, value) - if (value.length !== n) throw new Error('Expected ' + (n * 8) + '-bit Buffer, got ' + (value.length * 8) + '-bit Buffer') + if (value.length !== n) throw new typeforce.TfTypeError('Expected ' + (n * 8) + '-bit Buffer, got ' + (value.length * 8) + '-bit Buffer') + return true } diff --git a/test/types.js b/test/types.js index 9556927..5bbf7e3 100644 --- a/test/types.js +++ b/test/types.js @@ -2,6 +2,7 @@ var assert = require('assert') var types = require('../src/types') +var typeforce = require('typeforce') describe('types', function () { describe('BigInt/ECPoint', function () { @@ -15,4 +16,29 @@ describe('types', function () { assert(!types.ECPoint(new function NotAPoint () {})) }) }) + + describe('Buffer Hash160/Hash256', function () { + var buffer20byte = new Buffer((new Array(20 + 1)).join('00'), 'hex') + var buffer32byte = new Buffer((new Array(32 + 1)).join('00'), 'hex') + + it('return true for valid size', function () { + assert(types.Hash160bit(buffer20byte)) + assert(types.Hash256bit(buffer32byte)) + }) + + it('return true for oneOf', function () { + assert(typeforce(types.oneOf(types.Hash160bit, types.Hash256bit), buffer32byte)) + assert(typeforce(types.oneOf(types.Hash256bit, types.Hash160bit), buffer32byte)) + }) + + it('throws for invalid size', function () { + assert.throws(function () { + types.Hash160bit(buffer32byte) + }, /Expected 160-bit Buffer, got 256-bit Buffer/) + + assert.throws(function () { + types.Hash256bit(buffer20byte) + }, /Expected 256-bit Buffer, got 160-bit Buffer/) + }) + }) })