Skip to content

Commit dd70a58

Browse files
committed
test: rework things a little
1 parent aaf7661 commit dd70a58

File tree

1 file changed

+100
-52
lines changed

1 file changed

+100
-52
lines changed

test/entt/entity/sparse_set.cpp

+100-52
Original file line numberDiff line numberDiff line change
@@ -296,83 +296,131 @@ TYPED_TEST(SparseSet, ShrinkToFit) {
296296
ASSERT_EQ(set.capacity(), 0u);
297297
ASSERT_EQ(set.extent(), 0u);
298298

299-
set.reserve(8u);
299+
switch(policy) {
300+
case entt::deletion_policy::swap_and_pop: {
301+
set.push(entity_type{traits_type::page_size - 1u});
302+
set.push(entity_type{traits_type::page_size});
300303

301-
set.push(entity_type{traits_type::page_size - 1u});
302-
set.push(entity_type{traits_type::page_size});
303-
set.erase(entity_type{traits_type::page_size - 1u});
304+
set.erase(entity_type{traits_type::page_size - 1u});
304305

305-
ASSERT_EQ(set.capacity(), 8u);
306-
ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
306+
ASSERT_GE(set.capacity(), 2u);
307+
ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
307308

308-
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
309-
ASSERT_TRUE(set.contains(entity_type{traits_type::page_size}));
309+
set.shrink_to_fit();
310310

311-
set.shrink_to_fit();
311+
ASSERT_EQ(set.capacity(), 1u);
312+
ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
312313

313-
switch(policy) {
314-
case entt::deletion_policy::swap_only:
315-
case entt::deletion_policy::in_place: {
316-
ASSERT_EQ(set.capacity(), 2u);
314+
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
315+
ASSERT_TRUE(set.contains(entity_type{traits_type::page_size}));
316+
317+
set.push(entity_type{traits_type::page_size - 1u});
318+
set.erase(entity_type{traits_type::page_size});
319+
320+
ASSERT_GE(set.capacity(), 2u);
317321
ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
318-
} break;
319-
case entt::deletion_policy::swap_and_pop: {
322+
323+
set.shrink_to_fit();
324+
320325
ASSERT_EQ(set.capacity(), 1u);
321-
ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
326+
ASSERT_EQ(set.extent(), traits_type::page_size);
327+
328+
ASSERT_TRUE(set.contains(entity_type{traits_type::page_size - 1u}));
329+
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
330+
331+
set.erase(entity_type{traits_type::page_size - 1u});
332+
333+
set.shrink_to_fit();
334+
335+
ASSERT_EQ(set.capacity(), 0u);
336+
ASSERT_EQ(set.extent(), 0u);
337+
338+
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
339+
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
322340
} break;
323-
}
341+
case entt::deletion_policy::in_place: {
342+
set.push(entity_type{traits_type::page_size - 1u});
343+
set.push(entity_type{traits_type::page_size});
324344

325-
set.reserve(8u);
345+
set.erase(entity_type{traits_type::page_size - 1u});
326346

327-
set.push(entity_type{traits_type::page_size - 1u});
328-
set.erase(entity_type{traits_type::page_size});
347+
ASSERT_GE(set.capacity(), 2u);
348+
ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
329349

330-
ASSERT_EQ(set.capacity(), 8u);
331-
ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
350+
set.shrink_to_fit();
332351

333-
ASSERT_TRUE(set.contains(entity_type{traits_type::page_size - 1u}));
334-
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
352+
ASSERT_GE(set.capacity(), 2u);
353+
ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
335354

336-
set.shrink_to_fit();
355+
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
356+
ASSERT_TRUE(set.contains(entity_type{traits_type::page_size}));
337357

338-
switch(policy) {
339-
case entt::deletion_policy::in_place: {
340-
ASSERT_EQ(set.capacity(), 2u);
341-
ASSERT_EQ(set.extent(), traits_type::page_size);
342-
} break;
343-
case entt::deletion_policy::swap_only: {
344-
ASSERT_EQ(set.capacity(), 2u);
358+
set.push(entity_type{traits_type::page_size - 1u});
359+
set.erase(entity_type{traits_type::page_size});
360+
361+
ASSERT_GE(set.capacity(), 2u);
345362
ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
346-
} break;
347-
case entt::deletion_policy::swap_and_pop: {
348-
ASSERT_EQ(set.capacity(), 1u);
363+
364+
set.shrink_to_fit();
365+
366+
ASSERT_GE(set.capacity(), 2u);
349367
ASSERT_EQ(set.extent(), traits_type::page_size);
350-
} break;
351-
}
352368

353-
ASSERT_TRUE(set.contains(entity_type{traits_type::page_size - 1u}));
354-
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
369+
ASSERT_TRUE(set.contains(entity_type{traits_type::page_size - 1u}));
370+
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
355371

356-
set.erase(entity_type{traits_type::page_size - 1u});
357-
set.shrink_to_fit();
372+
set.erase(entity_type{traits_type::page_size - 1u});
358373

359-
switch(policy) {
360-
case entt::deletion_policy::in_place: {
361-
ASSERT_EQ(set.capacity(), 2u);
374+
set.shrink_to_fit();
375+
376+
ASSERT_GE(set.capacity(), 2u);
362377
ASSERT_EQ(set.extent(), 0u);
378+
379+
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
380+
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
363381
} break;
364382
case entt::deletion_policy::swap_only: {
365-
ASSERT_EQ(set.capacity(), 2u);
383+
set.push(entity_type{traits_type::page_size - 1u});
384+
set.push(entity_type{traits_type::page_size});
385+
386+
set.erase(entity_type{traits_type::page_size - 1u});
387+
388+
ASSERT_GE(set.capacity(), 2u);
366389
ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
367-
} break;
368-
case entt::deletion_policy::swap_and_pop: {
369-
ASSERT_EQ(set.capacity(), 0u);
370-
ASSERT_EQ(set.extent(), 0u);
390+
391+
set.shrink_to_fit();
392+
393+
ASSERT_GE(set.capacity(), 2u);
394+
ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
395+
396+
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
397+
ASSERT_TRUE(set.contains(entity_type{traits_type::page_size}));
398+
399+
set.push(entity_type{traits_type::page_size - 1u});
400+
set.erase(entity_type{traits_type::page_size});
401+
402+
ASSERT_GE(set.capacity(), 2u);
403+
ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
404+
405+
set.shrink_to_fit();
406+
407+
ASSERT_GE(set.capacity(), 2u);
408+
ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
409+
410+
ASSERT_TRUE(set.contains(entity_type{traits_type::page_size - 1u}));
411+
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
412+
413+
set.erase(entity_type{traits_type::page_size - 1u});
414+
415+
set.shrink_to_fit();
416+
417+
ASSERT_GE(set.capacity(), 2u);
418+
ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
419+
420+
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
421+
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
371422
} break;
372423
}
373-
374-
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
375-
ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
376424
}
377425
}
378426

0 commit comments

Comments
 (0)