From ce21c99b43bd959ec03dbc19acae5688e51caee1 Mon Sep 17 00:00:00 2001 From: Ruben de Vries Date: Tue, 2 Feb 2016 13:06:16 +0100 Subject: [PATCH 1/3] add failing test case for hash160/256 typeforce check --- test/types.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/test/types.js b/test/types.js index 9556927..6423650 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 correct size', function () { + assert(types.Hash160bit(buffer20byte)) + assert(types.Hash256bit(buffer32byte)) + }) + + it('return false for incorrect size', function () { + assert.throws(function () { + types.Hash160bit(buffer32byte) + }, 'Expected 160-bit Buffer, got Number 256') + + assert.throws(function () { + types.Hash256bit(buffer20byte) + }, 'Expected 256-bit Buffer, got Number 160') + }) + + it('return true for oneOf', function () { + assert(typeforce(types.oneOf(types.Hash256bit, types.Hash160bit), buffer32byte), "Hash256 first") + assert(typeforce(types.oneOf(types.Hash160bit, types.Hash256bit), buffer32byte), "Hash160 first") + }) + }) }) From 7c7537fc57ad33eca79fc75e6e70f3614524c91f Mon Sep 17 00:00:00 2001 From: Ruben de Vries Date: Tue, 2 Feb 2016 14:04:37 +0100 Subject: [PATCH 2/3] use typeforce >= 1.6.2 which allows us to use `typeforce.TfTypeError` with a custom error message. --- package.json | 2 +- src/types.js | 3 ++- test/types.js | 6 +++--- 3 files changed, 6 insertions(+), 5 deletions(-) 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 6423650..94a174e 100644 --- a/test/types.js +++ b/test/types.js @@ -26,14 +26,14 @@ describe('types', function () { assert(types.Hash256bit(buffer32byte)) }) - it('return false for incorrect size', function () { + it('throws for incorrect size', function () { assert.throws(function () { types.Hash160bit(buffer32byte) - }, 'Expected 160-bit Buffer, got Number 256') + }, /Expected 160-bit Buffer, got 256-bit Buffer/) assert.throws(function () { types.Hash256bit(buffer20byte) - }, 'Expected 256-bit Buffer, got Number 160') + }, /Expected 256-bit Buffer, got 160-bit Buffer/) }) it('return true for oneOf', function () { From 1771067dfcf0a101d20b80805c0cd73ee43cd07d Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Fri, 5 Feb 2016 14:15:23 +1100 Subject: [PATCH 3/3] tests: fix standard error, reword descriptions --- test/types.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/types.js b/test/types.js index 94a174e..5bbf7e3 100644 --- a/test/types.js +++ b/test/types.js @@ -21,12 +21,17 @@ describe('types', 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 correct size', function () { + it('return true for valid size', function () { assert(types.Hash160bit(buffer20byte)) assert(types.Hash256bit(buffer32byte)) }) - it('throws for incorrect size', function () { + 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/) @@ -35,10 +40,5 @@ describe('types', function () { types.Hash256bit(buffer20byte) }, /Expected 256-bit Buffer, got 160-bit Buffer/) }) - - it('return true for oneOf', function () { - assert(typeforce(types.oneOf(types.Hash256bit, types.Hash160bit), buffer32byte), "Hash256 first") - assert(typeforce(types.oneOf(types.Hash160bit, types.Hash256bit), buffer32byte), "Hash160 first") - }) }) })