Files
Aethera/render_2D/tests/Model_Adaptation_Test.cpp
T
2026-09-03 11:52:15 +08:00

30 lines
1.3 KiB
C++

#include <render_2D/module/renderable/Renderable_2D.hpp>
#include <render_2D/module/scene/Render_Scene_2D.hpp>
#include <gtest/gtest.h>
namespace {
struct Test_Renderable_2D : aethera::Def<Test_Renderable_2D, aethera::render_2d::Renderable_2D> {
struct Private : Prev_Private {};
};
TEST(Model_Adaptation, Final_Private_Adapts_To_Renderable_Facade) {
auto renderable = Test_Renderable_2D::Builder{}.build();
auto proxy = aethera::model_proxy_view<aethera::render_2d::scene::Renderable>(*renderable);
ASSERT_TRUE(proxy);
proxy->render({32, 24});
proxy->advance();
EXPECT_TRUE(proxy->taskflow());
}
TEST(Model_Adaptation, Scene_Owns_The_Only_Renderable_Dag) {
aethera::Dag_Relation<aethera::render_2d::scene::Renderable>::Builder dag_builder;
dag_builder.add({1}, aethera::make_model_proxy<aethera::render_2d::scene::Renderable, Test_Renderable_2D>());
auto dag = dag_builder.build();
ASSERT_TRUE(dag.has_value());
aethera::render_2d::Render_Scene_2D::Builder scene_builder;
scene_builder
.relation<aethera::render_2d::scene::Renderable>([dag = std::move(*dag)](auto& relation) mutable { relation = std::move(dag); });
auto scene = scene_builder.build();
EXPECT_TRUE(scene->model_initialized());
}
} // namespace