14#include "../3rdparty/catch2/catch.hpp"
16#include "../core/flatset_type.hpp"
18#include "../safeguards.h"
20TEST_CASE(
"FlatSet - basic")
23 const auto values = std::to_array<uint8_t>({5, 10, 15, 20, 25});
31 CHECK(set.insert(values[1]).second);
32 CHECK(set.insert(values[2]).second);
33 CHECK(set.insert(values[4]).second);
34 CHECK(set.insert(values[3]).second);
35 CHECK(set.insert(values[0]).second);
36 CHECK(set.size() == 5);
37 CHECK(set.contains(values[0]));
38 CHECK(set.contains(values[1]));
39 CHECK(set.contains(values[2]));
40 CHECK(set.contains(values[3]));
41 CHECK(set.contains(values[4]));
42 CHECK(std::ranges::equal(set, values));
45 CHECK_FALSE(set.insert(values[1]).second);
46 CHECK(set.size() == 5);
47 CHECK(set.contains(values[0]));
48 CHECK(set.contains(values[1]));
49 CHECK(set.contains(values[2]));
50 CHECK(set.contains(values[3]));
51 CHECK(set.contains(values[4]));
52 CHECK(std::ranges::equal(set, values));
55 CHECK(set.insert(0).second);
56 CHECK_FALSE(set.insert(0).second);
57 CHECK_FALSE(set.insert(0).second);
58 CHECK(set.size() == 6);
59 CHECK(set.contains(0));
62 CHECK(set.erase(0) == 1);
63 CHECK(set.erase(0) == 0);
64 CHECK(set.erase(0) == 0);
65 CHECK(set.size() == 5);
66 CHECK(!set.contains(0));
Flat set implementation that uses a sorted vector for storage.