Lines Matching refs:pool

56     entt::storage<int> pool;  in TEST()  local
58 pool.reserve(42); in TEST()
60 ASSERT_EQ(pool.capacity(), ENTT_PACKED_PAGE); in TEST()
61 ASSERT_TRUE(pool.empty()); in TEST()
62 ASSERT_EQ(pool.size(), 0u); in TEST()
63 ASSERT_EQ(std::as_const(pool).begin(), std::as_const(pool).end()); in TEST()
64 ASSERT_EQ(pool.begin(), pool.end()); in TEST()
65 ASSERT_FALSE(pool.contains(entt::entity{0})); in TEST()
66 ASSERT_FALSE(pool.contains(entt::entity{41})); in TEST()
68 pool.reserve(0); in TEST()
70 ASSERT_EQ(pool.capacity(), ENTT_PACKED_PAGE); in TEST()
71 ASSERT_TRUE(pool.empty()); in TEST()
73 pool.emplace(entt::entity{41}, 3); in TEST()
75 ASSERT_FALSE(pool.empty()); in TEST()
76 ASSERT_EQ(pool.size(), 1u); in TEST()
77 ASSERT_NE(std::as_const(pool).begin(), std::as_const(pool).end()); in TEST()
78 ASSERT_NE(pool.begin(), pool.end()); in TEST()
79 ASSERT_FALSE(pool.contains(entt::entity{0})); in TEST()
80 ASSERT_TRUE(pool.contains(entt::entity{41})); in TEST()
81 ASSERT_EQ(pool.get(entt::entity{41}), 3); in TEST()
83 pool.erase(entt::entity{41}); in TEST()
85 ASSERT_TRUE(pool.empty()); in TEST()
86 ASSERT_EQ(pool.size(), 0u); in TEST()
87 ASSERT_EQ(std::as_const(pool).begin(), std::as_const(pool).end()); in TEST()
88 ASSERT_EQ(pool.begin(), pool.end()); in TEST()
89 ASSERT_FALSE(pool.contains(entt::entity{0})); in TEST()
90 ASSERT_FALSE(pool.contains(entt::entity{41})); in TEST()
92 pool.emplace(entt::entity{41}, 12); in TEST()
94 ASSERT_EQ(pool.get(entt::entity{41}), 12); in TEST()
96 pool.clear(); in TEST()
98 ASSERT_TRUE(pool.empty()); in TEST()
99 ASSERT_EQ(pool.size(), 0u); in TEST()
100 ASSERT_EQ(std::as_const(pool).begin(), std::as_const(pool).end()); in TEST()
101 ASSERT_EQ(pool.begin(), pool.end()); in TEST()
102 ASSERT_FALSE(pool.contains(entt::entity{0})); in TEST()
103 ASSERT_FALSE(pool.contains(entt::entity{41})); in TEST()
105 ASSERT_EQ(pool.capacity(), ENTT_PACKED_PAGE); in TEST()
107 pool.shrink_to_fit(); in TEST()
109 ASSERT_EQ(pool.capacity(), 0u); in TEST()
113 entt::storage<int> pool; in TEST() local
114 pool.emplace(entt::entity{3}, 3); in TEST()
116 ASSERT_TRUE(std::is_move_constructible_v<decltype(pool)>); in TEST()
117 ASSERT_TRUE(std::is_move_assignable_v<decltype(pool)>); in TEST()
119 entt::storage<int> other{std::move(pool)}; in TEST()
121 ASSERT_TRUE(pool.empty()); in TEST()
123 ASSERT_EQ(pool.at(0u), static_cast<entt::entity>(entt::null)); in TEST()
127 pool = std::move(other); in TEST()
129 ASSERT_FALSE(pool.empty()); in TEST()
131 ASSERT_EQ(pool.at(0u), entt::entity{3}); in TEST()
132 ASSERT_EQ(pool.get(entt::entity{3}), 3); in TEST()
137 other = std::move(pool); in TEST()
139 ASSERT_TRUE(pool.empty()); in TEST()
141 ASSERT_EQ(pool.at(0u), static_cast<entt::entity>(entt::null)); in TEST()
147 entt::storage<empty_type> pool; in TEST() local
148 pool.emplace(entt::entity{99}); in TEST()
150 ASSERT_TRUE(pool.contains(entt::entity{99})); in TEST()
154 entt::storage<stable_type> pool; in TEST() local
159 pool.insert(std::begin(entities), std::end(entities), stable_type{99}); in TEST()
161 ASSERT_TRUE(pool.contains(entities[0u])); in TEST()
162 ASSERT_TRUE(pool.contains(entities[1u])); in TEST()
164 ASSERT_FALSE(pool.empty()); in TEST()
165 ASSERT_EQ(pool.size(), 2u); in TEST()
166 ASSERT_EQ(pool.get(entities[0u]).value, 99); in TEST()
167 ASSERT_EQ(pool.get(entities[1u]).value, 99); in TEST()
169 pool.erase(std::begin(entities), std::end(entities)); in TEST()
171 pool.insert(std::rbegin(entities), std::rend(entities), std::begin(values)); in TEST()
173 ASSERT_EQ(pool.size(), 4u); in TEST()
174 ASSERT_TRUE(pool.at(0u) == entt::tombstone); in TEST()
175 ASSERT_TRUE(pool.at(1u) == entt::tombstone); in TEST()
176 ASSERT_EQ(pool.at(2u), entities[1u]); in TEST()
177 ASSERT_EQ(pool.at(3u), entities[0u]); in TEST()
178 ASSERT_EQ(pool.index(entities[0u]), 3u); in TEST()
179 ASSERT_EQ(pool.index(entities[1u]), 2u); in TEST()
180 ASSERT_EQ(pool.get(entities[0u]).value, 3); in TEST()
181 ASSERT_EQ(pool.get(entities[1u]).value, 42); in TEST()
185 entt::storage<empty_type> pool; in TEST() local
191 pool.insert(std::begin(entities), std::end(entities)); in TEST()
193 ASSERT_TRUE(pool.contains(entities[0u])); in TEST()
194 ASSERT_TRUE(pool.contains(entities[1u])); in TEST()
196 ASSERT_FALSE(pool.empty()); in TEST()
197 ASSERT_EQ(pool.size(), 2u); in TEST()
201 entt::storage<int> pool; in TEST() local
208 pool.emplace(entities[0u]); in TEST()
209 pool.emplace(entities[1u]); in TEST()
210 pool.emplace(entities[2u]); in TEST()
211 pool.erase(std::begin(entities), std::end(entities)); in TEST()
213 ASSERT_DEATH(pool.erase(std::begin(entities), std::end(entities)), ""); in TEST()
214 ASSERT_TRUE(pool.empty()); in TEST()
216 pool.emplace(entities[0u], 0); in TEST()
217 pool.emplace(entities[1u], 1); in TEST()
218 pool.emplace(entities[2u], 2); in TEST()
219 pool.erase(entities, entities + 2u); in TEST()
221 ASSERT_FALSE(pool.empty()); in TEST()
222 ASSERT_EQ(*pool.begin(), 2); in TEST()
224 pool.erase(entities[2u]); in TEST()
226 ASSERT_DEATH(pool.erase(entities[2u]), ""); in TEST()
227 ASSERT_TRUE(pool.empty()); in TEST()
229 pool.emplace(entities[0u], 0); in TEST()
230 pool.emplace(entities[1u], 1); in TEST()
231 pool.emplace(entities[2u], 2); in TEST()
233 pool.erase(entities, entities + 2u); in TEST()
235 ASSERT_FALSE(pool.empty()); in TEST()
236 ASSERT_EQ(*pool.begin(), 1); in TEST()
240 entt::storage<stable_type> pool; in TEST() local
243 ASSERT_DEATH([[maybe_unused]] auto &&value = pool.get(entt::tombstone), ""); in TEST()
244 ASSERT_DEATH([[maybe_unused]] auto &&value = pool.get(entt::null), ""); in TEST()
250 pool.emplace(entities[0u], stable_type{0}); in TEST()
251 pool.emplace(entities[1u], stable_type{1}); in TEST()
252 pool.emplace(entities[2u], stable_type{2}); in TEST()
254 pool.erase(std::begin(entities), std::end(entities)); in TEST()
256 ASSERT_DEATH(pool.erase(std::begin(entities), std::end(entities)), ""); in TEST()
257 ASSERT_FALSE(pool.empty()); in TEST()
258 ASSERT_EQ(pool.size(), 3u); in TEST()
259 ASSERT_TRUE(pool.at(2u) == entt::tombstone); in TEST()
260 ASSERT_DEATH([[maybe_unused]] auto &&value = pool.get(entt::tombstone), ""); in TEST()
261 ASSERT_DEATH([[maybe_unused]] auto &&value = pool.get(entt::null), ""); in TEST()
262 ASSERT_DEATH([[maybe_unused]] auto &&value = pool.get(entities[1u]), ""); in TEST()
264 pool.emplace(entities[2u], stable_type{2}); in TEST()
265 pool.emplace(entities[0u], stable_type{0}); in TEST()
266 pool.emplace(entities[1u], stable_type{1}); in TEST()
268 ASSERT_EQ(pool.get(entities[0u]).value, 0); in TEST()
269 ASSERT_EQ(pool.get(entities[1u]).value, 1); in TEST()
270 ASSERT_EQ(pool.get(entities[2u]).value, 2); in TEST()
272 ASSERT_EQ(pool.begin()->value, 2); in TEST()
273 ASSERT_EQ(pool.index(entities[0u]), 1u); in TEST()
274 ASSERT_EQ(pool.index(entities[1u]), 0u); in TEST()
275 ASSERT_EQ(pool.index(entities[2u]), 2u); in TEST()
277 pool.erase(entities, entities + 2u); in TEST()
279 ASSERT_FALSE(pool.empty()); in TEST()
280 ASSERT_EQ(pool.size(), 3u); in TEST()
281 ASSERT_EQ(pool.begin()->value, 2); in TEST()
282 ASSERT_EQ(pool.index(entities[2u]), 2u); in TEST()
284 pool.erase(entities[2u]); in TEST()
286 ASSERT_DEATH(pool.erase(entities[2u]), ""); in TEST()
287 ASSERT_FALSE(pool.empty()); in TEST()
288 ASSERT_EQ(pool.size(), 3u); in TEST()
289 ASSERT_FALSE(pool.contains(entities[0u])); in TEST()
290 ASSERT_FALSE(pool.contains(entities[1u])); in TEST()
291 ASSERT_FALSE(pool.contains(entities[2u])); in TEST()
293 pool.emplace(entities[0u], stable_type{0}); in TEST()
294 pool.emplace(entities[1u], stable_type{1}); in TEST()
295 pool.emplace(entities[2u], stable_type{2}); in TEST()
297 pool.erase(entities, entities + 2u); in TEST()
299 ASSERT_FALSE(pool.empty()); in TEST()
300 ASSERT_EQ(pool.size(), 3u); in TEST()
301 ASSERT_TRUE(pool.contains(entities[2u])); in TEST()
302 ASSERT_EQ(pool.index(entities[2u]), 0u); in TEST()
303 ASSERT_EQ(pool.get(entities[2u]).value, 1); in TEST()
305 pool.compact(); in TEST()
307 ASSERT_FALSE(pool.empty()); in TEST()
308 ASSERT_EQ(pool.size(), 1u); in TEST()
309 ASSERT_EQ(pool.begin()->value, 1); in TEST()
311 pool.clear(); in TEST()
313 ASSERT_EQ(pool.size(), 0u); in TEST()
315 pool.emplace(entities[0u], stable_type{0}); in TEST()
316 pool.emplace(entities[1u], stable_type{2}); in TEST()
317 pool.emplace(entities[2u], stable_type{1}); in TEST()
318 pool.erase(entities[2u]); in TEST()
320 ASSERT_DEATH(pool.erase(entities[2u]), ""); in TEST()
322 pool.erase(entities[0u]); in TEST()
323 pool.erase(entities[1u]); in TEST()
325 ASSERT_DEATH(pool.erase(entities, entities + 2u), ""); in TEST()
326 ASSERT_EQ(pool.size(), 3u); in TEST()
327 ASSERT_TRUE(pool.at(2u) == entt::tombstone); in TEST()
329 pool.emplace(entities[0u], stable_type{99}); in TEST()
331 ASSERT_EQ((++pool.begin())->value, 99); in TEST()
333 pool.emplace(entities[1u], stable_type{2}); in TEST()
334 pool.emplace(entities[2u], stable_type{1}); in TEST()
335 pool.emplace(entt::entity{0}, stable_type{7}); in TEST()
337 ASSERT_EQ(pool.size(), 4u); in TEST()
338 ASSERT_EQ(pool.begin()->value, 7); in TEST()
339 ASSERT_EQ(pool.at(0u), entities[1u]); in TEST()
340 ASSERT_EQ(pool.at(1u), entities[0u]); in TEST()
341 ASSERT_EQ(pool.at(2u), entities[2u]); in TEST()
343 ASSERT_EQ(pool.get(entities[0u]).value, 99); in TEST()
344 ASSERT_EQ(pool.get(entities[1u]).value, 2); in TEST()
345 ASSERT_EQ(pool.get(entities[2u]).value, 1); in TEST()
349 entt::storage<int> pool; in TEST() local
356 pool.emplace(entities[0u]); in TEST()
357 pool.emplace(entities[1u]); in TEST()
358 pool.emplace(entities[2u]); in TEST()
360 ASSERT_EQ(pool.remove(std::begin(entities), std::end(entities)), 3u); in TEST()
361 ASSERT_EQ(pool.remove(std::begin(entities), std::end(entities)), 0u); in TEST()
362 ASSERT_TRUE(pool.empty()); in TEST()
364 pool.emplace(entities[0u], 0); in TEST()
365 pool.emplace(entities[1u], 1); in TEST()
366 pool.emplace(entities[2u], 2); in TEST()
368 ASSERT_EQ(pool.remove(entities, entities + 2u), 2u); in TEST()
369 ASSERT_FALSE(pool.empty()); in TEST()
370 ASSERT_EQ(*pool.begin(), 2); in TEST()
372 ASSERT_EQ(pool.remove(entities[2u]), 1u); in TEST()
373 ASSERT_EQ(pool.remove(entities[2u]), 0u); in TEST()
374 ASSERT_TRUE(pool.empty()); in TEST()
376 pool.emplace(entities[0u], 0); in TEST()
377 pool.emplace(entities[1u], 1); in TEST()
378 pool.emplace(entities[2u], 2); in TEST()
381 ASSERT_EQ(pool.remove(entities, entities + 2u), 2u); in TEST()
382 ASSERT_FALSE(pool.empty()); in TEST()
383 ASSERT_EQ(*pool.begin(), 1); in TEST()
387 entt::storage<stable_type> pool; in TEST() local
394 pool.emplace(entities[0u], stable_type{0}); in TEST()
395 pool.emplace(entities[1u], stable_type{1}); in TEST()
396 pool.emplace(entities[2u], stable_type{2}); in TEST()
398 ASSERT_EQ(pool.remove(std::begin(entities), std::end(entities)), 3u); in TEST()
399 ASSERT_EQ(pool.remove(std::begin(entities), std::end(entities)), 0u); in TEST()
400 ASSERT_FALSE(pool.empty()); in TEST()
401 ASSERT_EQ(pool.size(), 3u); in TEST()
402 ASSERT_TRUE(pool.at(2u) == entt::tombstone); in TEST()
403 ASSERT_DEATH([[maybe_unused]] auto &&value = pool.get(entt::tombstone), ""); in TEST()
404 ASSERT_DEATH([[maybe_unused]] auto &&value = pool.get(entt::null), ""); in TEST()
405 ASSERT_DEATH([[maybe_unused]] auto &&value = pool.get(entities[1u]), ""); in TEST()
407 pool.emplace(entities[2u], stable_type{2}); in TEST()
408 pool.emplace(entities[0u], stable_type{0}); in TEST()
409 pool.emplace(entities[1u], stable_type{1}); in TEST()
411 ASSERT_EQ(pool.get(entities[0u]).value, 0); in TEST()
412 ASSERT_EQ(pool.get(entities[1u]).value, 1); in TEST()
413 ASSERT_EQ(pool.get(entities[2u]).value, 2); in TEST()
415 ASSERT_EQ(pool.begin()->value, 2); in TEST()
416 ASSERT_EQ(pool.index(entities[0u]), 1u); in TEST()
417 ASSERT_EQ(pool.index(entities[1u]), 0u); in TEST()
418 ASSERT_EQ(pool.index(entities[2u]), 2u); in TEST()
420 ASSERT_EQ(pool.remove(entities, entities + 2u), 2u); in TEST()
421 ASSERT_FALSE(pool.empty()); in TEST()
422 ASSERT_EQ(pool.size(), 3u); in TEST()
423 ASSERT_EQ(pool.begin()->value, 2); in TEST()
424 ASSERT_EQ(pool.index(entities[2u]), 2u); in TEST()
426 ASSERT_EQ(pool.remove(entities[2u]), 1u); in TEST()
427 ASSERT_EQ(pool.remove(entities[2u]), 0u); in TEST()
428 ASSERT_EQ(pool.remove(entities[2u]), 0u); in TEST()
429 ASSERT_FALSE(pool.empty()); in TEST()
430 ASSERT_EQ(pool.size(), 3u); in TEST()
431 ASSERT_FALSE(pool.contains(entities[0u])); in TEST()
432 ASSERT_FALSE(pool.contains(entities[1u])); in TEST()
433 ASSERT_FALSE(pool.contains(entities[2u])); in TEST()
435 pool.emplace(entities[0u], stable_type{0}); in TEST()
436 pool.emplace(entities[1u], stable_type{1}); in TEST()
437 pool.emplace(entities[2u], stable_type{2}); in TEST()
440 ASSERT_EQ(pool.remove(entities, entities + 2u), 2u); in TEST()
441 ASSERT_FALSE(pool.empty()); in TEST()
442 ASSERT_EQ(pool.size(), 3u); in TEST()
443 ASSERT_TRUE(pool.contains(entities[2u])); in TEST()
444 ASSERT_EQ(pool.index(entities[2u]), 0u); in TEST()
445 ASSERT_EQ(pool.get(entities[2u]).value, 1); in TEST()
447 pool.compact(); in TEST()
449 ASSERT_FALSE(pool.empty()); in TEST()
450 ASSERT_EQ(pool.size(), 1u); in TEST()
451 ASSERT_EQ(pool.begin()->value, 1); in TEST()
453 pool.clear(); in TEST()
455 ASSERT_EQ(pool.size(), 0u); in TEST()
457 pool.emplace(entities[0u], stable_type{0}); in TEST()
458 pool.emplace(entities[1u], stable_type{2}); in TEST()
459 pool.emplace(entities[2u], stable_type{1}); in TEST()
461 ASSERT_EQ(pool.remove(entities[2u]), 1u); in TEST()
462 ASSERT_EQ(pool.remove(entities[2u]), 0u); in TEST()
464 ASSERT_EQ(pool.remove(entities[0u]), 1u); in TEST()
465 ASSERT_EQ(pool.remove(entities[1u]), 1u); in TEST()
466 ASSERT_EQ(pool.remove(entities, entities + 2u), 0u); in TEST()
468 ASSERT_EQ(pool.size(), 3u); in TEST()
469 ASSERT_TRUE(pool.at(2u) == entt::tombstone); in TEST()
471 pool.emplace(entities[0u], stable_type{99}); in TEST()
473 ASSERT_EQ((++pool.begin())->value, 99); in TEST()
475 pool.emplace(entities[1u], stable_type{2}); in TEST()
476 pool.emplace(entities[2u], stable_type{1}); in TEST()
477 pool.emplace(entt::entity{0}, stable_type{7}); in TEST()
479 ASSERT_EQ(pool.size(), 4u); in TEST()
480 ASSERT_EQ(pool.begin()->value, 7); in TEST()
481 ASSERT_EQ(pool.at(0u), entities[1u]); in TEST()
482 ASSERT_EQ(pool.at(1u), entities[0u]); in TEST()
483 ASSERT_EQ(pool.at(2u), entities[2u]); in TEST()
485 ASSERT_EQ(pool.get(entities[0u]).value, 99); in TEST()
486 ASSERT_EQ(pool.get(entities[1u]).value, 2); in TEST()
487 ASSERT_EQ(pool.get(entities[2u]).value, 1); in TEST()
491 entt::storage<stable_type> pool; in TEST() local
493 ASSERT_TRUE(pool.empty()); in TEST()
494 ASSERT_EQ(pool.size(), 0u); in TEST()
496 pool.compact(); in TEST()
498 ASSERT_TRUE(pool.empty()); in TEST()
499 ASSERT_EQ(pool.size(), 0u); in TEST()
501 pool.emplace(entt::entity{0}, stable_type{0}); in TEST()
502 pool.compact(); in TEST()
504 ASSERT_FALSE(pool.empty()); in TEST()
505 ASSERT_EQ(pool.size(), 1u); in TEST()
507 pool.emplace(entt::entity{42}, stable_type{42}); in TEST()
508 pool.erase(entt::entity{0}); in TEST()
510 ASSERT_EQ(pool.size(), 2u); in TEST()
511 ASSERT_EQ(pool.index(entt::entity{42}), 1u); in TEST()
512 ASSERT_EQ(pool.get(entt::entity{42}).value, 42); in TEST()
514 pool.compact(); in TEST()
516 ASSERT_EQ(pool.size(), 1u); in TEST()
517 ASSERT_EQ(pool.index(entt::entity{42}), 0u); in TEST()
518 ASSERT_EQ(pool.get(entt::entity{42}).value, 42); in TEST()
520 pool.emplace(entt::entity{0}, stable_type{0}); in TEST()
521 pool.compact(); in TEST()
523 ASSERT_EQ(pool.size(), 2u); in TEST()
524 ASSERT_EQ(pool.index(entt::entity{42}), 0u); in TEST()
525 ASSERT_EQ(pool.index(entt::entity{0}), 1u); in TEST()
526 ASSERT_EQ(pool.get(entt::entity{42}).value, 42); in TEST()
527 ASSERT_EQ(pool.get(entt::entity{0}).value, 0); in TEST()
529 pool.erase(entt::entity{0}); in TEST()
530 pool.erase(entt::entity{42}); in TEST()
531 pool.compact(); in TEST()
533 ASSERT_TRUE(pool.empty()); in TEST()
537 entt::storage<int> pool; in TEST() local
540 pool.emplace(entt::entity(next)); in TEST()
543 pool.emplace(entt::entity{ENTT_PACKED_PAGE}); in TEST()
544 pool.erase(entt::entity{ENTT_PACKED_PAGE}); in TEST()
546 ASSERT_EQ(pool.capacity(), 2 * ENTT_PACKED_PAGE); in TEST()
547 ASSERT_EQ(pool.size(), ENTT_PACKED_PAGE); in TEST()
549 pool.shrink_to_fit(); in TEST()
551 ASSERT_EQ(pool.capacity(), ENTT_PACKED_PAGE); in TEST()
552 ASSERT_EQ(pool.size(), ENTT_PACKED_PAGE); in TEST()
554 pool.clear(); in TEST()
556 ASSERT_EQ(pool.capacity(), ENTT_PACKED_PAGE); in TEST()
557 ASSERT_EQ(pool.size(), 0u); in TEST()
559 pool.shrink_to_fit(); in TEST()
561 ASSERT_EQ(pool.capacity(), 0u); in TEST()
562 ASSERT_EQ(pool.size(), 0u); in TEST()
573 entt::storage<std::unordered_set<int>> pool; in TEST() local
574 pool.emplace(entt::entity{0}).insert(42); in TEST()
575 pool.erase(entt::entity{0}); in TEST()
581 entt::storage<boxed_int> pool; in TEST() local
582 pool.emplace(entt::entity{3}, 42); in TEST()
584 iterator end{pool.begin()}; in TEST()
586 begin = pool.end(); in TEST()
589 ASSERT_EQ(begin, pool.begin()); in TEST()
590 ASSERT_EQ(end, pool.end()); in TEST()
593 ASSERT_EQ(begin++, pool.begin()); in TEST()
594 ASSERT_EQ(begin--, pool.end()); in TEST()
596 ASSERT_EQ(begin+1, pool.end()); in TEST()
597 ASSERT_EQ(end-1, pool.begin()); in TEST()
599 ASSERT_EQ(++begin, pool.end()); in TEST()
600 ASSERT_EQ(--begin, pool.begin()); in TEST()
602 ASSERT_EQ(begin += 1, pool.end()); in TEST()
603 ASSERT_EQ(begin -= 1, pool.begin()); in TEST()
605 ASSERT_EQ(begin + (end - begin), pool.end()); in TEST()
606 ASSERT_EQ(begin - (begin - end), pool.end()); in TEST()
608 ASSERT_EQ(end - (end - begin), pool.begin()); in TEST()
609 ASSERT_EQ(end + (begin - end), pool.begin()); in TEST()
611 ASSERT_EQ(begin[0u].value, pool.begin()->value); in TEST()
614 ASSERT_LE(begin, pool.begin()); in TEST()
617 ASSERT_GE(end, pool.end()); in TEST()
623 entt::storage<boxed_int> pool; in TEST() local
624 pool.emplace(entt::entity{3}, 42); in TEST()
626 iterator cend{pool.cbegin()}; in TEST()
628 cbegin = pool.cend(); in TEST()
631 ASSERT_EQ(cbegin, pool.cbegin()); in TEST()
632 ASSERT_EQ(cend, pool.cend()); in TEST()
635 ASSERT_EQ(cbegin++, pool.cbegin()); in TEST()
636 ASSERT_EQ(cbegin--, pool.cend()); in TEST()
638 ASSERT_EQ(cbegin+1, pool.cend()); in TEST()
639 ASSERT_EQ(cend-1, pool.cbegin()); in TEST()
641 ASSERT_EQ(++cbegin, pool.cend()); in TEST()
642 ASSERT_EQ(--cbegin, pool.cbegin()); in TEST()
644 ASSERT_EQ(cbegin += 1, pool.cend()); in TEST()
645 ASSERT_EQ(cbegin -= 1, pool.cbegin()); in TEST()
647 ASSERT_EQ(cbegin + (cend - cbegin), pool.cend()); in TEST()
648 ASSERT_EQ(cbegin - (cbegin - cend), pool.cend()); in TEST()
650 ASSERT_EQ(cend - (cend - cbegin), pool.cbegin()); in TEST()
651 ASSERT_EQ(cend + (cbegin - cend), pool.cbegin()); in TEST()
653 ASSERT_EQ(cbegin[0u].value, pool.cbegin()->value); in TEST()
656 ASSERT_LE(cbegin, pool.cbegin()); in TEST()
659 ASSERT_GE(cend, pool.cend()); in TEST()
665 entt::storage<boxed_int> pool; in TEST() local
666 pool.emplace(entt::entity{3}, 42); in TEST()
668 reverse_iterator end{pool.rbegin()}; in TEST()
670 begin = pool.rend(); in TEST()
673 ASSERT_EQ(begin, pool.rbegin()); in TEST()
674 ASSERT_EQ(end, pool.rend()); in TEST()
677 ASSERT_EQ(begin++, pool.rbegin()); in TEST()
678 ASSERT_EQ(begin--, pool.rend()); in TEST()
680 ASSERT_EQ(begin+1, pool.rend()); in TEST()
681 ASSERT_EQ(end-1, pool.rbegin()); in TEST()
683 ASSERT_EQ(++begin, pool.rend()); in TEST()
684 ASSERT_EQ(--begin, pool.rbegin()); in TEST()
686 ASSERT_EQ(begin += 1, pool.rend()); in TEST()
687 ASSERT_EQ(begin -= 1, pool.rbegin()); in TEST()
689 ASSERT_EQ(begin + (end - begin), pool.rend()); in TEST()
690 ASSERT_EQ(begin - (begin - end), pool.rend()); in TEST()
692 ASSERT_EQ(end - (end - begin), pool.rbegin()); in TEST()
693 ASSERT_EQ(end + (begin - end), pool.rbegin()); in TEST()
695 ASSERT_EQ(begin[0u].value, pool.rbegin()->value); in TEST()
698 ASSERT_LE(begin, pool.rbegin()); in TEST()
701 ASSERT_GE(end, pool.rend()); in TEST()
707 entt::storage<boxed_int> pool; in TEST() local
708 pool.emplace(entt::entity{3}, 42); in TEST()
710 const_reverse_iterator cend{pool.crbegin()}; in TEST()
712 cbegin = pool.crend(); in TEST()
715 ASSERT_EQ(cbegin, pool.crbegin()); in TEST()
716 ASSERT_EQ(cend, pool.crend()); in TEST()
719 ASSERT_EQ(cbegin++, pool.crbegin()); in TEST()
720 ASSERT_EQ(cbegin--, pool.crend()); in TEST()
722 ASSERT_EQ(cbegin+1, pool.crend()); in TEST()
723 ASSERT_EQ(cend-1, pool.crbegin()); in TEST()
725 ASSERT_EQ(++cbegin, pool.crend()); in TEST()
726 ASSERT_EQ(--cbegin, pool.crbegin()); in TEST()
728 ASSERT_EQ(cbegin += 1, pool.crend()); in TEST()
729 ASSERT_EQ(cbegin -= 1, pool.crbegin()); in TEST()
731 ASSERT_EQ(cbegin + (cend - cbegin), pool.crend()); in TEST()
732 ASSERT_EQ(cbegin - (cbegin - cend), pool.crend()); in TEST()
734 ASSERT_EQ(cend - (cend - cbegin), pool.crbegin()); in TEST()
735 ASSERT_EQ(cend + (cbegin - cend), pool.crbegin()); in TEST()
737 ASSERT_EQ(cbegin[0u].value, pool.crbegin()->value); in TEST()
740 ASSERT_LE(cbegin, pool.crbegin()); in TEST()
743 ASSERT_GE(cend, pool.crend()); in TEST()
747 entt::storage<int> pool; in TEST() local
749 pool.emplace(entt::entity{3}, 3); in TEST()
750 pool.emplace(entt::entity{12}, 6); in TEST()
751 pool.emplace(entt::entity{42}, 9); in TEST()
753 ASSERT_EQ(pool.get(entt::entity{3}), 3); in TEST()
754 ASSERT_EQ(std::as_const(pool).get(entt::entity{12}), 6); in TEST()
755 ASSERT_EQ(pool.get(entt::entity{42}), 9); in TEST()
757 ASSERT_EQ(pool.raw()[0u][0u], 3); in TEST()
758 ASSERT_EQ(std::as_const(pool).raw()[0u][1u], 6); in TEST()
759 ASSERT_EQ(pool.raw()[0u][2u], 9); in TEST()
763 entt::storage<boxed_int> pool; in TEST() local
767 pool.insert(std::begin(entities), std::end(entities), values); in TEST()
768 pool.sort([](auto lhs, auto rhs) { return lhs.value < rhs.value; }); in TEST()
770 …UE(std::equal(std::rbegin(entities), std::rend(entities), pool.entt::sparse_set::begin(), pool.ent… in TEST()
771 ASSERT_TRUE(std::equal(std::rbegin(values), std::rend(values), pool.begin(), pool.end())); in TEST()
775 entt::storage<boxed_int> pool; in TEST() local
779 pool.insert(std::begin(entities), std::end(entities), values); in TEST()
780 pool.sort([](auto lhs, auto rhs) { return lhs.value < rhs.value; }); in TEST()
782 …TRUE(std::equal(std::begin(entities), std::end(entities), pool.entt::sparse_set::begin(), pool.ent… in TEST()
783 ASSERT_TRUE(std::equal(std::begin(values), std::end(values), pool.begin(), pool.end())); in TEST()
787 entt::storage<boxed_int> pool; in TEST() local
791 pool.insert(std::begin(entities), std::end(entities), values); in TEST()
792 pool.sort([](auto lhs, auto rhs) { return lhs.value < rhs.value; }); in TEST()
794 auto begin = pool.begin(); in TEST()
795 auto end = pool.end(); in TEST()
804 ASSERT_EQ(pool.data()[0u], entt::entity{9}); in TEST()
805 ASSERT_EQ(pool.data()[1u], entt::entity{3}); in TEST()
806 ASSERT_EQ(pool.data()[2u], entt::entity{12}); in TEST()
807 ASSERT_EQ(pool.data()[3u], entt::entity{42}); in TEST()
808 ASSERT_EQ(pool.data()[4u], entt::entity{7}); in TEST()
812 entt::storage<boxed_int> pool; in TEST() local
816 pool.insert(std::begin(entities), std::end(entities), values); in TEST()
817 pool.sort_n(0u, [](auto lhs, auto rhs) { return lhs.value < rhs.value; }); in TEST()
819 …UE(std::equal(std::rbegin(entities), std::rend(entities), pool.entt::sparse_set::begin(), pool.ent… in TEST()
820 ASSERT_TRUE(std::equal(std::rbegin(values), std::rend(values), pool.begin(), pool.end())); in TEST()
822 pool.sort_n(2u, [](auto lhs, auto rhs) { return lhs.value < rhs.value; }); in TEST()
824 ASSERT_EQ(pool.raw()[0u][0u], boxed_int{6}); in TEST()
825 ASSERT_EQ(pool.raw()[0u][1u], boxed_int{3}); in TEST()
826 ASSERT_EQ(pool.raw()[0u][2u], boxed_int{1}); in TEST()
828 ASSERT_EQ(pool.data()[0u], entt::entity{42}); in TEST()
829 ASSERT_EQ(pool.data()[1u], entt::entity{12}); in TEST()
830 ASSERT_EQ(pool.data()[2u], entt::entity{7}); in TEST()
832 pool.sort_n(5u, [](auto lhs, auto rhs) { return lhs.value < rhs.value; }); in TEST()
834 auto begin = pool.begin(); in TEST()
835 auto end = pool.end(); in TEST()
844 ASSERT_EQ(pool.data()[0u], entt::entity{9}); in TEST()
845 ASSERT_EQ(pool.data()[1u], entt::entity{3}); in TEST()
846 ASSERT_EQ(pool.data()[2u], entt::entity{42}); in TEST()
847 ASSERT_EQ(pool.data()[3u], entt::entity{12}); in TEST()
848 ASSERT_EQ(pool.data()[4u], entt::entity{7}); in TEST()
1004 entt::storage<int> pool; in TEST() local
1005 pool.emplace(entt::entity{0}, 42); in TEST()
1007 ASSERT_EQ(pool.capacity(), ENTT_PACKED_PAGE); in TEST()
1009 const auto it = pool.cbegin(); in TEST()
1010 pool.reserve(ENTT_PACKED_PAGE + 1u); in TEST()
1012 ASSERT_EQ(pool.capacity(), 2 * ENTT_PACKED_PAGE); in TEST()
1020 entt::storage<boxed_int> pool; in TEST() local
1022 pool.emplace(entt::entity{0}, 0); in TEST()
1023 pool.emplace(entt::entity{1}, 1); in TEST()
1025 ASSERT_EQ(pool.get(entt::entity{0}).value, 0); in TEST()
1026 ASSERT_EQ(pool.get(entt::entity{1}).value, 1); in TEST()
1028 for(auto &&type: pool) { in TEST()
1034 ASSERT_EQ(pool.get(entt::entity{0}).value, 0); in TEST()
1035 ASSERT_EQ(pool.get(entt::entity{1}).value, 42); in TEST()
1037 auto begin = pool.begin(); in TEST()
1039 while(begin != pool.end()) { in TEST()
1043 ASSERT_EQ(pool.get(entt::entity{0}).value, 3); in TEST()
1044 ASSERT_EQ(pool.get(entt::entity{1}).value, 3); in TEST()
1049 entt::storage<std::unique_ptr<int>> pool; in TEST() local
1050 (void)pool; in TEST()
1057 entt::storage<update_from_destructor> pool; in TEST() local
1061 pool.emplace(entity, pool, entity == entt::entity(size/2) ? target : entity); in TEST()
1064 pool.erase(entt::entity(size/2)); in TEST()
1066 ASSERT_EQ(pool.size(), size - 1u - (target != entt::null)); in TEST()
1067 ASSERT_FALSE(pool.contains(entt::entity(size/2))); in TEST()
1068 ASSERT_FALSE(pool.contains(target)); in TEST()
1070 pool.clear(); in TEST()
1072 ASSERT_TRUE(pool.empty()); in TEST()
1075 ASSERT_FALSE(pool.contains(entt::entity(next))); in TEST()
1085 entt::storage<test::throwing_component> pool; in TEST() local
1089 …ASSERT_THROW(pool.emplace(entt::entity{0}, test::throwing_component{42}), typename test::throwing_… in TEST()
1090 ASSERT_TRUE(pool.empty()); in TEST()
1096 …ASSERT_THROW(pool.insert(std::begin(entities), std::end(entities), test::throwing_component{42}), … in TEST()
1097 ASSERT_EQ(pool.size(), 0u); in TEST()
1098 ASSERT_FALSE(pool.contains(entt::entity{1})); in TEST()
1101 …ASSERT_THROW(pool.insert(std::begin(entities), std::end(entities), std::begin(components)), typena… in TEST()
1102 ASSERT_EQ(pool.size(), 0u); in TEST()
1103 ASSERT_FALSE(pool.contains(entt::entity{1})); in TEST()
1106 …ASSERT_THROW(pool.insert(std::rbegin(entities), std::rend(entities), std::rbegin(components)), typ… in TEST()
1107 ASSERT_EQ(pool.size(), 1u); in TEST()
1108 ASSERT_TRUE(pool.contains(entt::entity{1})); in TEST()
1109 ASSERT_EQ(pool.get(entt::entity{1}), 1); in TEST()
1111 pool.clear(); in TEST()
1112 pool.emplace(entt::entity{1}, 1); in TEST()
1113 pool.emplace(entt::entity{42}, 42); in TEST()
1116 ASSERT_THROW(pool.erase(entt::entity{1}), typename test::throwing_component::exception_type); in TEST()
1117 ASSERT_EQ(pool.size(), 2u); in TEST()
1118 ASSERT_TRUE(pool.contains(entt::entity{42})); in TEST()
1119 ASSERT_TRUE(pool.contains(entt::entity{1})); in TEST()
1120 ASSERT_EQ(pool.at(0u), entt::entity{1}); in TEST()
1121 ASSERT_EQ(pool.at(1u), entt::entity{42}); in TEST()
1122 ASSERT_EQ(pool.get(entt::entity{42}), 42); in TEST()
1124 ASSERT_EQ(pool.get(entt::entity{1}), test::throwing_component::moved_from_value); in TEST()
1127 pool.erase(entt::entity{1}); in TEST()
1129 ASSERT_EQ(pool.size(), 1u); in TEST()
1130 ASSERT_TRUE(pool.contains(entt::entity{42})); in TEST()
1131 ASSERT_FALSE(pool.contains(entt::entity{1})); in TEST()
1132 ASSERT_EQ(pool.at(0u), entt::entity{42}); in TEST()
1133 ASSERT_EQ(pool.get(entt::entity{42}), 42); in TEST()
1137 entt::basic_storage<entt::entity, int, test::throwing_allocator<int>> pool; in TEST() local
1142 ASSERT_THROW(pool.reserve(1u), test::throwing_allocator<int>::exception_type); in TEST()
1143 ASSERT_EQ(pool.capacity(), 0u); in TEST()
1148 ASSERT_THROW(pool.reserve(2 * ENTT_PACKED_PAGE), test::throwing_allocator<int>::exception_type); in TEST()
1149 ASSERT_EQ(pool.capacity(), 0u); in TEST()
1151 pool.shrink_to_fit(); in TEST()
1155 ASSERT_THROW(pool.emplace(entt::entity{0}, 0), test::throwing_allocator<int>::exception_type); in TEST()
1156 ASSERT_FALSE(pool.contains(entt::entity{0})); in TEST()
1157 ASSERT_TRUE(pool.empty()); in TEST()
1162 …ASSERT_THROW(pool.emplace(entt::entity{0}, 0), test::throwing_allocator<entt::entity>::exception_t… in TEST()
1163 ASSERT_FALSE(pool.contains(entt::entity{0})); in TEST()
1164 ASSERT_TRUE(pool.empty()); in TEST()
1166 pool.emplace(entt::entity{0}, 0); in TEST()
1171 …ASSERT_THROW(pool.insert(std::begin(entities), std::end(entities), 0), test::throwing_allocator<en… in TEST()
1172 ASSERT_TRUE(pool.contains(entt::entity{1})); in TEST()
1173 ASSERT_FALSE(pool.contains(entt::entity{ENTT_SPARSE_PAGE})); in TEST()
1175 pool.erase(entt::entity{1}); in TEST()
1180 …ASSERT_THROW(pool.insert(std::begin(entities), std::end(entities), std::begin(components)), test::… in TEST()
1181 ASSERT_TRUE(pool.contains(entt::entity{1})); in TEST()
1182 ASSERT_FALSE(pool.contains(entt::entity{ENTT_SPARSE_PAGE})); in TEST()