Skip to content

Commit 97ad825

Browse files
committed
Rewrite IStageHandler test using mocking
1 parent a5d7790 commit 97ad825

File tree

5 files changed

+45
-85
lines changed

5 files changed

+45
-85
lines changed

test/mocks/stagehandlermock.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#pragma once
2+
3+
#include <scratchcpp/istagehandler.h>
4+
#include <gmock/gmock.h>
5+
6+
using namespace libscratchcpp;
7+
8+
class StageHandlerMock : public IStageHandler
9+
{
10+
public:
11+
MOCK_METHOD(void, onStageChanged, (Stage *), (override));
12+
13+
MOCK_METHOD(void, onCostumeChanged, (const char *), (override));
14+
15+
MOCK_METHOD(void, onTempoChanged, (int), (override));
16+
MOCK_METHOD(void, onVideoStateChanged, (Stage::VideoState), (override));
17+
MOCK_METHOD(void, onVideoTransparencyChanged, (int), (override));
18+
};

test/target_interfaces/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ gtest_discover_tests(ispritehandler_test)
1818
add_executable(
1919
istagehandler_test
2020
istagehandler_test.cpp
21-
teststageinterface.cpp
22-
teststageinterface.h
2321
)
2422

2523
target_link_libraries(
2624
istagehandler_test
2725
GTest::gtest_main
26+
GTest::gmock_main
2827
scratchcpp
28+
scratchcpp_mocks
2929
)
3030

3131
gtest_discover_tests(istagehandler_test)
Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,40 @@
11
#include <scratchcpp/stage.h>
2+
#include <stagehandlermock.h>
23

3-
#include "teststageinterface.h"
44
#include "../common.h"
55

6-
#define INIT_STAGE() stage.setInterface(&stageInterface);
7-
86
using namespace libscratchcpp;
97

10-
Stage stage;
11-
TestStageInterface stageInterface;
12-
13-
TEST(IStageHandlerTest, Sprite)
8+
class IStageHandlerTest : public testing::Test
149
{
15-
INIT_STAGE();
16-
ASSERT_EQ(stageInterface.stage, &stage);
17-
}
18-
19-
TEST(IStageHandlerTest, Tempo)
10+
public:
11+
void SetUp() override
12+
{
13+
EXPECT_CALL(m_handler, onStageChanged(&m_stage)).Times(1);
14+
m_stage.setInterface(&m_handler);
15+
}
16+
17+
Stage m_stage;
18+
StageHandlerMock m_handler;
19+
};
20+
21+
TEST_F(IStageHandlerTest, Tempo)
2022
{
21-
INIT_STAGE();
22-
stage.setTempo(120);
23-
ASSERT_EQ(stageInterface.tempo, 120);
24-
stage.setTempo(55);
25-
ASSERT_EQ(stage.tempo(), 55);
23+
EXPECT_CALL(m_handler, onTempoChanged(120)).Times(1);
24+
m_stage.setTempo(120);
2625
}
2726

28-
TEST(IStageHandlerTest, VideoState)
27+
TEST_F(IStageHandlerTest, VideoState)
2928
{
30-
INIT_STAGE();
31-
stage.setVideoState(Stage::VideoState::On);
32-
ASSERT_EQ(stageInterface.videoState, Stage::VideoState::On);
33-
stage.setVideoState(Stage::VideoState::OnFlipped);
34-
ASSERT_EQ(stageInterface.videoState, Stage::VideoState::OnFlipped);
29+
EXPECT_CALL(m_handler, onVideoStateChanged(Stage::VideoState::On)).Times(1);
30+
m_stage.setVideoState(Stage::VideoState::On);
31+
32+
EXPECT_CALL(m_handler, onVideoStateChanged(Stage::VideoState::OnFlipped)).Times(1);
33+
m_stage.setVideoState(Stage::VideoState::OnFlipped);
3534
}
3635

37-
TEST(IStageHandlerTest, CostumeData)
36+
TEST_F(IStageHandlerTest, CostumeData)
3837
{
39-
INIT_STAGE();
40-
// TODO: Add tests for costume data
38+
// TODO: Add test for costume data
39+
// EXPECT_CALL(m_handler, onCostumeChanged(...)).Times(1);
4140
}

test/target_interfaces/teststageinterface.cpp

Lines changed: 0 additions & 30 deletions
This file was deleted.

test/target_interfaces/teststageinterface.h

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)