|
2 | 2 | #include <projectloader.h> |
3 | 3 | #include <spritemodel.h> |
4 | 4 | #include <enginemock.h> |
| 5 | +#include <renderedtargetmock.h> |
5 | 6 |
|
6 | 7 | #include "../common.h" |
7 | 8 |
|
@@ -73,6 +74,44 @@ TEST_F(ProjectLoaderTest, Load) |
73 | 74 | ASSERT_EQ(sprites[1]->sprite(), engine->targetAt(2)); |
74 | 75 | } |
75 | 76 |
|
| 77 | +TEST_F(ProjectLoaderTest, Clones) |
| 78 | +{ |
| 79 | + ProjectLoader loader; |
| 80 | + QSignalSpy cloneCreatedSpy(&loader, &ProjectLoader::cloneCreated); |
| 81 | + QSignalSpy cloneDeletedSpy(&loader, &ProjectLoader::cloneDeleted); |
| 82 | + QSignalSpy clonesChangedSpy(&loader, &ProjectLoader::clonesChanged); |
| 83 | + load(&loader, "clones.sb3"); |
| 84 | + ASSERT_TRUE(cloneCreatedSpy.empty()); |
| 85 | + ASSERT_TRUE(cloneDeletedSpy.empty()); |
| 86 | + ASSERT_TRUE(clonesChangedSpy.empty()); |
| 87 | + |
| 88 | + auto engine = loader.engine(); |
| 89 | + engine->run(); |
| 90 | + ASSERT_EQ(cloneCreatedSpy.count(), 3); |
| 91 | + ASSERT_EQ(cloneDeletedSpy.count(), 0); |
| 92 | + ASSERT_EQ(clonesChangedSpy.count(), 3); |
| 93 | + |
| 94 | + const auto &sprites = loader.spriteList(); |
| 95 | + const auto &clones = loader.cloneList(); |
| 96 | + ASSERT_EQ(sprites.size(), 1); |
| 97 | + ASSERT_EQ(clones.size(), 3); |
| 98 | + ASSERT_EQ(clones[0]->sprite()->cloneSprite(), sprites[0]->sprite()); |
| 99 | + ASSERT_EQ(clones[1]->sprite()->cloneSprite(), sprites[0]->sprite()); |
| 100 | + ASSERT_EQ(clones[2]->sprite()->cloneSprite(), sprites[0]->sprite()); |
| 101 | + |
| 102 | + RenderedTargetMock target1, target2, target3; |
| 103 | + clones[0]->setRenderedTarget(&target1); |
| 104 | + clones[1]->setRenderedTarget(&target2); |
| 105 | + clones[2]->setRenderedTarget(&target3); |
| 106 | + |
| 107 | + EXPECT_CALL(target2, deinitClone()); |
| 108 | + clones[1]->sprite()->deleteClone(); |
| 109 | + ASSERT_EQ(cloneCreatedSpy.count(), 3); |
| 110 | + ASSERT_EQ(cloneDeletedSpy.count(), 1); |
| 111 | + ASSERT_EQ(clonesChangedSpy.count(), 4); |
| 112 | + ASSERT_EQ(clones.size(), 2); |
| 113 | +} |
| 114 | + |
76 | 115 | TEST_F(ProjectLoaderTest, StartStop) |
77 | 116 | { |
78 | 117 | ProjectLoader loader; |
|
0 commit comments