#include #include #include namespace { SAW_TEST("ID functionality") { using namespace saw; struct foo {}; id a{1}; id b{1}; id c{2}; /** * The following doesn't compile, so it's commented out as an example */ /** * struct bar {}; * * id d{1}; * * SAW_EXPECT(a == d, "Shouldn't compile"); */ SAW_EXPECT(a == b, "Should be equal"); SAW_EXPECT(a != c, "Shouldn't be equal"); SAW_EXPECT(b != c, "Shouldn't be equal"); SAW_EXPECT(a.get_value() == 1, "Lost original value"); } SAW_TEST("ID Map Insert"){ using namespace saw; struct foo {}; id_map map; { auto eoid = map.insert(foo{}); SAW_EXPECT(eoid.is_value(), "First insert failed"); auto& id = eoid.get_value(); auto eoid_2 = map.insert(foo{}); SAW_EXPECT(eoid_2.is_value(), "Second Insert failed"); auto& id_2 = eoid_2.get_value(); SAW_EXPECT(id != id_2, "Shouldn't be equal"); auto eov = map.erase(id); SAW_EXPECT(eov.is_value(), "Erase failed"); auto eov_2 = map.erase(id); SAW_EXPECT(eov_2.is_error(), "This is a double free"); } } }