|
1 | 1 | #include <scratchcpp/broadcast.h> |
2 | 2 | #include <scratchcpp/block.h> |
| 3 | +#include <scratchcpp/variable.h> |
| 4 | +#include <scratchcpp/list.h> |
3 | 5 |
|
4 | 6 | #include "../common.h" |
5 | 7 | #include "testsection.h" |
@@ -283,3 +285,49 @@ TEST(EngineTest, Targets) |
283 | 285 | ASSERT_EQ(block1->engine(), &engine); |
284 | 286 | ASSERT_EQ(block2->engine(), &engine); |
285 | 287 | } |
| 288 | + |
| 289 | +TEST(EngineTest, VariableOwner) |
| 290 | +{ |
| 291 | + Engine engine; |
| 292 | + auto t1 = std::make_shared<Target>(); |
| 293 | + auto t2 = std::make_shared<Target>(); |
| 294 | + auto t3 = std::make_shared<Target>(); |
| 295 | + |
| 296 | + auto var1 = std::make_shared<Variable>("", "", Value()); |
| 297 | + auto var2 = std::make_shared<Variable>("", "", Value()); |
| 298 | + auto var3 = std::make_shared<Variable>("", "", Value()); |
| 299 | + auto var4 = std::make_shared<Variable>("", "", Value()); |
| 300 | + t1->addVariable(var1); |
| 301 | + t1->addVariable(var4); |
| 302 | + t3->addVariable(var3); |
| 303 | + |
| 304 | + engine.setTargets({ t1, t2, t3 }); |
| 305 | + |
| 306 | + ASSERT_EQ(engine.variableOwner(var1.get()), t1.get()); |
| 307 | + ASSERT_EQ(engine.variableOwner(var2.get()), nullptr); |
| 308 | + ASSERT_EQ(engine.variableOwner(var3.get()), t3.get()); |
| 309 | + ASSERT_EQ(engine.variableOwner(var4.get()), t1.get()); |
| 310 | +} |
| 311 | + |
| 312 | +TEST(EngineTest, ListOwner) |
| 313 | +{ |
| 314 | + Engine engine; |
| 315 | + auto t1 = std::make_shared<Target>(); |
| 316 | + auto t2 = std::make_shared<Target>(); |
| 317 | + auto t3 = std::make_shared<Target>(); |
| 318 | + |
| 319 | + auto list1 = std::make_shared<List>("", ""); |
| 320 | + auto list2 = std::make_shared<List>("", ""); |
| 321 | + auto list3 = std::make_shared<List>("", ""); |
| 322 | + auto list4 = std::make_shared<List>("", ""); |
| 323 | + t1->addList(list1); |
| 324 | + t1->addList(list4); |
| 325 | + t3->addList(list3); |
| 326 | + |
| 327 | + engine.setTargets({ t1, t2, t3 }); |
| 328 | + |
| 329 | + ASSERT_EQ(engine.listOwner(list1.get()), t1.get()); |
| 330 | + ASSERT_EQ(engine.listOwner(list2.get()), nullptr); |
| 331 | + ASSERT_EQ(engine.listOwner(list3.get()), t3.get()); |
| 332 | + ASSERT_EQ(engine.listOwner(list4.get()), t1.get()); |
| 333 | +} |
0 commit comments