@@ -183,6 +183,14 @@ namespace xtd::collections::generic::helpers::tests {
183183 assert::are_equal (84 , items.front ());
184184 }
185185
186+ void test_method_ (push_move_value) {
187+ auto q = raw_queue<string>{};
188+ auto s = " hello" _s;
189+ q.push (std::move (s));
190+ assert::are_equal (" hello" , q.back ());
191+ assert::is_true (s.empty () || s == " hello" );
192+ }
193+
186194 void test_method_ (reserve) {
187195 auto items = raw_queue<int >(std::deque<int > {84 , 42 , 21 });
188196 assert::are_equal (3_z, items.capacity ());
@@ -211,212 +219,52 @@ namespace xtd::collections::generic::helpers::tests {
211219 assert::are_equal (3_z, items.capacity ());
212220 assert::are_equal (3_z, items.size ());
213221 }
214-
215- /*
216-
217- void test_method_(pop_back) {
218- auto items = raw_queue {84, 42, 21};
219- items.pop_back();
220- collection_assert::are_equal({84, 42}, items);
221- }
222-
223- void test_method_(pop_back_with_bool) {
224- auto items = raw_queue {true, false, true};
225- items.pop_back();
226- collection_assert::are_equal({true, false}, items);
227- }
228-
229- void test_method_(push_back) {
230- auto items = raw_queue {84, 42, 21};
231- items.push_back(63);
232- collection_assert::are_equal({84, 42, 21, 63}, items);
233- }
234-
235- void test_method_(push_back_with_bool) {
236- auto items = raw_queue {true, false, true};
237- items.push_back(false);
238- collection_assert::are_equal({true, false, true, false}, items);
239- }
240-
241- void test_method_(push_back_with_move) {
242- auto items = raw_queue {84, 42, 21};
243- auto v = 63;
244- items.push_back(std::move(v));
245- collection_assert::are_equal({84, 42, 21, 63}, items);
246- }
247-
248- void test_method_(push_back_with_move_and_bool) {
249- auto items = raw_queue {true, false, true};
250- auto v = false;
251- items.push_back(std::move(v));
252- collection_assert::are_equal({true, false, true, false}, items);
253- }
254-
255- void test_method_(reserve) {
256- auto items = raw_queue {84, 42, 21};
257- items.reserve(42);
258- assert::is_greater_or_equal(items.capacity(), 42_z);
259- }
260-
261- void test_method_(reserve_with_bool) {
262- auto items = raw_queue {true, false, true};
263- items.reserve(42);
264- assert::is_greater_or_equal(items.capacity(), 42_z);
265- }
266-
267- void test_method_(resize) {
268- auto items = raw_queue {84, 42, 21};
269- items.resize(4);
270- collection_assert::are_equal({84, 42, 21, 0}, items);
271- items.resize(2);
272- collection_assert::are_equal({84, 42}, items);
273- }
274-
275- void test_method_(resize_with_bool) {
276- auto items = raw_queue {true, false, true};
277- items.resize(4);
278- collection_assert::are_equal({true, false, true, false}, items);
279- items.resize(2);
280- collection_assert::are_equal({true, false}, items);
281- }
282-
283- void test_method_(shrink_to_fit) {
284- auto items = raw_queue {84, 42, 21};
285- items.reserve(42);
286- items.shrink_to_fit();
287- assert::is_less(items.capacity(), 42_z);
288- }
289222
290- void test_method_(shrink_to_fit_with_bool) {
291- auto items = raw_queue {true, false, true};
292- items.reserve(42);
293- items.shrink_to_fit();
294- assert::is_less(items.capacity(), 42_z);
295- }
296-
297- void test_method_(swap) {
298- auto items1 = raw_queue {84, 42, 21};
299- auto items2 = raw_queue {63, 75, 96};
300- items1.swap(items2);
301- collection_assert::are_equal({63, 75, 96}, items1);
302- collection_assert::are_equal({84, 42, 21}, items2);
223+ void test_method_ (equality_operator) {
224+ auto q1 = raw_queue<int >(std::deque<int > {84 , 42 , 21 });
225+ auto q2 = raw_queue<int > {};
226+ q2 = q1;
227+ assert::are_equal (3_z, q1.size ());
228+ collection_assert::are_equal ({84 , 42 , 21 }, q1);
229+ assert::are_equal (3_z, q2.size ());
230+ collection_assert::are_equal ({84 , 42 , 21 }, q2);
303231 }
304232
305- void test_method_(swap_with_bool) {
306- auto items1 = raw_queue {true, false, true};
307- auto items2 = raw_queue {false, true, false};
308- items1.swap(items2);
309- collection_assert::are_equal({false, true, false}, items1);
310- collection_assert::are_equal({true, false, true}, items2);
233+ void test_method_ (move_equality_operator) {
234+ auto q1 = raw_queue<int >(std::deque<int > {84 , 42 , 21 });
235+ auto q2 = raw_queue<int > {};
236+ q2 = std::move (q1);
237+ assert::is_zero (q1.size ());
238+ assert::are_equal (3_z, q2.size ());
239+ collection_assert::are_equal ({84 , 42 , 21 }, q2);
311240 }
312-
313- void test_method_(operator_equal) {
314- auto items1 = raw_queue {84, 42, 21};
315- auto items2 = raw_queue {63, 75, 96};
316- items1 = items2;
317- collection_assert::are_equal({63, 75, 96}, items1);
318- }
319-
320- void test_method_(operator_equal_with_bool) {
321- auto items1 = raw_queue {true, false, true};
322- auto items2 = raw_queue {false, true, false};
323- items1 = items2;
324- collection_assert::are_equal({false, true, false}, items1);
325- }
326-
327- void test_method_(operator_equal_wtih_move) {
328- auto items1 = raw_queue {84, 42, 21};
329- auto items2 = raw_queue {63, 75, 96};
330- items1 = std::move(items2);
331- collection_assert::are_equal({63, 75, 96}, items1);
332- }
333-
334- void test_method_(operator_equal_with_move_and_bool) {
335- auto items1 = raw_queue {true, false, true};
336- auto items2 = raw_queue {false, true, false};
337- items1 = std::move(items2);
338- collection_assert::are_equal({false, true, false}, items1);
339- }
340-
341- void test_method_(operator_equal_with_initializer_list) {
342- auto items1 = raw_queue {84, 42, 21};
343- auto items2 = {63, 75, 96};
344- items1 = items2;
345- collection_assert::are_equal({63, 75, 96}, items1);
346- }
347-
348- void test_method_(operator_equal_with_initializer_list_and_bool) {
349- auto items1 = raw_queue {true, false, true};
350- auto items2 = {false, true, false};
351- items1 = items2;
352- collection_assert::are_equal({false, true, false}, items1);
353- }
354-
355- void test_method_(operator_index) {
356- auto items = raw_queue {84, 42, 21};
357-
358- assert::are_equal(84, items[0]);
359- assert::are_equal(42, items[1]);
360- assert::are_equal(21, items[2]);
361- //assert::throws<std::out_of_range>([&] {[[maybe_unused]] auto i = items[3];});
362-
363- items[0] = 63;
364- items[1] = 31;
365- items[2] = 10;
366- //assert::throws<std::out_of_range>([&] {items[3] = 5;});
367-
368- collection_assert::are_equal({63, 31, 10}, items);
241+
242+ void test_method_ (base_type_cast_operator) {
243+ auto items = raw_queue<int >(std::deque<int > {84 , 42 , 21 });
244+ assert::are_equal (typeof_<raw_queue<int >::base_type>(), typeof_ (static_cast <raw_queue<int >::base_type&>(items)));
245+
246+ auto & inners = static_cast <raw_queue<int >::base_type&>(items);
247+ assert::are_equal (84 , inners.front ());
248+ assert::are_equal (21 , inners.back ());
369249 }
370250
371- void test_method_(operator_index_with_epos) {
372- auto items = raw_queue {1, 2, 3, 4, 5};
373-
374- assert::are_equal(5, items[items.size() - 1]);
375- assert::are_equal(5, items[items.epos]);
376- assert::are_equal(5, items[xtd::epos]);
377-
378- items[items.epos] = 6;
379- assert::are_equal(6, items[items.size() - 1]);
380- assert::are_equal(6, items[items.epos]);
381- assert::are_equal(6, items[xtd::epos]);
382-
383- items[xtd::epos] = 7;
384- assert::are_equal(7, items[items.size() - 1]);
385- assert::are_equal(7, items[items.epos]);
386- assert::are_equal(7, items[xtd::epos]);
251+ void test_method_ (base_type_cast_operator_const) {
252+ const auto items = raw_queue<int >(std::deque<int > {84 , 42 , 21 });
253+ assert::are_equal (typeof_<raw_queue<int >::base_type>(), typeof_ (static_cast <const raw_queue<int >::base_type&>(items)));
254+
255+ const auto & inners = static_cast <const raw_queue<int >::base_type&>(items);
256+ assert::are_equal (84 , inners.front ());
257+ assert::are_equal (21 , inners.back ());
387258 }
388-
389- void test_method_(operator_index_with_bool) {
390- auto items = raw_queue {true, false, true};
391-
392- assert::are_equal(true, items[0]);
393- assert::are_equal(false, items[1]);
394- assert::are_equal(true, items[2]);
395- //assert::throws<std::out_of_range>([&] {[[maybe_unused]] auto i = items[3];});
396-
397- items[0] = false;
398- items[1] = true;
399- items[2] = false;
400- //assert::throws<std::out_of_range>([&] {items[3] = true;});
401-
402- collection_assert::are_equal({false, true, false}, items);
259+
260+ void test_method_ (begin_end_on_empty_queue) {
261+ auto q = raw_queue<int >{};
262+ assert::are_equal (q.begin (), q.end ());
403263 }
404-
405- void test_method_(operator_base_type) {
406- auto items = raw_queue {84, 42, 21};
407- auto bt = raw_queue<int>::base_type {};
408- bt = items;
409- assert::are_equal(typeof_<raw_queue<int>::base_type>(), typeof_(bt));
410- collection_assert::are_equal({84, 42, 21}, bt);
264+
265+ void test_method_ (cbegin_cend_on_empty_queue) {
266+ auto q = raw_queue<int >{};
267+ assert::are_equal (q.cbegin (), q.cend ());
411268 }
412-
413- void test_method_(operator_base_type_with_bool) {
414- auto items = raw_queue {true, false, true};
415- auto bt = raw_queue<bool>::base_type {};
416- bt = items;
417- assert::are_equal(typeof_<raw_queue<bool>::base_type>(), typeof_(bt));
418- collection_assert::are_equal({1u, 0u, 1u}, bt);
419- }
420- */
421269 };
422270}
0 commit comments