修复大错误移动到prop

This commit is contained in:
2026-08-20 23:04:59 +08:00
parent e67161c90d
commit 81204fc188
51 changed files with 685 additions and 403 deletions
+11 -14
View File
@@ -1,11 +1,9 @@
#include "scene.hpp"
#include <gtest/gtest.h>
namespace {
struct Direct_State_Tag {};
struct Graph_State_Tag {};
struct Direct_Renderable : double_buffer::Def<Direct_Renderable, aethera::Renderable, double_buffer::State_Type<Direct_State_Tag>> {
struct Direct_Renderable : double_buffer::Def<Direct_Renderable, aethera::Renderable> {
struct Prop : Prev_Prop {};
struct State : Prev_State<Direct_State_Tag> {
struct State : Prev_State {
bool operator==(const State&) const = default;
};
struct Private : Prev_Private {
@@ -20,9 +18,9 @@ struct Direct_Renderable : double_buffer::Def<Direct_Renderable, aethera::Render
};
Private& data_for_test();
};
struct Graph_Renderable : double_buffer::Def<Graph_Renderable, aethera::Renderable, double_buffer::State_Type<Graph_State_Tag>> {
struct Graph_Renderable : double_buffer::Def<Graph_Renderable, aethera::Renderable> {
struct Prop : Prev_Prop {};
struct State : Prev_State<Graph_State_Tag> {
struct State : Prev_State {
bool operator==(const State&) const = default;
};
struct Private : Prev_Private {
@@ -30,13 +28,13 @@ struct Graph_Renderable : double_buffer::Def<Graph_Renderable, aethera::Renderab
int paint_calls{};
int prepare_builds{};
bool rebuild_prepare{};
tf::Taskflow build_prepare_graph(double_buffer::Attached auto*, const State&) {
tf::Taskflow build_prepare_graph(double_buffer::Attached auto*, const Prop&) {
++prepare_builds;
tf::Taskflow graph;
graph.emplace([this] { ++prepare_calls; }).name("test.prepare.graph.task");
return graph;
}
bool should_rebuild_prepare_graph(double_buffer::Attached auto*, const State&) {
bool should_rebuild_prepare_graph(double_buffer::Attached auto*, const Prop&) {
return std::exchange(rebuild_prepare, false);
}
void paint(double_buffer::Attached auto*) {
@@ -54,10 +52,9 @@ inline Direct_Renderable::Private& Direct_Renderable::data_for_test() {
inline Graph_Renderable::Private& Graph_Renderable::data_for_test() {
return static_cast<Private&>(*d);
}
struct Dependency_State_Tag {};
struct Dependency_Renderable : double_buffer::Def<Dependency_Renderable, aethera::Renderable, double_buffer::State_Type<Dependency_State_Tag>> {
struct Dependency_Renderable : double_buffer::Def<Dependency_Renderable, aethera::Renderable> {
struct Prop : Prev_Prop {};
struct State : Prev_State<Dependency_State_Tag> {
struct State : Prev_State {
int revision{};
bool operator==(const State&) const = default;
};
@@ -141,12 +138,12 @@ TEST(renderable_state, scene_and_renderable_callbacks_publish_at_stage_boundarie
int renderable_updates = 0;
int scene_updates = 0;
int runtime_updates = 0;
renderable->set_state_callback<aethera::Renderable_State_Tag>([&](const auto& state) {
renderable->set_state_callback<aethera::Renderable::Base_Tag>([&](const auto& state) {
++renderable_updates;
EXPECT_TRUE(state.prepare_executed);
EXPECT_TRUE(state.paint_executed);
});
scene->set_state_callback<aethera::Scene_State_Tag>([&](const auto& state) {
scene->set_state_callback<aethera::Scene::Base_Tag>([&](const auto& state) {
++scene_updates;
EXPECT_GT(state.taskflow_task_count, 0u);
});
@@ -169,7 +166,7 @@ TEST(scene_state, structural_statistics_survive_a_process_without_rebuild) {
std::size_t task_count{};
std::size_t dependency_count{};
int updates{};
scene->set_state_callback<aethera::Scene_State_Tag>([&](const auto& state) {
scene->set_state_callback<aethera::Scene::Base_Tag>([&](const auto& state) {
EXPECT_EQ(state.renderable_count, 1u);
EXPECT_GT(state.taskflow_task_count, 0u);
if (updates == 0) {