aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Todd <pete@petertodd.org>2014-03-12 20:07:51 -0400
committerPeter Todd <pete@petertodd.org>2014-03-12 20:14:01 -0400
commitb41e5947735097d12eb795f2d1dc9c79ff391aba (patch)
tree4572d19728ecae595062d871d31c1f39275f6f85
parentca0b8acbf38a02f39e313a1c633d577f9bf7d983 (diff)
Fix script test handling of empty scripts
Previously an empty script would evaluate to OP_0
-rw-r--r--src/test/data/script_invalid.json10
-rw-r--r--src/test/data/script_valid.json12
-rw-r--r--src/test/script_tests.cpp6
3 files changed, 27 insertions, 1 deletions
diff --git a/src/test/data/script_invalid.json b/src/test/data/script_invalid.json
index 8cb365a46f..609c89be06 100644
--- a/src/test/data/script_invalid.json
+++ b/src/test/data/script_invalid.json
@@ -1,8 +1,18 @@
[
+["", "DEPTH", "Test the test: we should have an empty stack after scriptSig evaluation"],
+[" ", "DEPTH", "and multiple spaces should not change that."],
+[" ", "DEPTH"],
+[" ", "DEPTH"],
+
["", ""],
["", "NOP"],
+["", "NOP DEPTH"],
["NOP", ""],
+["NOP", "DEPTH"],
["NOP","NOP"],
+["NOP","NOP DEPTH"],
+
+["DEPTH", ""],
["0x4c01","0x01 NOP", "PUSHDATA1 with not enough bytes"],
["0x4d0200ff","0x01 NOP", "PUSHDATA2 with not enough bytes"],
diff --git a/src/test/data/script_valid.json b/src/test/data/script_valid.json
index 3b4c191865..c50767071a 100644
--- a/src/test/data/script_valid.json
+++ b/src/test/data/script_valid.json
@@ -1,4 +1,16 @@
[
+["", "DEPTH 0 EQUAL", "Test the test: we should have an empty stack after scriptSig evaluation"],
+[" ", "DEPTH 0 EQUAL", "and multiple spaces should not change that."],
+[" ", "DEPTH 0 EQUAL"],
+[" ", "DEPTH 0 EQUAL"],
+["1 2", "2 EQUALVERIFY 1 EQUAL", "Similarly whitespace around and between symbols"],
+["1 2", "2 EQUALVERIFY 1 EQUAL"],
+[" 1 2", "2 EQUALVERIFY 1 EQUAL"],
+["1 2 ", "2 EQUALVERIFY 1 EQUAL"],
+[" 1 2 ", "2 EQUALVERIFY 1 EQUAL"],
+
+["1", ""],
+
["0x01 0x0b", "11 EQUAL", "push 1 byte"],
["0x02 0x417a", "'Az' EQUAL"],
["0x4b 0x417a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a",
diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp
index dd1b613047..f9ca65653b 100644
--- a/src/test/script_tests.cpp
+++ b/src/test/script_tests.cpp
@@ -63,7 +63,11 @@ ParseScript(string s)
BOOST_FOREACH(string w, words)
{
- if (all(w, is_digit()) ||
+ if (w.size() == 0)
+ {
+ // Empty string, ignore. (boost::split given '' will return one word)
+ }
+ else if (all(w, is_digit()) ||
(starts_with(w, "-") && all(string(w.begin()+1, w.end()), is_digit())))
{
// Number