删除realtime 的一个组件
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user