57 lines
2.8 KiB
C++
57 lines
2.8 KiB
C++
#include <QTime>
|
|
#include <gtest/gtest.h>
|
|
#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<renderive::Timeline_Stream>();
|
|
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<renderive::Timeline_Stream>();
|
|
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<renderive::Timeline_Stream>();
|
|
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<renderive::Timeline_Stream>();
|
|
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();
|
|
}
|