Skip to content

Commit 9008d12

Browse files
committed
Rewrite ISpriteHandler test using mocking
1 parent 97ad825 commit 9008d12

File tree

5 files changed

+63
-129
lines changed

5 files changed

+63
-129
lines changed

test/mocks/spritehandlermock.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#pragma once
2+
3+
#include <scratchcpp/ispritehandler.h>
4+
#include <gmock/gmock.h>
5+
6+
using namespace libscratchcpp;
7+
8+
class SpriteHandlerMock : public ISpriteHandler
9+
{
10+
public:
11+
MOCK_METHOD(void, onSpriteChanged, (Sprite *), (override));
12+
13+
MOCK_METHOD(void, onCostumeChanged, (const char *), (override));
14+
15+
MOCK_METHOD(void, onVisibleChanged, (bool), (override));
16+
MOCK_METHOD(void, onXChanged, (double), (override));
17+
MOCK_METHOD(void, onYChanged, (double), (override));
18+
MOCK_METHOD(void, onSizeChanged, (double), (override));
19+
MOCK_METHOD(void, onDirectionChanged, (double), (override));
20+
MOCK_METHOD(void, onRotationStyleChanged, (Sprite::RotationStyle), (override));
21+
};

test/target_interfaces/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
add_executable(
33
ispritehandler_test
44
ispritehandler_test.cpp
5-
testspriteinterface.cpp
6-
testspriteinterface.h
75
)
86

97
target_link_libraries(
108
ispritehandler_test
119
GTest::gtest_main
10+
GTest::gmock_main
1211
scratchcpp
12+
scratchcpp_mocks
1313
)
1414

1515
gtest_discover_tests(ispritehandler_test)
Lines changed: 40 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,66 @@
1-
#include "testspriteinterface.h"
2-
#include "../common.h"
1+
#include <spritehandlermock.h>
32

4-
#define INIT_SPRITE() sprite.setInterface(&spriteInterface);
3+
#include "../common.h"
54

65
using namespace libscratchcpp;
76

8-
Sprite sprite;
9-
TestSpriteInterface spriteInterface;
10-
11-
TEST(ISpriteHandlerTest, Sprite)
7+
class ISpriteHandlerTest : public testing::Test
128
{
13-
INIT_SPRITE();
14-
ASSERT_EQ(spriteInterface.sprite, &sprite);
15-
}
9+
public:
10+
void SetUp() override
11+
{
12+
EXPECT_CALL(m_handler, onSpriteChanged(&m_sprite)).Times(1);
13+
m_sprite.setInterface(&m_handler);
14+
}
1615

17-
TEST(ISpriteHandlerTest, Visible)
16+
Sprite m_sprite;
17+
SpriteHandlerMock m_handler;
18+
};
19+
20+
TEST_F(ISpriteHandlerTest, Visible)
1821
{
19-
INIT_SPRITE();
20-
sprite.setVisible(false);
21-
ASSERT_EQ(spriteInterface.visible, false);
22-
sprite.setVisible(true);
23-
ASSERT_EQ(spriteInterface.visible, true);
22+
EXPECT_CALL(m_handler, onVisibleChanged(false)).Times(1);
23+
m_sprite.setVisible(false);
24+
25+
EXPECT_CALL(m_handler, onVisibleChanged(true)).Times(1);
26+
m_sprite.setVisible(true);
2427
}
2528

26-
TEST(ISpriteHandlerTest, X)
29+
TEST_F(ISpriteHandlerTest, X)
2730
{
28-
INIT_SPRITE();
29-
sprite.setX(300);
30-
ASSERT_EQ(spriteInterface.x, 300);
31-
sprite.setX(5.25);
32-
ASSERT_EQ(spriteInterface.x, 5.25);
31+
EXPECT_CALL(m_handler, onXChanged(300.25)).Times(1);
32+
m_sprite.setX(300.25);
3333
}
3434

35-
TEST(ISpriteHandlerTest, Y)
35+
TEST_F(ISpriteHandlerTest, Y)
3636
{
37-
INIT_SPRITE();
38-
sprite.setY(300);
39-
ASSERT_EQ(spriteInterface.y, 300);
40-
sprite.setY(5.25);
41-
ASSERT_EQ(spriteInterface.y, 5.25);
37+
EXPECT_CALL(m_handler, onYChanged(-153.7)).Times(1);
38+
m_sprite.setY(-153.7);
4239
}
4340

44-
TEST(ISpriteHandlerTest, Size)
41+
TEST_F(ISpriteHandlerTest, Size)
4542
{
46-
INIT_SPRITE();
47-
sprite.setSize(50);
48-
ASSERT_EQ(spriteInterface.size, 50);
49-
sprite.setSize(75.5);
50-
ASSERT_EQ(spriteInterface.size, 75.5);
43+
EXPECT_CALL(m_handler, onSizeChanged(53.8)).Times(1);
44+
m_sprite.setSize(53.8);
5145
}
5246

53-
TEST(ISpriteHandlerTest, Direction)
47+
TEST_F(ISpriteHandlerTest, Direction)
5448
{
55-
INIT_SPRITE();
56-
sprite.setDirection(85);
57-
ASSERT_EQ(spriteInterface.direction, 85);
58-
sprite.setDirection(179.715);
59-
ASSERT_EQ(spriteInterface.direction, 179.715);
49+
EXPECT_CALL(m_handler, onDirectionChanged(179.715)).Times(1);
50+
m_sprite.setDirection(179.715);
6051
}
6152

62-
TEST(ISpriteHandlerTest, RotationStyle)
53+
TEST_F(ISpriteHandlerTest, RotationStyle)
6354
{
64-
INIT_SPRITE();
65-
sprite.setRotationStyle(Sprite::RotationStyle::DoNotRotate);
66-
ASSERT_EQ(spriteInterface.rotationStyle, Sprite::RotationStyle::DoNotRotate);
67-
sprite.setRotationStyle(Sprite::RotationStyle::LeftRight);
68-
ASSERT_EQ(spriteInterface.rotationStyle, Sprite::RotationStyle::LeftRight);
55+
EXPECT_CALL(m_handler, onRotationStyleChanged(Sprite::RotationStyle::DoNotRotate)).Times(1);
56+
m_sprite.setRotationStyle(Sprite::RotationStyle::DoNotRotate);
57+
58+
EXPECT_CALL(m_handler, onRotationStyleChanged(Sprite::RotationStyle::LeftRight)).Times(1);
59+
m_sprite.setRotationStyle(Sprite::RotationStyle::LeftRight);
6960
}
7061

71-
TEST(ISpriteHandlerTest, CostumeData)
62+
TEST_F(ISpriteHandlerTest, CostumeData)
7263
{
73-
INIT_SPRITE();
74-
// TODO: Add tests for costume data
64+
// TODO: Add test for costume data
65+
// EXPECT_CALL(m_handler, onCostumeChanged(...)).Times(1);
7566
}

test/target_interfaces/testspriteinterface.cpp

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

test/target_interfaces/testspriteinterface.h

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

0 commit comments

Comments
 (0)