mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-15 14:22:37 -03:00
faec28252c
-BEGIN VERIFY SCRIPT- # Move files for f in $(git ls-files src/test/lib/); do git mv $f src/test/util/; done git mv src/test/setup_common.cpp src/test/util/ git mv src/test/setup_common.h src/test/util/ # Replace Windows paths sed -i -e 's|\\setup_common|\\util\\setup_common|g' $(git grep -l '\\setup_common') sed -i -e 's|src\\test\\lib\\|src\\test\\util\\|g' build_msvc/test_bitcoin/test_bitcoin.vcxproj # Everything else sed -i -e 's|/setup_common|/util/setup_common|g' $(git grep -l 'setup_common') sed -i -e 's|test/lib/|test/util/|g' $(git grep -l 'test/lib/') # Fix include guard sed -i -e 's|BITCOIN_TEST_SETUP_COMMON_H|BITCOIN_TEST_UTIL_SETUP_COMMON_H|g' ./src/test/util/setup_common.h sed -i -e 's|BITCOIN_TEST_LIB_|BITCOIN_TEST_UTIL_|g' $(git grep -l 'BITCOIN_TEST_LIB_') -END VERIFY SCRIPT-
101 lines
2.6 KiB
C++
101 lines
2.6 KiB
C++
// Copyright (c) 2012-2019 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#include <limitedmap.h>
|
|
|
|
#include <test/util/setup_common.h>
|
|
|
|
#include <boost/test/unit_test.hpp>
|
|
|
|
BOOST_FIXTURE_TEST_SUITE(limitedmap_tests, BasicTestingSetup)
|
|
|
|
BOOST_AUTO_TEST_CASE(limitedmap_test)
|
|
{
|
|
// create a limitedmap capped at 10 items
|
|
limitedmap<int, int> map(10);
|
|
|
|
// check that the max size is 10
|
|
BOOST_CHECK(map.max_size() == 10);
|
|
|
|
// check that it's empty
|
|
BOOST_CHECK(map.size() == 0);
|
|
|
|
// insert (-1, -1)
|
|
map.insert(std::pair<int, int>(-1, -1));
|
|
|
|
// make sure that the size is updated
|
|
BOOST_CHECK(map.size() == 1);
|
|
|
|
// make sure that the new item is in the map
|
|
BOOST_CHECK(map.count(-1) == 1);
|
|
|
|
// insert 10 new items
|
|
for (int i = 0; i < 10; i++) {
|
|
map.insert(std::pair<int, int>(i, i + 1));
|
|
}
|
|
|
|
// make sure that the map now contains 10 items...
|
|
BOOST_CHECK(map.size() == 10);
|
|
|
|
// ...and that the first item has been discarded
|
|
BOOST_CHECK(map.count(-1) == 0);
|
|
|
|
// iterate over the map, both with an index and an iterator
|
|
limitedmap<int, int>::const_iterator it = map.begin();
|
|
for (int i = 0; i < 10; i++) {
|
|
// make sure the item is present
|
|
BOOST_CHECK(map.count(i) == 1);
|
|
|
|
// use the iterator to check for the expected key and value
|
|
BOOST_CHECK(it->first == i);
|
|
BOOST_CHECK(it->second == i + 1);
|
|
|
|
// use find to check for the value
|
|
BOOST_CHECK(map.find(i)->second == i + 1);
|
|
|
|
// update and recheck
|
|
map.update(it, i + 2);
|
|
BOOST_CHECK(map.find(i)->second == i + 2);
|
|
|
|
it++;
|
|
}
|
|
|
|
// check that we've exhausted the iterator
|
|
BOOST_CHECK(it == map.end());
|
|
|
|
// resize the map to 5 items
|
|
map.max_size(5);
|
|
|
|
// check that the max size and size are now 5
|
|
BOOST_CHECK(map.max_size() == 5);
|
|
BOOST_CHECK(map.size() == 5);
|
|
|
|
// check that items less than 5 have been discarded
|
|
// and items greater than 5 are retained
|
|
for (int i = 0; i < 10; i++) {
|
|
if (i < 5) {
|
|
BOOST_CHECK(map.count(i) == 0);
|
|
} else {
|
|
BOOST_CHECK(map.count(i) == 1);
|
|
}
|
|
}
|
|
|
|
// erase some items not in the map
|
|
for (int i = 100; i < 1000; i += 100) {
|
|
map.erase(i);
|
|
}
|
|
|
|
// check that the size is unaffected
|
|
BOOST_CHECK(map.size() == 5);
|
|
|
|
// erase the remaining elements
|
|
for (int i = 5; i < 10; i++) {
|
|
map.erase(i);
|
|
}
|
|
|
|
// check that the map is now empty
|
|
BOOST_CHECK(map.empty());
|
|
}
|
|
|
|
BOOST_AUTO_TEST_SUITE_END()
|