Skip to content

Commit 928683f

Browse files
committed
Add FPS test
1 parent cb9511b commit 928683f

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

test/2_frames.sb3

932 Bytes
Binary file not shown.

test/engine/engine_test.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <scratchcpp/variable.h>
77
#include <scratchcpp/list.h>
88
#include <timermock.h>
9+
#include <clockmock.h>
910

1011
#include "../common.h"
1112
#include "testsection.h"
@@ -14,6 +15,8 @@
1415

1516
using namespace libscratchcpp;
1617

18+
using ::testing::Return;
19+
1720
// NOTE: resolveIds() and compile() are tested in load_project_test
1821

1922
TEST(EngineTest, Clock)
@@ -68,6 +71,33 @@ TEST(EngineTest, Fps)
6871
ASSERT_EQ(engine.fps(), 60.25);
6972
}
7073

74+
TEST(EngineTest, FpsProject)
75+
{
76+
Project p("2_frames.sb3");
77+
ASSERT_TRUE(p.load());
78+
79+
ClockMock clock;
80+
Engine *engine = dynamic_cast<Engine *>(p.engine().get());
81+
engine->m_clock = &clock;
82+
83+
std::chrono::steady_clock::time_point time1(std::chrono::milliseconds(50));
84+
std::chrono::steady_clock::time_point time2(std::chrono::milliseconds(75));
85+
std::chrono::steady_clock::time_point time3(std::chrono::milliseconds(83));
86+
std::chrono::steady_clock::time_point time4(std::chrono::milliseconds(116));
87+
EXPECT_CALL(clock, currentSteadyTime()).WillOnce(Return(time1)).WillOnce(Return(time2)).WillOnce(Return(time3)).WillOnce(Return(time4)).WillOnce(Return(time4));
88+
EXPECT_CALL(clock, sleep(std::chrono::milliseconds(8)));
89+
p.run();
90+
91+
engine->setFps(10);
92+
std::chrono::steady_clock::time_point time5(std::chrono::milliseconds(100));
93+
std::chrono::steady_clock::time_point time6(std::chrono::milliseconds(115));
94+
std::chrono::steady_clock::time_point time7(std::chrono::milliseconds(200));
95+
std::chrono::steady_clock::time_point time8(std::chrono::milliseconds(300));
96+
EXPECT_CALL(clock, currentSteadyTime()).WillOnce(Return(time5)).WillOnce(Return(time6)).WillOnce(Return(time7)).WillOnce(Return(time8)).WillOnce(Return(time8));
97+
EXPECT_CALL(clock, sleep(std::chrono::milliseconds(85)));
98+
p.run();
99+
}
100+
71101
TEST(EngineTest, KeyState)
72102
{
73103
Engine engine;

0 commit comments

Comments
 (0)