2 #include <boost/test/unit_test.hpp>
3 #include <boost/foreach.hpp>
11 static std::vector<unsigned char>
12 Serialize(const CScript& s)
14 std::vector<unsigned char> sSerialized(s);
18 BOOST_AUTO_TEST_SUITE(sigopcount_tests)
20 BOOST_AUTO_TEST_CASE(GetSigOpCount)
22 // Test CScript::GetSigOpCount()
24 BOOST_CHECK_EQUAL(s1.GetSigOpCount(false), 0);
25 BOOST_CHECK_EQUAL(s1.GetSigOpCount(true), 0);
28 s1 << OP_1 << dummy << dummy << OP_2 << OP_CHECKMULTISIG;
29 BOOST_CHECK_EQUAL(s1.GetSigOpCount(true), 2);
30 s1 << OP_IF << OP_CHECKSIG << OP_ENDIF;
31 BOOST_CHECK_EQUAL(s1.GetSigOpCount(true), 3);
32 BOOST_CHECK_EQUAL(s1.GetSigOpCount(false), 21);
35 p2sh.SetDestination(s1.GetID());
37 scriptSig << OP_0 << Serialize(s1);
38 BOOST_CHECK_EQUAL(p2sh.GetSigOpCount(scriptSig), 3);
40 std::vector<CKey> keys;
41 for (int i = 0; i < 3; i++)
48 s2.SetMultisig(1, keys);
49 BOOST_CHECK_EQUAL(s2.GetSigOpCount(true), 3);
50 BOOST_CHECK_EQUAL(s2.GetSigOpCount(false), 20);
52 p2sh.SetDestination(s2.GetID());
53 BOOST_CHECK_EQUAL(p2sh.GetSigOpCount(true), 0);
54 BOOST_CHECK_EQUAL(p2sh.GetSigOpCount(false), 0);
56 scriptSig2 << OP_1 << dummy << dummy << Serialize(s2);
57 BOOST_CHECK_EQUAL(p2sh.GetSigOpCount(scriptSig2), 3);
60 BOOST_AUTO_TEST_SUITE_END()