11#include < scratchcpp/sound.h>
2+ #include < scratch/sound_p.h>
3+ #include < audioplayerfactorymock.h>
4+ #include < audioplayermock.h>
25
36#include " ../common.h"
47
58using namespace libscratchcpp ;
69
7- TEST (SoundTest, Constructors)
10+ using ::testing::Return;
11+
12+ class SoundTest : public testing ::Test
13+ {
14+ public:
15+ void SetUp () override
16+ {
17+ m_player = std::make_shared<AudioPlayerMock>();
18+ SoundPrivate::playerFactory = &m_playerFactory;
19+ EXPECT_CALL (m_playerFactory, create ()).WillOnce (Return (m_player));
20+ }
21+
22+ void TearDown () override { SoundPrivate::playerFactory = nullptr ; }
23+
24+ AudioPlayerFactoryMock m_playerFactory;
25+ std::shared_ptr<AudioPlayerMock> m_player;
26+ };
27+
28+ TEST_F (SoundTest, Constructors)
829{
930 Sound sound (" sound1" , " a" , " wav" );
1031 ASSERT_EQ (sound.id (), " a" );
@@ -15,18 +36,59 @@ TEST(SoundTest, Constructors)
1536 ASSERT_EQ (sound.sampleCount (), 0 );
1637}
1738
18- TEST (SoundTest, Rate)
39+ TEST_F (SoundTest, Rate)
1940{
2041 Sound sound (" sound1" , " a" , " wav" );
2142
2243 sound.setRate (2 );
2344 ASSERT_EQ (sound.rate (), 2 );
2445}
2546
26- TEST (SoundTest, SampleCount)
47+ TEST_F (SoundTest, SampleCount)
2748{
2849 Sound sound (" sound1" , " a" , " wav" );
2950
3051 sound.setSampleCount (10 );
3152 ASSERT_EQ (sound.sampleCount (), 10 );
3253}
54+
55+ TEST_F (SoundTest, ProcessData)
56+ {
57+ Sound sound (" sound1" , " a" , " wav" );
58+ sound.setRate (44100 );
59+
60+ const char *data = " abc" ;
61+ void *dataPtr = const_cast <void *>(static_cast <const void *>(data));
62+
63+ EXPECT_CALL (*m_player, load (3 , dataPtr, 44100 ));
64+ sound.setData (3 , dataPtr);
65+ }
66+
67+ TEST_F (SoundTest, Start)
68+ {
69+ Sound sound (" sound1" , " a" , " wav" );
70+
71+ EXPECT_CALL (*m_player, start ());
72+ sound.start ();
73+ }
74+
75+ TEST_F (SoundTest, Stop)
76+ {
77+ Sound sound (" sound1" , " a" , " wav" );
78+
79+ EXPECT_CALL (*m_player, stop ());
80+ sound.stop ();
81+ }
82+
83+ TEST_F (SoundTest, IsPlaying)
84+ {
85+ Sound sound (" sound1" , " a" , " wav" );
86+
87+ EXPECT_CALL (*m_player, isPlaying ()).WillOnce (Return (true ));
88+ ASSERT_TRUE (sound.isPlaying ());
89+
90+ EXPECT_CALL (*m_player, isPlaying ()).WillOnce (Return (false ));
91+ ASSERT_FALSE (sound.isPlaying ());
92+
93+ SoundPrivate::playerFactory = nullptr ;
94+ }
0 commit comments