@@ -60,7 +60,12 @@ TEST_F(SoundTest, ProcessData)
60
60
const char *data = " abc" ;
61
61
void *dataPtr = const_cast <void *>(static_cast <const void *>(data));
62
62
63
- EXPECT_CALL (*m_player, load (3 , dataPtr, 44100 ));
63
+ EXPECT_CALL (*m_player, isLoaded ()).WillOnce (Return (false ));
64
+ EXPECT_CALL (*m_player, load (3 , dataPtr, 44100 )).WillOnce (Return (true ));
65
+ sound.setData (3 , dataPtr);
66
+
67
+ EXPECT_CALL (*m_player, isLoaded ()).WillOnce (Return (true ));
68
+ EXPECT_CALL (*m_player, load).Times (0 );
64
69
sound.setData (3 , dataPtr);
65
70
}
66
71
@@ -100,3 +105,31 @@ TEST_F(SoundTest, IsPlaying)
100
105
101
106
SoundPrivate::audioOutput = nullptr ;
102
107
}
108
+
109
+ TEST_F (SoundTest, Clone)
110
+ {
111
+ Sound sound (" sound1" , " a" , " wav" );
112
+ sound.setRate (44100 );
113
+ sound.setSampleCount (10000 );
114
+
115
+ const char *data = " abc" ;
116
+ void *dataPtr = const_cast <void *>(static_cast <const void *>(data));
117
+
118
+ EXPECT_CALL (*m_player, isLoaded ()).WillOnce (Return (false ));
119
+ EXPECT_CALL (*m_player, load (3 , dataPtr, 44100 )).WillOnce (Return (true ));
120
+ sound.setData (3 , dataPtr);
121
+
122
+ auto clonePlayer = std::make_shared<AudioPlayerMock>();
123
+ EXPECT_CALL (m_playerFactory, createAudioPlayer ()).WillOnce (Return (clonePlayer));
124
+ EXPECT_CALL (*clonePlayer, loadCopy (m_player.get ())).WillOnce (Return (true ));
125
+ EXPECT_CALL (*m_player, volume ()).WillOnce (Return (0.45 ));
126
+ EXPECT_CALL (*clonePlayer, setVolume (0.45 ));
127
+ EXPECT_CALL (*clonePlayer, isLoaded ()).WillOnce (Return (true ));
128
+ auto clone = sound.clone ();
129
+ ASSERT_TRUE (clone);
130
+ ASSERT_EQ (clone->name (), sound.name ());
131
+ ASSERT_EQ (clone->id (), sound.id ());
132
+ ASSERT_EQ (clone->dataFormat (), sound.dataFormat ());
133
+ ASSERT_EQ (clone->rate (), sound.rate ());
134
+ ASSERT_EQ (clone->sampleCount (), sound.sampleCount ());
135
+ }
0 commit comments