32 lines
1.1 KiB
C++
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));
|
|
}
|