Skip to content

Commit cfcbb77

Browse files
committed
Set variable and list owner
1 parent dd51952 commit cfcbb77

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

src/scratch/target.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ int Target::addVariable(std::shared_ptr<Variable> variable)
4242
return it - impl->variables.begin();
4343

4444
impl->variables.push_back(variable);
45+
variable->setTarget(this);
46+
4547
return impl->variables.size() - 1;
4648
}
4749

@@ -93,6 +95,8 @@ int Target::addList(std::shared_ptr<List> list)
9395
return it - impl->lists.begin();
9496

9597
impl->lists.push_back(list);
98+
list->setTarget(this);
99+
96100
return impl->lists.size() - 1;
97101
}
98102

test/scratch_classes/sprite_test.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ TEST(SpriteTest, Clone)
6969
ASSERT_EQ(clone->variableAt(1)->id(), "b");
7070
ASSERT_EQ(clone->variableAt(1)->name(), "var2");
7171
ASSERT_EQ(clone->variableAt(1)->value().toString(), "world");
72+
ASSERT_EQ(clone->variableAt(1)->target(), clone);
7273

7374
ASSERT_EQ(clone->lists().size(), 2);
7475
ASSERT_NE(clone->lists(), root->lists());
@@ -78,6 +79,7 @@ TEST(SpriteTest, Clone)
7879
ASSERT_EQ(clone->listAt(1)->id(), "d");
7980
ASSERT_EQ(clone->listAt(1)->name(), "list2");
8081
ASSERT_EQ(*clone->listAt(1), std::deque<Value>({ "test" }));
82+
ASSERT_EQ(clone->listAt(1)->target(), clone);
8183

8284
ASSERT_EQ(clone->currentCostume(), 2);
8385
ASSERT_EQ(clone->layerOrder(), 5);

test/scratch_classes/target_test.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ TEST(TargetTest, Variables)
3838
ASSERT_EQ(target.addVariable(v3), 2);
3939
ASSERT_EQ(target.addVariable(v2), 1); // add existing variable
4040

41+
ASSERT_EQ(v1->target(), &target);
42+
ASSERT_EQ(v2->target(), &target);
43+
ASSERT_EQ(v3->target(), &target);
44+
4145
ASSERT_EQ(target.variables(), std::vector<std::shared_ptr<Variable>>({ v1, v2, v3 }));
4246
ASSERT_EQ(target.variableAt(0), v1);
4347
ASSERT_EQ(target.variableAt(1), v2);
@@ -68,6 +72,10 @@ TEST(TargetTest, Lists)
6872
ASSERT_EQ(target.addList(l3), 2);
6973
ASSERT_EQ(target.addList(l2), 1); // add existing list
7074

75+
ASSERT_EQ(l1->target(), &target);
76+
ASSERT_EQ(l2->target(), &target);
77+
ASSERT_EQ(l3->target(), &target);
78+
7179
ASSERT_EQ(target.lists(), std::vector<std::shared_ptr<List>>({ l1, l2, l3 }));
7280
ASSERT_EQ(target.listAt(0), l1);
7381
ASSERT_EQ(target.listAt(1), l2);

0 commit comments

Comments
 (0)