Add a file for script tests
[novacoin.git] / src / test / script_tests.cpp
1 #include <vector>
2 #include <boost/test/unit_test.hpp>
3 #include <boost/foreach.hpp>
4
5 #include "../main.h"
6 #include "../wallet.h"
7
8 using namespace std;
9
10 BOOST_AUTO_TEST_SUITE(script_tests)
11
12 BOOST_AUTO_TEST_CASE(script_PushData)
13 {
14     // Check that PUSHDATA1, PUSHDATA2, and PUSHDATA4 create the same value on
15     // the stack as the 1-75 opcodes do.
16     static const unsigned char direct[] = { 1, 0x5a };
17     static const unsigned char pushdata1[] = { OP_PUSHDATA1, 1, 0x5a };
18     static const unsigned char pushdata2[] = { OP_PUSHDATA2, 1, 0, 0x5a };
19     static const unsigned char pushdata4[] = { OP_PUSHDATA4, 1, 0, 0, 0, 0x5a };
20
21     vector<vector<unsigned char> > directStack;
22     BOOST_CHECK(EvalScript(directStack, CScript(&direct[0], &direct[sizeof(direct)]), CTransaction(), 0, 0));
23
24     vector<vector<unsigned char> > pushdata1Stack;
25     BOOST_CHECK(EvalScript(pushdata1Stack, CScript(&pushdata1[0], &pushdata1[sizeof(pushdata1)]), CTransaction(), 0, 0));
26     BOOST_CHECK(pushdata1Stack == directStack);
27
28     vector<vector<unsigned char> > pushdata2Stack;
29     BOOST_CHECK(EvalScript(pushdata2Stack, CScript(&pushdata2[0], &pushdata2[sizeof(pushdata2)]), CTransaction(), 0, 0));
30     BOOST_CHECK(pushdata2Stack == directStack);
31
32     vector<vector<unsigned char> > pushdata4Stack;
33     BOOST_CHECK(EvalScript(pushdata4Stack, CScript(&pushdata4[0], &pushdata4[sizeof(pushdata4)]), CTransaction(), 0, 0));
34     BOOST_CHECK(pushdata4Stack == directStack);
35 }
36
37 BOOST_AUTO_TEST_SUITE_END()