From d96b7036fb9a034e883fd005c5756362be22900d Mon Sep 17 00:00:00 2001
From: Daniel Cousens <github@dcousens.com>
Date: Wed, 31 Aug 2016 15:21:36 +1000
Subject: [PATCH] tests: add BIP62 compliance tests

---
 package.json   |  1 +
 test/script.js | 34 ++++++++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+)

diff --git a/package.json b/package.json
index b8e37f0..2d4ba52 100644
--- a/package.json
+++ b/package.json
@@ -82,6 +82,7 @@
     "bs58": "^2.0.1",
     "cb-http-client": "^0.2.0",
     "httpify": "^1.0.0",
+    "minimaldata": "^1.0.0",
     "mocha": "^2.2.0",
     "proxyquire": "^1.4.0",
     "sinon": "^1.12.2",
diff --git a/test/script.js b/test/script.js
index e1598cd..e3e7f3f 100644
--- a/test/script.js
+++ b/test/script.js
@@ -3,6 +3,7 @@
 var assert = require('assert')
 var bcrypto = require('../src/crypto')
 var bscript = require('../src/script')
+var minimalData = require('minimaldata')
 var ops = require('../src/opcodes')
 
 var fixtures = require('./fixtures/script.json')
@@ -440,4 +441,37 @@ describe('script', function () {
       })
     })
   })
+
+  describe('SCRIPT_VERIFY_MINIMALDATA policy', function () {
+    fixtures.valid.forEach(function (f) {
+      if (f.scriptSigHex) {
+        it('compliant for ' + f.type + ' scriptSig ' + f.scriptSig, function () {
+          var script = new Buffer(f.scriptSigHex, 'hex')
+
+          assert(minimalData(script))
+        })
+      }
+
+      if (f.scriptPubKeyHex) {
+        it('compliant for ' + f.type + ' scriptPubKey ' + f.scriptPubKey, function () {
+          var script = new Buffer(f.scriptPubKeyHex, 'hex')
+
+          assert(minimalData(script))
+        })
+      }
+    })
+
+    function testEncodingForSize (i) {
+      it('compliant for data PUSH of length ' + i, function () {
+        var buffer = new Buffer(i)
+        var script = bscript.compile([buffer])
+
+        assert(minimalData(script), 'Failed for ' + i + ' length script')
+      })
+    }
+
+    for (var i = 0; i < 520; ++i) {
+      testEncodingForSize(i)
+    }
+  })
 })