Files
PixelDefense/engine/libs/flecs/test/cpp_api/src/Paths.cpp

236 lines
5.3 KiB
C++

#include <cpp_api.h>
void Paths_name(void) {
flecs::world world;
auto e = flecs::entity(world, "foo");
test_str(e.name().c_str(), "foo");
auto e_world = world.lookup("foo");
test_assert(e.id() == e_world.id());
e_world = world.lookup("::foo");
test_assert(e.id() == e_world.id());
}
void Paths_path_depth_1(void) {
flecs::world world;
auto e = flecs::entity(world, "foo::bar");
test_str(e.name().c_str(), "bar");
test_str(e.path().c_str(), "::foo::bar");
auto e_world = world.lookup("bar");
test_assert(0 == e_world.id());
e_world = world.lookup("foo::bar");
test_assert(e.id() == e_world.id());
e_world = world.lookup("::foo::bar");
test_assert(e.id() == e_world.id());
}
void Paths_path_depth_2(void) {
flecs::world world;
auto e = flecs::entity(world, "foo::bar::hello");
test_str(e.name().c_str(), "hello");
test_str(e.path().c_str(), "::foo::bar::hello");
auto e_world = world.lookup("hello");
test_assert(0 == e_world.id());
e_world = world.lookup("foo::bar::hello");
test_assert(e.id() == e_world.id());
e_world = world.lookup("::foo::bar::hello");
test_assert(e.id() == e_world.id());
}
void Paths_entity_lookup_name(void) {
flecs::world world;
auto parent = flecs::entity(world, "foo");
test_str(parent.name().c_str(), "foo");
test_str(parent.path().c_str(), "::foo");
auto e = flecs::entity(world, "foo::bar");
test_str(e.name().c_str(), "bar");
test_str(e.path().c_str(), "::foo::bar");
auto parent_e = parent.lookup("bar");
test_assert(e.id() == parent_e.id());
parent_e = parent.lookup("::foo::bar");
test_assert(e.id() == parent_e.id());
}
void Paths_entity_lookup_depth_1(void) {
flecs::world world;
auto parent = flecs::entity(world, "foo");
test_str(parent.name().c_str(), "foo");
test_str(parent.path().c_str(), "::foo");
auto e = flecs::entity(world, "foo::bar::hello");
test_str(e.name().c_str(), "hello");
test_str(e.path().c_str(), "::foo::bar::hello");
auto parent_e = parent.lookup("bar::hello");
test_assert(e.id() == parent_e.id());
parent_e = parent.lookup("::foo::bar::hello");
test_assert(e.id() == parent_e.id());
}
void Paths_entity_lookup_depth_2(void) {
flecs::world world;
auto parent = flecs::entity(world, "foo");
test_str(parent.name().c_str(), "foo");
test_str(parent.path().c_str(), "::foo");
auto e = flecs::entity(world, "foo::bar::hello::world");
test_str(e.name().c_str(), "world");
test_str(e.path().c_str(), "::foo::bar::hello::world");
auto parent_e = parent.lookup("bar::hello::world");
test_assert(e.id() == parent_e.id());
parent_e = parent.lookup("::foo::bar::hello::world");
test_assert(e.id() == parent_e.id());
}
void Paths_entity_lookup_from_0(void) {
install_test_abort();
flecs::world world;
flecs::entity foo = world.entity("foo");
test_assert(world.lookup("foo") == foo);
flecs::entity dummy;
test_expect_abort();
dummy.lookup("foo");
}
void Paths_entity_lookup_from_0_w_world(void) {
install_test_abort();
flecs::world world;
flecs::entity foo = world.entity("foo");
test_assert(world.lookup("foo") == foo);
flecs::entity dummy = world.entity(0);
test_expect_abort();
dummy.lookup("foo");
}
void Paths_alias_component(void) {
flecs::world ecs;
auto e = ecs.use<Position>("MyPosition");
auto a = ecs.lookup("MyPosition");
auto c = ecs.lookup("Position");
test_assert(e.id() == a.id());
test_assert(e.id() == c.id());
}
namespace test {
struct Foo {
float x;
float y;
};
}
void Paths_alias_scoped_component(void) {
flecs::world ecs;
auto e = ecs.use<test::Foo>();
auto a = ecs.lookup("Foo");
auto c = ecs.lookup("test::Foo");
test_assert(e.id() == a.id());
test_assert(e.id() == c.id());
}
void Paths_alias_scoped_component_w_name(void) {
flecs::world ecs;
auto e = ecs.use<test::Foo>("FooAlias");
auto a = ecs.lookup("FooAlias");
auto f = ecs.lookup("Foo");
auto c = ecs.lookup("test::Foo");
test_assert(e.id() == a.id());
test_assert(e.id() == c.id());
test_assert(f.id() == 0);
}
void Paths_alias_entity(void) {
flecs::world ecs;
auto e = ecs.entity("Foo");
ecs.use(e, "FooAlias");
auto a = ecs.lookup("FooAlias");
test_assert(e.id() == a.id());
}
void Paths_alias_entity_by_name(void) {
flecs::world ecs;
auto e = ecs.entity("Foo");
ecs.use(e, "FooAlias");
auto l = ecs.lookup("FooAlias");
test_assert(e.id() == l.id());
}
void Paths_alias_entity_by_scoped_name(void) {
flecs::world ecs;
auto e = ecs.entity("Foo::Bar");
auto a = ecs.use("Foo::Bar", "FooAlias");
auto l = ecs.lookup("FooAlias");
test_assert(e.id() == a.id());
test_assert(e.id() == l.id());
}
void Paths_alias_entity_empty(void) {
flecs::world ecs;
auto parent = ecs.entity("parent");
auto child = ecs.entity("child").child_of(parent);
auto e = ecs.lookup("child");
test_assert(e.id() == 0);
ecs.use(child); // alias being nullptr
e = ecs.lookup("child");
test_assert(e.id() != 0);
ecs.use(child, "FooAlias");
e = ecs.lookup("child");
test_assert(e.id() == 0);
e = ecs.lookup("FooAlias");
test_assert(e.id() != 0);
}