@@ -112,16 +112,20 @@ BOOST_AUTO_TEST_CASE(query_height__get_confirmed_hashes2__various__expected_size
112112 BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (0 , 1 ).size (), 1u );
113113 BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (0 , 2 ).size (), 2u );
114114 BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (0 , 3 ).size (), 3u );
115- BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (0 , 4 ).size (), 0u );
115+ BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (0 , 4 ).size (), 4u );
116+ BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (0 , 5 ).size (), 0u );
116117 BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (1 , 0 ).size (), 0u );
117118 BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (1 , 1 ).size (), 1u );
118119 BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (1 , 2 ).size (), 2u );
119- BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (1 , 3 ).size (), 0u );
120+ BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (1 , 3 ).size (), 3u );
121+ BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (1 , 4 ).size (), 0u );
120122 BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (2 , 0 ).size (), 0u );
121123 BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (2 , 1 ).size (), 1u );
122- BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (2 , 2 ).size (), 0u );
124+ BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (2 , 2 ).size (), 2u );
125+ BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (2 , 3 ).size (), 0u );
123126 BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (3 , 0 ).size (), 0u );
124- BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (3 , 1 ).size (), 0u );
127+ BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (3 , 1 ).size (), 1u );
128+ BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (3 , 2 ).size (), 0u );
125129 BOOST_REQUIRE_EQUAL (query.get_confirmed_hashes (4 , 0 ).size (), 0u );
126130}
127131
@@ -142,9 +146,97 @@ BOOST_AUTO_TEST_CASE(query_height__get_confirmed_hashes2__three__ascending_order
142146
143147 const auto hashes = query.get_confirmed_hashes (0 , 3 );
144148 BOOST_REQUIRE_EQUAL (hashes.size (), 3 );
145- BOOST_REQUIRE_EQUAL (hashes[0 ], test::block1.hash ());
146- BOOST_REQUIRE_EQUAL (hashes[1 ], test::block2.hash ());
147- BOOST_REQUIRE_EQUAL (hashes[2 ], test::block3.hash ());
149+ BOOST_REQUIRE_EQUAL (hashes[0 ], test::genesis.hash ());
150+ BOOST_REQUIRE_EQUAL (hashes[1 ], test::block1.hash ());
151+ BOOST_REQUIRE_EQUAL (hashes[2 ], test::block2.hash ());
152+ }
153+
154+ // get_confirmed_headers
155+
156+ BOOST_AUTO_TEST_CASE (query_height__get_confirmed_headers__empty__empty)
157+ {
158+ settings settings{};
159+ settings.path = TEST_DIRECTORY;
160+ test::chunk_store store{ settings };
161+ test::query_accessor query{ store };
162+ BOOST_REQUIRE_EQUAL (store.create (events_handler), error::success);
163+ BOOST_REQUIRE (query.initialize (test::genesis));
164+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (0 , 0 ).size (), 0u );
165+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (0 , 42 ).size (), 1u );
166+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (42 , 0 ).size (), 0u );
167+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (42 , 42 ).size (), 0u );
168+ }
169+
170+ BOOST_AUTO_TEST_CASE (query_height__get_confirmed_headers__unconfirmeds__empty)
171+ {
172+ settings settings{};
173+ settings.path = TEST_DIRECTORY;
174+ test::chunk_store store{ settings };
175+ test::query_accessor query{ store };
176+ BOOST_REQUIRE_EQUAL (store.create (events_handler), error::success);
177+ BOOST_REQUIRE (query.initialize (test::genesis));
178+ BOOST_REQUIRE (query.set (test::block1, test::context, false , false ));
179+ BOOST_REQUIRE (query.set (test::block2, test::context, false , false ));
180+ BOOST_REQUIRE (query.set (test::block3, test::context, false , false ));
181+ BOOST_REQUIRE (query.push_candidate (query.to_header (test::block1.hash ())));
182+ BOOST_REQUIRE (query.push_candidate (query.to_header (test::block2.hash ())));
183+ BOOST_REQUIRE (query.push_candidate (query.to_header (test::block3.hash ())));
184+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (0 , 0 ).size (), 0u );
185+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (0 , 42 ).size (), 1u );
186+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (42 , 0 ).size (), 0u );
187+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (42 , 42 ).size (), 0u );
188+ }
189+
190+ BOOST_AUTO_TEST_CASE (query_height__get_confirmed_headers__confirmeds__expected_size)
191+ {
192+ settings settings{};
193+ settings.path = TEST_DIRECTORY;
194+ test::chunk_store store{ settings };
195+ test::query_accessor query{ store };
196+ BOOST_REQUIRE_EQUAL (store.create (events_handler), error::success);
197+ BOOST_REQUIRE (query.initialize (test::genesis));
198+ BOOST_REQUIRE (query.set (test::block1, test::context, false , false ));
199+ BOOST_REQUIRE (query.set (test::block2, test::context, false , false ));
200+ BOOST_REQUIRE (query.set (test::block3, test::context, false , false ));
201+ BOOST_REQUIRE (query.push_confirmed (query.to_header (test::block1.hash ()), false ));
202+ BOOST_REQUIRE (query.push_confirmed (query.to_header (test::block2.hash ()), false ));
203+ BOOST_REQUIRE (query.push_candidate (query.to_header (test::block3.hash ())));
204+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (0 , 0 ).size (), 0u );
205+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (0 , 1 ).size (), 1u );
206+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (0 , 2 ).size (), 2u );
207+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (0 , 3 ).size (), 3u );
208+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (1 , 0 ).size (), 0u );
209+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (1 , 1 ).size (), 1u );
210+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (1 , 2 ).size (), 2u );
211+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (1 , 3 ).size (), 2u );
212+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (2 , 0 ).size (), 0u );
213+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (2 , 1 ).size (), 1u );
214+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (2 , 2 ).size (), 1u );
215+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (3 , 0 ).size (), 0u );
216+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (3 , 1 ).size (), 0u );
217+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (4 , 0 ).size (), 0u );
218+ BOOST_REQUIRE_EQUAL (query.get_confirmed_headers (4 , 1 ).size (), 0u );
219+ }
220+
221+ BOOST_AUTO_TEST_CASE (query_height__get_confirmed_headers__confirmeds__expected_headers)
222+ {
223+ settings settings{};
224+ settings.path = TEST_DIRECTORY;
225+ test::chunk_store store{ settings };
226+ test::query_accessor query{ store };
227+ BOOST_REQUIRE_EQUAL (store.create (events_handler), error::success);
228+ BOOST_REQUIRE (query.initialize (test::genesis));
229+ BOOST_REQUIRE (query.set (test::block1, test::context, false , false ));
230+ BOOST_REQUIRE (query.set (test::block2, test::context, false , false ));
231+ BOOST_REQUIRE (query.set (test::block3, test::context, false , false ));
232+ BOOST_REQUIRE (query.push_confirmed (query.to_header (test::block1.hash ()), false ));
233+ BOOST_REQUIRE (query.push_confirmed (query.to_header (test::block2.hash ()), false ));
234+ BOOST_REQUIRE (query.push_candidate (query.to_header (test::block3.hash ())));
235+
236+ const auto headers = query.get_confirmed_headers (1 , 3 );
237+ BOOST_REQUIRE_EQUAL (headers.size (), 2u );
238+ BOOST_REQUIRE_EQUAL (query.get_header_key (headers[0 ]), test::block1.hash ());
239+ BOOST_REQUIRE_EQUAL (query.get_header_key (headers[1 ]), test::block2.hash ());
148240}
149241
150242BOOST_AUTO_TEST_SUITE_END ()
0 commit comments