Changeset View
Changeset View
Standalone View
Standalone View
src/test/blockfilter_tests.cpp
Show All 24 Lines | for (int i = 0; i < 100; ++i) { | ||||
element1[0] = i; | element1[0] = i; | ||||
included_elements.insert(std::move(element1)); | included_elements.insert(std::move(element1)); | ||||
GCSFilter::Element element2(32); | GCSFilter::Element element2(32); | ||||
element2[1] = i; | element2[1] = i; | ||||
excluded_elements.insert(std::move(element2)); | excluded_elements.insert(std::move(element2)); | ||||
} | } | ||||
GCSFilter filter(0, 0, 10, 1 << 10, included_elements); | GCSFilter filter({0, 0, 10, 1 << 10}, included_elements); | ||||
for (const auto &element : included_elements) { | for (const auto &element : included_elements) { | ||||
BOOST_CHECK(filter.Match(element)); | BOOST_CHECK(filter.Match(element)); | ||||
auto insertion = excluded_elements.insert(element); | auto insertion = excluded_elements.insert(element); | ||||
BOOST_CHECK(filter.MatchAny(excluded_elements)); | BOOST_CHECK(filter.MatchAny(excluded_elements)); | ||||
excluded_elements.erase(insertion.first); | excluded_elements.erase(insertion.first); | ||||
} | } | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(gcsfilter_default_constructor) { | |||||
GCSFilter filter; | |||||
BOOST_CHECK_EQUAL(filter.GetN(), 0); | |||||
BOOST_CHECK_EQUAL(filter.GetEncoded().size(), 1); | |||||
const GCSFilter::Params ¶ms = filter.GetParams(); | |||||
BOOST_CHECK_EQUAL(params.m_siphash_k0, 0); | |||||
BOOST_CHECK_EQUAL(params.m_siphash_k1, 0); | |||||
BOOST_CHECK_EQUAL(params.m_P, 0); | |||||
BOOST_CHECK_EQUAL(params.m_M, 1); | |||||
} | |||||
BOOST_AUTO_TEST_CASE(blockfilter_basic_test) { | BOOST_AUTO_TEST_CASE(blockfilter_basic_test) { | ||||
CScript included_scripts[5], excluded_scripts[3]; | CScript included_scripts[5], excluded_scripts[3]; | ||||
// First two are outputs on a single transaction. | // First two are outputs on a single transaction. | ||||
included_scripts[0] << std::vector<uint8_t>(0, 65) << OP_CHECKSIG; | included_scripts[0] << std::vector<uint8_t>(0, 65) << OP_CHECKSIG; | ||||
included_scripts[1] << OP_DUP << OP_HASH160 << std::vector<uint8_t>(1, 20) | included_scripts[1] << OP_DUP << OP_HASH160 << std::vector<uint8_t>(1, 20) | ||||
<< OP_EQUALVERIFY << OP_CHECKSIG; | << OP_EQUALVERIFY << OP_CHECKSIG; | ||||
Show All 40 Lines | BOOST_AUTO_TEST_CASE(blockfilter_basic_test) { | ||||
for (const CScript &script : included_scripts) { | for (const CScript &script : included_scripts) { | ||||
BOOST_CHECK( | BOOST_CHECK( | ||||
filter.Match(GCSFilter::Element(script.begin(), script.end()))); | filter.Match(GCSFilter::Element(script.begin(), script.end()))); | ||||
} | } | ||||
for (const CScript &script : excluded_scripts) { | for (const CScript &script : excluded_scripts) { | ||||
BOOST_CHECK( | BOOST_CHECK( | ||||
!filter.Match(GCSFilter::Element(script.begin(), script.end()))); | !filter.Match(GCSFilter::Element(script.begin(), script.end()))); | ||||
} | } | ||||
// Test serialization/unserialization. | |||||
BlockFilter block_filter2; | |||||
CDataStream stream(SER_NETWORK, PROTOCOL_VERSION); | |||||
stream << block_filter; | |||||
stream >> block_filter2; | |||||
BOOST_CHECK_EQUAL(block_filter.GetFilterType(), | |||||
block_filter2.GetFilterType()); | |||||
BOOST_CHECK(block_filter.GetBlockHash() == block_filter2.GetBlockHash()); | |||||
BOOST_CHECK(block_filter.GetEncodedFilter() == | |||||
block_filter2.GetEncodedFilter()); | |||||
} | } | ||||
BOOST_AUTO_TEST_CASE(blockfilters_json_test) { | BOOST_AUTO_TEST_CASE(blockfilters_json_test) { | ||||
UniValue json; | UniValue json; | ||||
std::string json_data(json_tests::blockfilters, | std::string json_data(json_tests::blockfilters, | ||||
json_tests::blockfilters + | json_tests::blockfilters + | ||||
sizeof(json_tests::blockfilters)); | sizeof(json_tests::blockfilters)); | ||||
if (!json.read(json_data) || !json.isArray()) { | if (!json.read(json_data) || !json.isArray()) { | ||||
▲ Show 20 Lines • Show All 54 Lines • Show Last 20 Lines |