Skip to content

Commit 3f29771

Browse files
authored
Merge pull request #168 from scratchcpp/field_test
Add Field test
2 parents 8694811 + 5116950 commit 3f29771

File tree

4 files changed

+105
-0
lines changed

4 files changed

+105
-0
lines changed

src/scratch/field.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// SPDX-License-Identifier: Apache-2.0
22

33
#include <scratchcpp/field.h>
4+
#include <scratchcpp/entity.h>
45

56
#include "field_p.h"
67

@@ -58,6 +59,11 @@ std::shared_ptr<Entity> Field::valuePtr() const
5859
void Field::setValuePtr(const std::shared_ptr<Entity> &newValuePtr)
5960
{
6061
impl->valuePtr = newValuePtr;
62+
63+
if (newValuePtr)
64+
impl->valueId = newValuePtr->id();
65+
else
66+
impl->valueId = "";
6167
}
6268

6369
/*! Returns the ID of the value (e. g. a variable). */

src/scratch/field_p.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// SPDX-License-Identifier: Apache-2.0
22

3+
#include <scratchcpp/entity.h>
4+
35
#include "field_p.h"
46

57
using namespace libscratchcpp;
@@ -9,6 +11,8 @@ FieldPrivate::FieldPrivate(const std::string &name, const Value &value, std::sha
911
value(value),
1012
valuePtr(valuePtr)
1113
{
14+
if (valuePtr)
15+
valueId = valuePtr->id();
1216
}
1317

1418
FieldPrivate::FieldPrivate(const std::string &name, const Value &value, const std::string &valueId) :

test/scratch_classes/CMakeLists.txt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,3 +139,17 @@ target_link_libraries(
139139
)
140140

141141
gtest_discover_tests(inputvalue_test)
142+
143+
# field_test
144+
add_executable(
145+
field_test
146+
field_test.cpp
147+
)
148+
149+
target_link_libraries(
150+
field_test
151+
GTest::gtest_main
152+
scratchcpp
153+
)
154+
155+
gtest_discover_tests(field_test)
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
#include <scratchcpp/field.h>
2+
#include <scratchcpp/broadcast.h>
3+
#include <scratchcpp/variable.h>
4+
#include <scratchcpp/list.h>
5+
6+
#include "../common.h"
7+
8+
using namespace libscratchcpp;
9+
10+
class FieldTest : public testing::Test
11+
{
12+
public:
13+
void SetUp() override
14+
{
15+
m_broadcast = std::make_shared<Broadcast>("broadcast", "");
16+
m_variable = std::make_shared<Variable>("variable", "");
17+
m_list = std::make_shared<List>("list", "");
18+
}
19+
20+
std::shared_ptr<Broadcast> m_broadcast;
21+
std::shared_ptr<Variable> m_variable;
22+
std::shared_ptr<List> m_list;
23+
};
24+
25+
TEST_F(FieldTest, Constructors)
26+
{
27+
Field field1("VARIABLE", "");
28+
ASSERT_EQ(field1.name(), "VARIABLE");
29+
ASSERT_EQ(field1.value().toString(), "");
30+
ASSERT_EQ(field1.valuePtr(), nullptr);
31+
ASSERT_EQ(field1.valueId(), "");
32+
33+
Field field2("VARIABLE", "variable1", m_variable);
34+
ASSERT_EQ(field2.name(), "VARIABLE");
35+
ASSERT_EQ(field2.value().toString(), "variable1");
36+
ASSERT_EQ(field2.valuePtr(), m_variable);
37+
ASSERT_EQ(field2.valueId(), "variable");
38+
39+
Field field3("LIST", "list1", std::string("list"));
40+
ASSERT_EQ(field3.name(), "LIST");
41+
ASSERT_EQ(field3.value().toString(), "list1");
42+
ASSERT_EQ(field3.valuePtr(), nullptr);
43+
ASSERT_EQ(field3.valueId(), "list");
44+
45+
Field field4("LIST", "list1", "list");
46+
ASSERT_EQ(field4.name(), "LIST");
47+
ASSERT_EQ(field4.value().toString(), "list1");
48+
ASSERT_EQ(field4.valuePtr(), nullptr);
49+
ASSERT_EQ(field4.valueId(), "list");
50+
}
51+
52+
TEST_F(FieldTest, FieldId)
53+
{
54+
Field field("", Value());
55+
ASSERT_EQ(field.fieldId(), -1);
56+
57+
field.setFieldId(2);
58+
ASSERT_EQ(field.fieldId(), 2);
59+
}
60+
61+
TEST_F(FieldTest, ValuePtr)
62+
{
63+
Field field("", Value());
64+
65+
field.setValuePtr(m_broadcast);
66+
ASSERT_EQ(field.valuePtr(), m_broadcast);
67+
ASSERT_EQ(field.valueId(), "broadcast");
68+
69+
field.setValuePtr(nullptr);
70+
ASSERT_EQ(field.valuePtr(), nullptr);
71+
ASSERT_EQ(field.valueId(), "");
72+
}
73+
74+
TEST_F(FieldTest, SpecialValueId)
75+
{
76+
Field field("", Value());
77+
ASSERT_EQ(field.specialValueId(), -1);
78+
79+
field.setSpecialValueId(5);
80+
ASSERT_EQ(field.specialValueId(), 5);
81+
}

0 commit comments

Comments
 (0)