Skip to content

Commit de1b314

Browse files
committed
Add IScratchSprite tests
1 parent eed8150 commit de1b314

File tree

5 files changed

+155
-0
lines changed

5 files changed

+155
-0
lines changed

test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ add_subdirectory(zip)
1616
add_subdirectory(load_project)
1717
add_subdirectory(compiler)
1818
add_subdirectory(scratch_classes)
19+
add_subdirectory(target_interfaces)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# iscratchsprite_test
2+
add_executable(
3+
iscratchsprite_test
4+
iscratchsprite_test.cpp
5+
testspriteinterface.cpp
6+
testspriteinterface.h
7+
)
8+
9+
target_link_libraries(
10+
iscratchsprite_test
11+
GTest::gtest_main
12+
scratchcpp
13+
)
14+
15+
gtest_discover_tests(iscratchsprite_test)
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
#include "scratch/sprite.h"
2+
#include "testspriteinterface.h"
3+
#include "../common.h"
4+
5+
#define INIT_SPRITE() sprite.setInterface(&spriteInterface);
6+
7+
using namespace libscratchcpp;
8+
9+
Sprite sprite;
10+
TestSpriteInterface spriteInterface;
11+
12+
TEST(IScratchSpriteTest, Visible)
13+
{
14+
INIT_SPRITE();
15+
sprite.setVisible(false);
16+
ASSERT_EQ(spriteInterface.visible, false);
17+
sprite.setVisible(true);
18+
ASSERT_EQ(spriteInterface.visible, true);
19+
}
20+
21+
TEST(IScratchSpriteTest, X)
22+
{
23+
INIT_SPRITE();
24+
sprite.setX(300);
25+
ASSERT_EQ(spriteInterface.x, 300);
26+
sprite.setX(5.25);
27+
ASSERT_EQ(spriteInterface.x, 5.25);
28+
}
29+
30+
TEST(IScratchSpriteTest, Y)
31+
{
32+
INIT_SPRITE();
33+
sprite.setY(300);
34+
ASSERT_EQ(spriteInterface.y, 300);
35+
sprite.setY(5.25);
36+
ASSERT_EQ(spriteInterface.y, 5.25);
37+
}
38+
39+
TEST(IScratchSpriteTest, Size)
40+
{
41+
INIT_SPRITE();
42+
sprite.setSize(50);
43+
ASSERT_EQ(spriteInterface.size, 50);
44+
sprite.setSize(75.5);
45+
ASSERT_EQ(spriteInterface.size, 75.5);
46+
}
47+
48+
TEST(IScratchSpriteTest, Direction)
49+
{
50+
INIT_SPRITE();
51+
sprite.setDirection(85);
52+
ASSERT_EQ(spriteInterface.direction, 85);
53+
sprite.setDirection(179.715);
54+
ASSERT_EQ(spriteInterface.direction, 179.715);
55+
}
56+
57+
TEST(IScratchSpriteTest, RotationStyle)
58+
{
59+
INIT_SPRITE();
60+
sprite.setRotationStyle(Sprite::RotationStyle::DoNotRotate);
61+
ASSERT_EQ(spriteInterface.rotationStyle, Sprite::RotationStyle::DoNotRotate);
62+
sprite.setRotationStyle(Sprite::RotationStyle::LeftRight);
63+
ASSERT_EQ(spriteInterface.rotationStyle, Sprite::RotationStyle::LeftRight);
64+
}
65+
66+
TEST(IScratchSpriteTest, CostumeData)
67+
{
68+
INIT_SPRITE();
69+
// TODO: Add tests for costume data
70+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#include "testspriteinterface.h"
2+
3+
TestSpriteInterface::TestSpriteInterface()
4+
{
5+
}
6+
7+
void TestSpriteInterface::setVisible(bool visible)
8+
{
9+
this->visible = visible;
10+
}
11+
12+
void TestSpriteInterface::setX(double x)
13+
{
14+
this->x = x;
15+
}
16+
17+
void TestSpriteInterface::setY(double y)
18+
{
19+
this->y = y;
20+
}
21+
22+
void TestSpriteInterface::setSize(double size)
23+
{
24+
this->size = size;
25+
}
26+
27+
void TestSpriteInterface::setDirection(double direction)
28+
{
29+
this->direction = direction;
30+
}
31+
32+
void TestSpriteInterface::setRotationStyle(libscratchcpp::Sprite::RotationStyle rotationStyle)
33+
{
34+
this->rotationStyle = rotationStyle;
35+
}
36+
37+
void TestSpriteInterface::setCostume(const char *data)
38+
{
39+
costumeData = data;
40+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#pragma once
2+
3+
#include <iscratchsprite.h>
4+
5+
using namespace libscratchcpp;
6+
7+
class TestSpriteInterface : public IScratchSprite
8+
{
9+
public:
10+
TestSpriteInterface();
11+
12+
void setVisible(bool visible) override;
13+
void setX(double x) override;
14+
void setY(double y) override;
15+
void setSize(double size) override;
16+
void setDirection(double direction) override;
17+
void setRotationStyle(Sprite::RotationStyle rotationStyle) override;
18+
19+
void setCostume(const char *data) override;
20+
21+
bool visible = true;
22+
double x = 0;
23+
double y = 0;
24+
double size = 100;
25+
double direction = 90;
26+
Sprite::RotationStyle rotationStyle = Sprite::RotationStyle::AllAround;
27+
28+
const char *costumeData = nullptr;
29+
};

0 commit comments

Comments
 (0)