删除realtime 的一个组件

This commit is contained in:
2026-08-14 12:27:12 +08:00
parent 38231dbc1c
commit dfb2de6bf7
24 changed files with 3972 additions and 421 deletions
@@ -6,11 +6,53 @@
#include <mutex>
#include <thread>
#include <vector>
#include "renderive/real_time_data/Double_Buffer_Strategy.hpp"
#include "renderive/real_time_data/Real_Time_Data.hpp"
#include "renderive/renderable/Renderable.hpp"
#include "renderive/renderable/Renderable_Test_Harness.hpp"
#include "renderive/scene/Scene.hpp"
#include "renderive/scene/Scene_Test_Helpers.hpp"
#include "renderive/state/base/State_Strategy_Base.hpp"
namespace {
struct Double_Buffer_Test_Base {};
struct Double_Buffer_Test_Tag {};
using Double_Buffer_Test_Layout =
Double_Buffer_Layout<Buffered_Data<Double_Buffer_Test_Tag,
std::vector<int>>>;
class Double_Buffer_Test_Strategy final
: public Multi_Double_Buffer_Strategy<Double_Buffer_Test_Base,
Double_Buffer_Test_Layout,
std::mutex> {
using Base = Multi_Double_Buffer_Strategy<Double_Buffer_Test_Base,
Double_Buffer_Test_Layout,
std::mutex>;
public:
using Base::buffer_revision;
using Base::publish;
using Base::revision;
using Base::write;
[[nodiscard]] const std::vector<int>& published() const noexcept {
return Base::render_buffer_value<Double_Buffer_Test_Tag>();
}
};
static_assert(!std::derived_from<Double_Buffer_Test_Strategy,
State_Strategy_Base>);
}
TEST(double_buffer_strategy_test,
single_entry_layout_publishes_with_external_side_effect) {
Double_Buffer_Test_Strategy strategy;
int side_effect_count{};
strategy.write<Double_Buffer_Test_Tag>({1, 2, 3});
EXPECT_TRUE(strategy.publish([&] { ++side_effect_count; }));
EXPECT_EQ(strategy.published(), (std::vector<int>{1, 2, 3}));
EXPECT_EQ(strategy.revision(), 1U);
EXPECT_EQ(strategy.buffer_revision<Double_Buffer_Test_Tag>(), 1U);
EXPECT_EQ(side_effect_count, 1);
EXPECT_FALSE(strategy.publish([&] { ++side_effect_count; }));
EXPECT_EQ(side_effect_count, 1);
}
struct Real_Time_Data_Test_Time_Source {
std::shared_ptr<std::atomic<std::uint64_t>> time_ns{std::make_shared<std::atomic<std::uint64_t>>()};
std::uint64_t now_ns() const noexcept {