Add a file for script tests
authorVegard Nossum <vegard.nossum@gmail.com>
Sun, 31 Jul 2011 18:01:31 +0000 (20:01 +0200)
committerGavin Andresen <gavinandresen@gmail.com>
Mon, 8 Aug 2011 18:31:08 +0000 (14:31 -0400)
src/test/script_tests.cpp [new file with mode: 0644]
src/test/test_bitcoin.cpp

diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp
new file mode 100644 (file)
index 0000000..5e74648
--- /dev/null
@@ -0,0 +1,37 @@
+#include <vector>
+#include <boost/test/unit_test.hpp>
+#include <boost/foreach.hpp>
+
+#include "../main.h"
+#include "../wallet.h"
+
+using namespace std;
+
+BOOST_AUTO_TEST_SUITE(script_tests)
+
+BOOST_AUTO_TEST_CASE(script_PushData)
+{
+    // Check that PUSHDATA1, PUSHDATA2, and PUSHDATA4 create the same value on
+    // the stack as the 1-75 opcodes do.
+    static const unsigned char direct[] = { 1, 0x5a };
+    static const unsigned char pushdata1[] = { OP_PUSHDATA1, 1, 0x5a };
+    static const unsigned char pushdata2[] = { OP_PUSHDATA2, 1, 0, 0x5a };
+    static const unsigned char pushdata4[] = { OP_PUSHDATA4, 1, 0, 0, 0, 0x5a };
+
+    vector<vector<unsigned char> > directStack;
+    BOOST_CHECK(EvalScript(directStack, CScript(&direct[0], &direct[sizeof(direct)]), CTransaction(), 0, 0));
+
+    vector<vector<unsigned char> > pushdata1Stack;
+    BOOST_CHECK(EvalScript(pushdata1Stack, CScript(&pushdata1[0], &pushdata1[sizeof(pushdata1)]), CTransaction(), 0, 0));
+    BOOST_CHECK(pushdata1Stack == directStack);
+
+    vector<vector<unsigned char> > pushdata2Stack;
+    BOOST_CHECK(EvalScript(pushdata2Stack, CScript(&pushdata2[0], &pushdata2[sizeof(pushdata2)]), CTransaction(), 0, 0));
+    BOOST_CHECK(pushdata2Stack == directStack);
+
+    vector<vector<unsigned char> > pushdata4Stack;
+    BOOST_CHECK(EvalScript(pushdata4Stack, CScript(&pushdata4[0], &pushdata4[sizeof(pushdata4)]), CTransaction(), 0, 0));
+    BOOST_CHECK(pushdata4Stack == directStack);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
index 3d7ee90..6a9dac2 100644 (file)
@@ -6,6 +6,7 @@
 
 #include "uint160_tests.cpp"
 #include "uint256_tests.cpp"
+#include "script_tests.cpp"
 
 
 CWallet* pwalletMain;