@@ -124,8 +124,10 @@ TEST(SpriteTest, Clone)
124124 EngineMock engine;
125125 sprite->setEngine (&engine);
126126 EXPECT_CALL (engine, requestRedraw ()).Times (2 );
127+ EXPECT_CALL (engine, cloneLimit ()).Times (6 ).WillRepeatedly (Return (300 )); // clone count limit is tested later
127128
128129 Sprite *clone1;
130+ EXPECT_CALL (engine, cloneCount ()).WillOnce (Return (0 ));
129131 EXPECT_CALL (engine, initClone (_)).WillOnce (SaveArg<0 >(&clone1));
130132 ASSERT_EQ (sprite->clone ().get (), clone1);
131133 ASSERT_FALSE (sprite->isClone ());
@@ -142,6 +144,7 @@ TEST(SpriteTest, Clone)
142144 sprite->setLayerOrder (3 );
143145
144146 Sprite *clone2;
147+ EXPECT_CALL (engine, cloneCount ()).WillOnce (Return (1 ));
145148 EXPECT_CALL (engine, initClone (_)).WillOnce (SaveArg<0 >(&clone2));
146149 ASSERT_EQ (clone1->clone ().get (), clone2);
147150 ASSERT_TRUE (clone1->isClone ());
@@ -156,13 +159,23 @@ TEST(SpriteTest, Clone)
156159 sprite->setVisible (true );
157160
158161 Sprite *clone3;
162+ EXPECT_CALL (engine, cloneCount ()).WillOnce (Return (2 ));
159163 EXPECT_CALL (engine, initClone (_)).WillOnce (SaveArg<0 >(&clone3));
160164 ASSERT_EQ (clone1->clone ().get (), clone3);
161165
162166 Sprite *clone4;
167+ EXPECT_CALL (engine, cloneLimit ()).WillOnce (Return (-1 ));
163168 EXPECT_CALL (engine, initClone (_)).WillOnce (SaveArg<0 >(&clone4));
164169 ASSERT_EQ (sprite->clone ().get (), clone4);
165170
171+ EXPECT_CALL (engine, cloneLimit ()).Times (2 ).WillRepeatedly (Return (0 ));
172+ EXPECT_CALL (engine, cloneCount ()).WillOnce (Return (0 ));
173+ ASSERT_EQ (sprite->clone (), nullptr );
174+
175+ EXPECT_CALL (engine, cloneLimit ()).Times (2 ).WillRepeatedly (Return (150 ));
176+ EXPECT_CALL (engine, cloneCount ()).WillOnce (Return (150 ));
177+ ASSERT_EQ (sprite->clone (), nullptr );
178+
166179 // children
167180 const auto &children1 = sprite->children ();
168181 ASSERT_EQ (children1.size (), 2 );
0 commit comments