libikarus/src/id.cpp
folling 2ab0109355
intermediate commit
Signed-off-by: Folling <mail@folling.io>
2025-04-15 12:10:38 +02:00

32 lines
1.1 KiB
C++

#include "id.hpp"
#include <catch2/catch_test_macros.hpp>
#include <ikarus/objects/object_type.h>
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<IkarusObjectType>(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<uint64_t>(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<uint64_t>(IkarusObjectType_Blueprint) << IKARUS_ID_OBJECT_RANDOM_BITS;
auto copy = id;
auto third = static_cast<uint64_t>(IkarusObjectType_Property) << IKARUS_ID_OBJECT_RANDOM_BITS;
REQUIRE(ikarus_id_is_equal(id, copy));
REQUIRE(!ikarus_id_is_equal(id, third));
}