#include #include #include "../Renderive/architecture/Plot_Render_Context.h" #include "../Renderive/architecture/Timeline_Stream.h" #include "../Renderive/base/Memory.h" TEST(Timeline_Stream_Consistency, ReusesOneTimelineSnapshotInsideFrame) { auto stream = renderive::make_shared(); stream->set_time_point_size(8); int first_tick = stream->push_time(QTime(10, 0, 0)); renderive::Plot_Render_Snapshot frame; auto first_snapshot = frame.timeline_snapshot(stream); int second_tick = stream->push_time(QTime(10, 0, 1)); auto second_snapshot = frame.timeline_snapshot(stream); EXPECT_EQ(first_snapshot, second_snapshot); EXPECT_EQ(first_snapshot->time_by_tick(first_tick), QTime(10, 0, 0)); EXPECT_NE(first_snapshot->time_by_tick(second_tick), QTime(10, 0, 1)); renderive::Plot_Render_Snapshot next_frame; auto next_snapshot = next_frame.timeline_snapshot(stream); EXPECT_NE(next_snapshot->version, first_snapshot->version); EXPECT_EQ(next_snapshot->time_by_tick(second_tick), QTime(10, 0, 1)); } TEST(Timeline_Stream_Consistency, KeepsTickAndTimePairedInSnapshot) { auto stream = renderive::make_shared(); stream->set_time_point_size(16); stream->set_tick_space(2); for (int i = 0; i < 12; ++i) stream->push_time(QTime::fromMSecsSinceStartOfDay(i * 1000)); renderive::Timeline_Stream_Snapshot snapshot = stream->capture(); ASSERT_FALSE(snapshot.ticks.empty()); for (const renderive::Timeline_Tick& tick : snapshot.ticks) EXPECT_EQ(snapshot.time_by_tick(tick.tick), tick.time); } TEST(Timeline_Stream_Consistency, DefaultsNewTimeToCoordEnd) { auto stream = renderive::make_shared(); stream->set_time_point_size(4); int tick = stream->push_time(QTime(10, 0, 0)); renderive::Timeline_Stream_Snapshot snapshot = stream->capture(); EXPECT_FALSE(snapshot.start_coord_to_end_coord); EXPECT_EQ(tick, snapshot.upper()); EXPECT_EQ(snapshot.time_by_tick(snapshot.upper()), QTime(10, 0, 0)); } TEST(Timeline_Stream_Consistency, SupportsNewTimeToCoordStart) { auto stream = renderive::make_shared(); stream->set_time_point_size(4); stream->set_start_coord_to_end_coord(true); for (int i = 0; i < 4; ++i) stream->push_time(QTime::fromMSecsSinceStartOfDay(i)); renderive::Timeline_Stream_Snapshot snapshot = stream->capture(); EXPECT_TRUE(snapshot.start_coord_to_end_coord); EXPECT_EQ(snapshot.time_by_tick(snapshot.lower), QTime::fromMSecsSinceStartOfDay(3)); EXPECT_EQ(snapshot.time_by_tick(snapshot.upper()), QTime::fromMSecsSinceStartOfDay(0)); } int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }