From b17533f8fbbdc3c97094d00fb62c9266cb57f9ed Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Mon, 10 Mar 2014 23:14:21 +0100 Subject: [PATCH] Add script test to prove that OP_0 evaluates as the empty vector, rather than [0]. Also adds debug output in case an script_invalid.json test fails. --- .../java/com/google/bitcoin/script/ScriptTest.java | 10 ++++++++-- .../com/google/bitcoin/script/script_invalid.json | 4 +++- .../com/google/bitcoin/script/script_valid.json | 4 +++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/core/src/test/java/com/google/bitcoin/script/ScriptTest.java b/core/src/test/java/com/google/bitcoin/script/ScriptTest.java index c409a3fb..4d56b3cf 100644 --- a/core/src/test/java/com/google/bitcoin/script/ScriptTest.java +++ b/core/src/test/java/com/google/bitcoin/script/ScriptTest.java @@ -1,5 +1,6 @@ /** * Copyright 2011 Google Inc. + * Copyright 2014 Andreas Schildbach * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -192,10 +193,15 @@ public class ScriptTest { if (line.trim().endsWith("],") || line.trim().equals("]")) { String[] scripts = script.split(","); try { - Script scriptSig = parseScriptString(scripts[0].replaceAll("[\"\\[\\]]", "").trim()); - Script scriptPubKey = parseScriptString(scripts[1].replaceAll("[\"\\[\\]]", "").trim()); + scripts[0] = scripts[0].replaceAll("[\"\\[\\]]", "").trim(); + scripts[1] = scripts[1].replaceAll("[\"\\[\\]]", "").trim(); + Script scriptSig = parseScriptString(scripts[0]); + Script scriptPubKey = parseScriptString(scripts[1]); scriptSig.correctlySpends(new Transaction(params), 0, scriptPubKey, true); + System.err.println("scriptSig: " + scripts[0]); + System.err.println("scriptPubKey: " + scripts[1]); + System.err.flush(); fail(); } catch (VerificationException e) { // Expected. diff --git a/core/src/test/resources/com/google/bitcoin/script/script_invalid.json b/core/src/test/resources/com/google/bitcoin/script/script_invalid.json index 761cc4a0..8cb365a4 100644 --- a/core/src/test/resources/com/google/bitcoin/script/script_invalid.json +++ b/core/src/test/resources/com/google/bitcoin/script/script_invalid.json @@ -325,5 +325,7 @@ ["NOP1 0x01 1", "HASH160 0x14 0xda1745e9b549bd0bfa1a569971c77eba30cd5a4b EQUAL"], ["0 0x01 0x50", "HASH160 0x14 0xece424a6bb6ddf4db592c0faed60685047a361b1 EQUAL", "OP_RESERVED in P2SH should fail"], -["0 0x01 VER", "HASH160 0x14 0x0f4d7845db968f2a81b530b6f3c1d6246d4c7e01 EQUAL", "OP_VER in P2SH should fail"] +["0 0x01 VER", "HASH160 0x14 0x0f4d7845db968f2a81b530b6f3c1d6246d4c7e01 EQUAL", "OP_VER in P2SH should fail"], + +["0x00", "'00' EQUAL", "Basic OP_0 execution"] ] diff --git a/core/src/test/resources/com/google/bitcoin/script/script_valid.json b/core/src/test/resources/com/google/bitcoin/script/script_valid.json index e4c181ca..3b4c1918 100644 --- a/core/src/test/resources/com/google/bitcoin/script/script_valid.json +++ b/core/src/test/resources/com/google/bitcoin/script/script_valid.json @@ -411,5 +411,7 @@ ["0x4c 0x40 0x42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242", "0x4d 0x4000 0x42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242 EQUAL", -"Basic PUSHDATA1 signedness check"] +"Basic PUSHDATA1 signedness check"], + +["0x00", "SIZE 0 EQUAL", "Basic OP_0 execution"] ]