Merge #12001: [RPC] Adding ::minRelayTxFee amount to getmempoolinfo and updating...
[bitcoinplatinum.git] / src / test / limitedmap_tests.cpp
bloba4bd63cdef09e22102ef903f30b631e52d2e08e4
1 // Copyright (c) 2012-2017 The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 #include <limitedmap.h>
7 #include <test/test_bitcoin.h>
9 #include <boost/test/unit_test.hpp>
11 BOOST_FIXTURE_TEST_SUITE(limitedmap_tests, BasicTestingSetup)
13 BOOST_AUTO_TEST_CASE(limitedmap_test)
15 // create a limitedmap capped at 10 items
16 limitedmap<int, int> map(10);
18 // check that the max size is 10
19 BOOST_CHECK(map.max_size() == 10);
21 // check that it's empty
22 BOOST_CHECK(map.size() == 0);
24 // insert (-1, -1)
25 map.insert(std::pair<int, int>(-1, -1));
27 // make sure that the size is updated
28 BOOST_CHECK(map.size() == 1);
30 // make sure that the new item is in the map
31 BOOST_CHECK(map.count(-1) == 1);
33 // insert 10 new items
34 for (int i = 0; i < 10; i++) {
35 map.insert(std::pair<int, int>(i, i + 1));
38 // make sure that the map now contains 10 items...
39 BOOST_CHECK(map.size() == 10);
41 // ...and that the first item has been discarded
42 BOOST_CHECK(map.count(-1) == 0);
44 // iterate over the map, both with an index and an iterator
45 limitedmap<int, int>::const_iterator it = map.begin();
46 for (int i = 0; i < 10; i++) {
47 // make sure the item is present
48 BOOST_CHECK(map.count(i) == 1);
50 // use the iterator to check for the expected key and value
51 BOOST_CHECK(it->first == i);
52 BOOST_CHECK(it->second == i + 1);
54 // use find to check for the value
55 BOOST_CHECK(map.find(i)->second == i + 1);
57 // update and recheck
58 map.update(it, i + 2);
59 BOOST_CHECK(map.find(i)->second == i + 2);
61 it++;
64 // check that we've exhausted the iterator
65 BOOST_CHECK(it == map.end());
67 // resize the map to 5 items
68 map.max_size(5);
70 // check that the max size and size are now 5
71 BOOST_CHECK(map.max_size() == 5);
72 BOOST_CHECK(map.size() == 5);
74 // check that items less than 5 have been discarded
75 // and items greater than 5 are retained
76 for (int i = 0; i < 10; i++) {
77 if (i < 5) {
78 BOOST_CHECK(map.count(i) == 0);
79 } else {
80 BOOST_CHECK(map.count(i) == 1);
84 // erase some items not in the map
85 for (int i = 100; i < 1000; i += 100) {
86 map.erase(i);
89 // check that the size is unaffected
90 BOOST_CHECK(map.size() == 5);
92 // erase the remaining elements
93 for (int i = 5; i < 10; i++) {
94 map.erase(i);
97 // check that the map is now empty
98 BOOST_CHECK(map.empty());
101 BOOST_AUTO_TEST_SUITE_END()