id interface
Signed-off-by: Folling <mail@folling.io>
This commit is contained in:
parent
93cf9b392f
commit
20d1cf8264
4 changed files with 85 additions and 19 deletions
56
src/types/id.cpp
Normal file
56
src/types/id.cpp
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
#include "ikarus/types/id.h"
|
||||
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
|
||||
IkarusId ikarus_id_from_data(int64_t data) {
|
||||
return IkarusId {
|
||||
.data = data
|
||||
};
|
||||
}
|
||||
|
||||
IkarusObjectType ikarus_id_get_object_type(IkarusId id) {
|
||||
return static_cast<IkarusObjectType>(id.data >> 56);
|
||||
}
|
||||
|
||||
bool ikarus_id_is_equal(IkarusId left, IkarusId right) {
|
||||
return left.data == right.data;
|
||||
}
|
||||
|
||||
bool ikarus_id_is_none(IkarusId id) {
|
||||
return ikarus_id_is_equal(id, IKARUS_ID_NONE);
|
||||
}
|
||||
|
||||
bool ikarus_id_is_unspecified(IkarusId id) {
|
||||
return ikarus_id_is_equal(id, IKARUS_ID_UNSPECIFIED);
|
||||
}
|
||||
|
||||
TEST_CASE("id_object_type", "[id]") {
|
||||
auto id = ikarus_id_from_data(static_cast<uint64_t>(IkarusObjectType_Blueprint) << 56);
|
||||
|
||||
REQUIRE(ikarus_id_get_object_type(id) == IkarusObjectType_Blueprint);
|
||||
REQUIRE(!ikarus_id_is_none(id) == IkarusObjectType_Blueprint);
|
||||
REQUIRE(!ikarus_id_is_unspecified(id) == IkarusObjectType_Blueprint);
|
||||
}
|
||||
|
||||
TEST_CASE("id_equal", "[id]") {
|
||||
auto id = ikarus_id_from_data(static_cast<uint64_t>(IkarusObjectType_Blueprint) << 56);
|
||||
auto copy = id;
|
||||
auto third = ikarus_id_from_data(static_cast<uint64_t>(IkarusObjectType_Property) << 56);
|
||||
|
||||
REQUIRE(ikarus_id_is_equal(id, copy));
|
||||
REQUIRE(!ikarus_id_is_equal(id, third));
|
||||
}
|
||||
|
||||
TEST_CASE("id_none", "[id]") {
|
||||
auto id = IKARUS_ID_NONE;
|
||||
|
||||
REQUIRE(ikarus_id_is_none(id));
|
||||
REQUIRE(!ikarus_id_is_unspecified(id));
|
||||
}
|
||||
|
||||
TEST_CASE("id_unspecified", "[id]") {
|
||||
auto id = IKARUS_ID_UNSPECIFIED;
|
||||
|
||||
REQUIRE(!ikarus_id_is_none(id));
|
||||
REQUIRE(ikarus_id_is_unspecified(id));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue