#include "id.hpp" #include #include uint64_t const IKARUS_ID_OBJECT_TYPE_BITS = 8; uint64_t const IKARUS_ID_OBJECT_RANDOM_BITS = sizeof(IkarusId) - IKARUS_ID_OBJECT_TYPE_BITS; auto ikarus_id_get_object_type(IkarusId id) -> IkarusObjectType { return static_cast(id >> IKARUS_ID_OBJECT_RANDOM_BITS); } auto ikarus_id_is_equal(IkarusId left, IkarusId right) -> bool { return left == right; } TEST_CASE("id_object_type", "[id]") { // NOLINTNEXTLINE(readability-magic-numbers) auto id = static_cast(IkarusObjectType_Blueprint) << IKARUS_ID_OBJECT_RANDOM_BITS; REQUIRE(ikarus_id_get_object_type(id) == IkarusObjectType_Blueprint); } TEST_CASE("id_equal", "[id]") { auto id = static_cast(IkarusObjectType_Blueprint) << IKARUS_ID_OBJECT_RANDOM_BITS; auto copy = id; auto third = static_cast(IkarusObjectType_Property) << IKARUS_ID_OBJECT_RANDOM_BITS; REQUIRE(ikarus_id_is_equal(id, copy)); REQUIRE(!ikarus_id_is_equal(id, third)); }