• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 #include "tone_player_impl.h"
18 
19 using namespace testing::ext;
20 namespace OHOS {
21 namespace AudioStandard {
22 constexpr uint32_t SLEEP_TIME = 30000;
23 static size_t g_reqBufLen = 0;
24 class AudioToneplayerUnitTest : public testing::Test {
25 public:
26     static void SetUpTestCase(void);
27     static void TearDownTestCase(void);
28     void SetUp();
29     void TearDown();
30 };
31 
SetUpTestCase(void)32 void AudioToneplayerUnitTest::SetUpTestCase(void)
33 {
34     // input testsuit setup step,setup invoked before all testcases
35 }
36 
TearDownTestCase(void)37 void AudioToneplayerUnitTest::TearDownTestCase(void)
38 {
39     // input testsuit teardown step,teardown invoked after all testcases
40 }
41 
SetUp(void)42 void AudioToneplayerUnitTest::SetUp(void)
43 {
44     // input testcase setup step,setup invoked before each testcases
45 }
46 
TearDown(void)47 void AudioToneplayerUnitTest::TearDown(void)
48 {
49     // input testcase teardown step,teardown invoked after each testcases
50 }
51 
52 class AudioRendererCallbackTest : public AudioRendererCallback {
53 public:
OnInterrupt(const InterruptEvent & interruptEvent)54     void OnInterrupt(const InterruptEvent &interruptEvent) override {}
OnStateChange(const RendererState state,const StateChangeCmdType cmdType)55     void OnStateChange(const RendererState state, const StateChangeCmdType cmdType) override {}
56 };
57 
58 class AudioToneplayerCallbackTest : public AudioRendererCallback {
59 public:
60     void OnWriteData(size_t length);
61 };
62 
OnWriteData(size_t length)63 void AudioToneplayerCallbackTest::OnWriteData(size_t length)
64 {
65     g_reqBufLen = length;
66 }
67 
68 /**
69  * @tc.name  : Test Create API
70  * @tc.type  : FUNC
71  * @tc.number: Create_001
72  * @tc.desc  : Test Create interface.
73  */
74 HWTEST(AudioToneplayerUnitTest, Create_001, TestSize.Level1)
75 {
76     std::shared_ptr<TonePlayer> toneplayer = nullptr;
77     AudioRendererInfo rendererInfo = {};
78     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
79     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_MEDIA;
80     rendererInfo.rendererFlags = 0;
81     toneplayer = TonePlayer::Create(rendererInfo);
82     ASSERT_NE(nullptr, toneplayer);
83 
84     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
85     toneplayer = TonePlayer::Create(rendererInfo);
86     ASSERT_NE(nullptr, toneplayer);
87 
88     toneplayer->Release();
89 }
90 
91 /**
92  * @tc.name  : Test toneplayer loading API
93  * @tc.type  : FUNC
94  * @tc.number: Toneplayer_001
95  * @tc.desc  : Test create->LoadTone->StartTone->StopTone->Release interface.
96  */
97 HWTEST(AudioToneplayerUnitTest, Toneplayer_001, TestSize.Level1)
98 {
99     AudioRendererInfo rendererInfo = {};
100     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
101     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_MEDIA;
102     rendererInfo.rendererFlags = 0;
103     std::shared_ptr<TonePlayer> toneplayer = TonePlayer::Create(rendererInfo);
104     ASSERT_NE(nullptr, toneplayer);
105 
106     bool ret = toneplayer->LoadTone(TONE_TYPE_DIAL_1);
107     EXPECT_EQ(true, ret);
108 
109     bool startRet = toneplayer->StartTone();
110     EXPECT_EQ(true, startRet);
111 
112     usleep(SLEEP_TIME); // 30ms sleep time
113     bool stopRet = toneplayer->StopTone();
114     EXPECT_EQ(true, stopRet);
115 
116     bool releaseRet = toneplayer->Release();
117     EXPECT_EQ(true, releaseRet);
118 }
119 
120 /**
121  * @tc.name  : Test toneplayer loading API
122  * @tc.type  : FUNC
123  * @tc.number: Toneplayer_002
124  * @tc.desc  : Test create->StartTone->StopTone->Release interface.
125  */
126 HWTEST(AudioToneplayerUnitTest, Toneplayer_002, TestSize.Level1)
127 {
128     AudioRendererInfo rendererInfo = {};
129     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
130     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
131     rendererInfo.rendererFlags = 0;
132     std::shared_ptr<TonePlayer> toneplayer = TonePlayer::Create(rendererInfo);
133     ASSERT_NE(nullptr, toneplayer);
134 
135     bool ret = toneplayer->LoadTone(TONE_TYPE_DIAL_2);
136     EXPECT_EQ(true, ret);
137 
138     usleep(SLEEP_TIME); // 30ms sleep time
139     bool stopRet = toneplayer->StopTone();
140     EXPECT_EQ(false, stopRet);
141 
142     bool releaseRet = toneplayer->Release();
143     EXPECT_EQ(true, releaseRet);
144 }
145 
146 /**
147  * @tc.name  : Test toneplayer loading API
148  * @tc.type  : FUNC
149  * @tc.number: Toneplayer_003
150  * @tc.desc  : Test create->StartTone->Release interface.
151  */
152 HWTEST(AudioToneplayerUnitTest, Toneplayer_003, TestSize.Level1)
153 {
154     AudioRendererInfo rendererInfo = {};
155     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
156     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_MEDIA;
157     rendererInfo.rendererFlags = 0;
158     std::shared_ptr<TonePlayer> toneplayer = TonePlayer::Create(rendererInfo);
159     ASSERT_NE(nullptr, toneplayer);
160 
161     bool startRet = toneplayer->StartTone();
162     EXPECT_EQ(false, startRet);
163 
164     bool releaseRet = toneplayer->Release();
165     EXPECT_EQ(true, releaseRet);
166 }
167 
168 /**
169  * @tc.name  : Test toneplayer loading API
170  * @tc.type  : FUNC
171  * @tc.number: Toneplayer_004
172  * @tc.desc  : Test create->LoadTone->StartTone->Release interface.
173  */
174 HWTEST(AudioToneplayerUnitTest, Toneplayer_004, TestSize.Level1)
175 {
176     AudioRendererInfo rendererInfo = {};
177     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
178     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
179     rendererInfo.rendererFlags = 0;
180     std::shared_ptr<TonePlayerImpl> toneplayer = std::make_shared<TonePlayerImpl>("", rendererInfo);
181     ASSERT_NE(nullptr, toneplayer);
182 
183     bool ret = toneplayer->LoadTone(TONE_TYPE_DIAL_6);
184     EXPECT_EQ(true, ret);
185 
186     bool startRet = toneplayer->StartTone();
187     EXPECT_EQ(true, startRet);
188 
189     usleep(SLEEP_TIME); // 30ms sleep time
190 
191     bool releaseRet = toneplayer->Release();
192     EXPECT_EQ(true, releaseRet);
193 }
194 
195 /**
196  * @tc.name  : Test toneplayer loading API
197  * @tc.type  : FUNC
198  * @tc.number: Toneplayer_005
199  * @tc.desc  : Test create->LoadTone->StartTone->Release interface.
200  */
201 HWTEST(AudioToneplayerUnitTest, Toneplayer_005, TestSize.Level1)
202 {
203     AudioRendererInfo rendererInfo = {};
204     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
205     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
206     rendererInfo.rendererFlags = 0;
207     std::shared_ptr<TonePlayerImpl> toneplayer = std::make_shared<TonePlayerImpl>("", rendererInfo);
208     ASSERT_NE(nullptr, toneplayer);
209 
210     bool ret = toneplayer->LoadTone(TONE_TYPE_DIAL_6);
211     EXPECT_EQ(true, ret);
212 
213     bool startRet = toneplayer->StartTone();
214     EXPECT_EQ(true, startRet);
215 
216     bool stopRet = toneplayer->StopTone();
217     EXPECT_EQ(true, stopRet);
218 
219     bool checkRet = toneplayer->CheckToneStopped();
220     EXPECT_EQ(true, checkRet);
221 
222     bool releaseRet = toneplayer->Release();
223     EXPECT_EQ(true, releaseRet);
224 }
225 
226 /**
227  * @tc.name  : Test toneplayer loading API
228  * @tc.type  : FUNC
229  * @tc.number: Toneplayer_006
230  * @tc.desc  : Test create->StartTone->StopTone->LoadTone->LoadTone->Release interface.
231  */
232 HWTEST(AudioToneplayerUnitTest, Toneplayer_006, TestSize.Level1)
233 {
234     AudioRendererInfo rendererInfo = {};
235     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
236     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
237     rendererInfo.rendererFlags = 0;
238     std::shared_ptr<TonePlayer> toneplayer = TonePlayer::Create(rendererInfo);
239     ASSERT_NE(nullptr, toneplayer);
240 
241     bool ret = toneplayer->StartTone();
242     EXPECT_EQ(false, ret);
243 
244     ret = toneplayer->StopTone();
245     EXPECT_EQ(false, ret);
246 
247     ret = toneplayer->LoadTone(NUM_TONES);
248     ret = toneplayer->LoadTone(NUM_TONES);
249     EXPECT_EQ(false, ret);
250 
251     bool releaseRet = toneplayer->Release();
252     EXPECT_EQ(true, releaseRet);
253 }
254 
255 /**
256  * @tc.name  : Test toneplayer loading API
257  * @tc.type  : FUNC
258  * @tc.number: Toneplayer_StartTone_001
259  * @tc.desc  : Test StartTone interface.
260  */
261 HWTEST(AudioToneplayerUnitTest, Toneplayer_StartTone_001, TestSize.Level1)
262 {
263     AudioRendererInfo rendererInfo = {};
264     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
265     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
266     rendererInfo.rendererFlags = 0;
267     std::shared_ptr<TonePlayerImpl> toneplayer = std::make_shared<TonePlayerImpl>("", rendererInfo);
268     ASSERT_NE(nullptr, toneplayer);
269 
270     toneplayer->isRendererInited_ = true;
271     bool ret = toneplayer->StartTone();
272     ret = toneplayer->StopTone();
273 
274     bool releaseRet = toneplayer->Release();
275     EXPECT_EQ(true, releaseRet);
276 }
277 
278 /**
279  * @tc.name  : Test toneplayer loading API
280  * @tc.type  : FUNC
281  * @tc.number: Toneplayer_StartTone_002
282  * @tc.desc  : Test StartTone interface.
283  */
284 HWTEST(AudioToneplayerUnitTest, Toneplayer_StartTone_002, TestSize.Level1)
285 {
286     AudioRendererInfo rendererInfo = {};
287     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
288     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
289     rendererInfo.rendererFlags = 0;
290     std::shared_ptr<TonePlayerImpl> toneplayer = std::make_shared<TonePlayerImpl>("", rendererInfo);
291     ASSERT_NE(nullptr, toneplayer);
292 
293     toneplayer->isRendererInited_ = true;
294     toneplayer->audioRenderer_ = nullptr;
295     toneplayer->StartTone();
296     toneplayer->StopTone();
297 
298     bool releaseRet = toneplayer->Release();
299     EXPECT_EQ(true, releaseRet);
300 }
301 
302 /**
303  * @tc.name  : Test toneplayer loading API
304  * @tc.type  : FUNC
305  * @tc.number: Toneplayer_StartTone_003
306  * @tc.desc  : Test StartTone interface.
307  */
308 HWTEST(AudioToneplayerUnitTest, Toneplayer_StartTone_003, TestSize.Level1)
309 {
310     AudioRendererInfo rendererInfo = {};
311     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
312     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
313     rendererInfo.rendererFlags = 0;
314     std::shared_ptr<TonePlayerImpl> toneplayer = std::make_shared<TonePlayerImpl>("", rendererInfo);
315     ASSERT_NE(nullptr, toneplayer);
316 
317     toneplayer->isRendererInited_ = false;
318     toneplayer->StartTone();
319     toneplayer->StopTone();
320 
321     bool releaseRet = toneplayer->Release();
322     EXPECT_EQ(true, releaseRet);
323 }
324 
325 /**
326  * @tc.name  : Test toneplayer loading API
327  * @tc.type  : FUNC
328  * @tc.number: Toneplayer_StartTone_004
329  * @tc.desc  : Test StartTone interface.
330  */
331 HWTEST(AudioToneplayerUnitTest, Toneplayer_StartTone_004, TestSize.Level1)
332 {
333     AudioRendererInfo rendererInfo = {};
334     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
335     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
336     rendererInfo.rendererFlags = 0;
337     std::shared_ptr<TonePlayerImpl> toneplayer = std::make_shared<TonePlayerImpl>("", rendererInfo);
338     ASSERT_NE(nullptr, toneplayer);
339 
340     toneplayer->isRendererInited_ = false;
341     toneplayer->audioRenderer_ = nullptr;
342     toneplayer->StartTone();
343     toneplayer->StopTone();
344 
345     bool releaseRet = toneplayer->Release();
346     EXPECT_EQ(true, releaseRet);
347 }
348 
349 /**
350  * @tc.name  : Test Create API
351  * @tc.type  : FUNC
352  * @tc.number: Create_002
353  * @tc.desc  : Test Create interface.
354  */
355 HWTEST(AudioToneplayerUnitTest, Create_002, TestSize.Level1)
356 {
357     std::string cachePath = "/data/local/tmp";
358     std::shared_ptr<TonePlayer> toneplayer = nullptr;
359     AudioRendererInfo rendererInfo = {};
360     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
361     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_MEDIA;
362     rendererInfo.rendererFlags = 0;
363     toneplayer = TonePlayer::Create(cachePath, rendererInfo);
364     ASSERT_NE(nullptr, toneplayer);
365 
366     toneplayer->Release();
367 }
368 
369 /**
370  * @tc.name  : Test GetCurrentSegmentUpdated API
371  * @tc.type  : FUNC
372  * @tc.number: GetCurrentSegmentUpdated_001
373  * @tc.desc  : Test GetCurrentSegmentUpdated interface.
374  */
375 HWTEST(AudioToneplayerUnitTest, GetCurrentSegmentUpdated_001, TestSize.Level1)
376 {
377     AudioRendererInfo rendererInfo = {};
378     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
379     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
380     rendererInfo.rendererFlags = 0;
381     std::shared_ptr<TonePlayerImpl> toneplayer = std::make_shared<TonePlayerImpl>("", rendererInfo);
382     ASSERT_NE(nullptr, toneplayer);
383 
384     toneplayer->LoadTone(TONE_TYPE_DIAL_6);
385     EXPECT_NE(nullptr, toneplayer->toneInfo_);
386 
387     toneplayer->currSegment_ = 0;
388     toneplayer->toneInfo_->segments[0].loopCnt = 0;
389     toneplayer->GetCurrentSegmentUpdated();
390     EXPECT_EQ(1, toneplayer->currSegment_);
391 
392     toneplayer->loopCounter_ = 0;
393     toneplayer->currSegment_ = 0;
394     toneplayer->toneInfo_->segments[0].loopCnt = 1;
395     toneplayer->GetCurrentSegmentUpdated();
396     EXPECT_EQ(1, toneplayer->loopCounter_);
397 
398     toneplayer->loopCounter_ = 2;
399     toneplayer->currSegment_ = 0;
400     toneplayer->toneInfo_->segments[0].loopCnt = 1;
401     toneplayer->GetCurrentSegmentUpdated();
402     EXPECT_EQ(0, toneplayer->loopCounter_);
403 }
404 
405 /**
406  * @tc.name  : Test CheckToneContinuity API
407  * @tc.type  : FUNC
408  * @tc.number: CheckToneContinuity_001
409  * @tc.desc  : Test CheckToneContinuity interface.
410  */
411 HWTEST(AudioToneplayerUnitTest, CheckToneContinuity_001, TestSize.Level1)
412 {
413     bool ret = false;
414     AudioRendererInfo rendererInfo = {};
415     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
416     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
417     rendererInfo.rendererFlags = 0;
418     std::shared_ptr<TonePlayerImpl> toneplayer = std::make_shared<TonePlayerImpl>("", rendererInfo);
419     ASSERT_NE(nullptr, toneplayer);
420 
421     toneplayer->LoadTone(TONE_TYPE_DIAL_6);
422     EXPECT_NE(nullptr, toneplayer->toneInfo_);
423 
424     toneplayer->currSegment_ = 0;
425     toneplayer->toneInfo_->segments[0].duration = 1;
426     ret = toneplayer->CheckToneContinuity();
427     EXPECT_EQ(true, ret);
428 
429     toneplayer->currSegment_ = 0;
430     toneplayer->toneInfo_->segments[0].duration = 0;
431     toneplayer->currCount_ = 0;
432     toneplayer->toneInfo_->repeatCnt = 1;
433     ret = toneplayer->CheckToneContinuity();
434     EXPECT_EQ(true, ret);
435 
436     toneplayer->currSegment_ = 0;
437     toneplayer->toneInfo_->segments[0].duration = 0;
438     toneplayer->currCount_ = 1;
439     toneplayer->toneInfo_->repeatCnt = 0;
440     ret = toneplayer->CheckToneContinuity();
441     EXPECT_EQ(false, ret);
442 }
443 
444 /**
445  * @tc.name  : Test OnInterrupt API
446  * @tc.type  : FUNC
447  * @tc.number: OnInterrupt_001
448  * @tc.desc  : Test OnInterrupt interface.
449  */
450 HWTEST(AudioToneplayerUnitTest, OnInterrupt_001, TestSize.Level1)
451 {
452     AudioRendererInfo rendererInfo = {};
453     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
454     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
455     rendererInfo.rendererFlags = 0;
456     std::shared_ptr<TonePlayerImpl> toneplayer = std::make_shared<TonePlayerImpl>("", rendererInfo);
457     ASSERT_NE(nullptr, toneplayer);
458 
459     InterruptEvent interruptEvent;
460     interruptEvent.eventType = InterruptType::INTERRUPT_TYPE_END;
461     toneplayer->OnInterrupt(interruptEvent);
462     EXPECT_EQ(ToneType::NUM_TONES, toneplayer->toneType_);
463 }
464 
465 /**
466  * @tc.name  : Test ContinueToneplay API
467  * @tc.type  : FUNC
468  * @tc.number: ContinueToneplay_001
469  * @tc.desc  : Test ContinueToneplay interface.
470  */
471 HWTEST(AudioToneplayerUnitTest, ContinueToneplay_001, TestSize.Level1)
472 {
473     bool ret = false;
474     AudioRendererInfo rendererInfo = {};
475     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
476     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
477     rendererInfo.rendererFlags = 0;
478     std::shared_ptr<TonePlayerImpl> toneplayer = std::make_shared<TonePlayerImpl>("", rendererInfo);
479     ASSERT_NE(nullptr, toneplayer);
480     uint32_t reqSample = 4;
481     int8_t buff[8] = {0};
482     int8_t *audioBuffer = buff;
483 
484     toneplayer->toneState_ = TonePlayerImpl::ToneState::TONE_STOPPED;
485     ret = toneplayer->ContinueToneplay(reqSample, audioBuffer);
486     EXPECT_EQ(ret, false);
487 
488     toneplayer->LoadTone(TONE_TYPE_DIAL_6);
489     EXPECT_NE(nullptr, toneplayer->toneInfo_);
490     toneplayer->toneState_ = TonePlayerImpl::ToneState::TONE_RUNNING;
491     toneplayer->totalSample_ = 2;
492     toneplayer->nextSegSample_ = 1;
493     toneplayer->currSegment_ = 0;
494     toneplayer->toneInfo_->segments[0].duration = 1;
495     ret = toneplayer->CheckToneContinuity();
496     EXPECT_EQ(true, ret);
497     ret = toneplayer->ContinueToneplay(reqSample, audioBuffer);
498     EXPECT_EQ(ret, true);
499 
500     toneplayer->toneState_ = TonePlayerImpl::ToneState::TONE_RUNNING;
501     toneplayer->currSegment_ = 0;
502     toneplayer->toneInfo_->segments[0].duration = 0;
503     ret = toneplayer->ContinueToneplay(reqSample, audioBuffer);
504     EXPECT_EQ(ret, true);
505 }
506 
507 /**
508  * @tc.name  : Test ContinueToneplay API
509  * @tc.type  : FUNC
510  * @tc.number: ContinueToneplay_002
511  * @tc.desc  : Test ContinueToneplay interface.
512  */
513 HWTEST(AudioToneplayerUnitTest, ContinueToneplay_002, TestSize.Level1)
514 {
515     bool ret = false;
516     AudioRendererInfo rendererInfo = {};
517     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
518     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
519     rendererInfo.rendererFlags = 0;
520     std::shared_ptr<TonePlayerImpl> toneplayer = std::make_shared<TonePlayerImpl>("", rendererInfo);
521     ASSERT_NE(nullptr, toneplayer);
522     uint32_t reqSample = 4;
523     int8_t buff[8] = {0};
524     int8_t *audioBuffer = buff;
525 
526     toneplayer->LoadTone(TONE_TYPE_DIAL_6);
527     EXPECT_NE(nullptr, toneplayer->toneInfo_);
528     toneplayer->toneState_ = TonePlayerImpl::ToneState::TONE_RUNNING;
529     toneplayer->totalSample_ = 0;
530     toneplayer->nextSegSample_ = 1;
531     toneplayer->currSegment_ = 0;
532     toneplayer->toneInfo_->segments[0].duration = 0;
533     ret = toneplayer->ContinueToneplay(reqSample, audioBuffer);
534     EXPECT_EQ(ret, true);
535 }
536 
537 /**
538  * @tc.name  : Test ContinueToneplay API
539  * @tc.type  : FUNC
540  * @tc.number: ContinueToneplay_003
541  * @tc.desc  : Test ContinueToneplay interface.
542  */
543 HWTEST(AudioToneplayerUnitTest, ContinueToneplay_003, TestSize.Level1)
544 {
545     bool ret = false;
546     AudioRendererInfo rendererInfo = {};
547     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
548     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
549     rendererInfo.rendererFlags = 0;
550     std::shared_ptr<TonePlayerImpl> toneplayer = std::make_shared<TonePlayerImpl>("", rendererInfo);
551     ASSERT_NE(nullptr, toneplayer);
552     uint32_t reqSample = 4;
553     int8_t buff[8] = {0};
554     int8_t *audioBuffer = buff;
555 
556     toneplayer->LoadTone(TONE_TYPE_DIAL_6);
557     EXPECT_NE(nullptr, toneplayer->toneInfo_);
558     toneplayer->toneState_ = TonePlayerImpl::ToneState::TONE_RUNNING;
559     toneplayer->totalSample_ = 0;
560     toneplayer->nextSegSample_ = 1;
561     toneplayer->currSegment_ = 0;
562     toneplayer->toneInfo_->segments[0].duration = 1;
563     ret = toneplayer->ContinueToneplay(reqSample, audioBuffer);
564     EXPECT_EQ(ret, true);
565 }
566 
567 /**
568  * @tc.name  : Test CheckToneStopped API
569  * @tc.type  : FUNC
570  * @tc.number: CheckToneStopped_001
571  * @tc.desc  : Test CheckToneStopped interface.
572  */
573 HWTEST(AudioToneplayerUnitTest, CheckToneStopped_001, TestSize.Level1)
574 {
575     AudioRendererInfo rendererInfo = {};
576     rendererInfo.contentType = ContentType::CONTENT_TYPE_MUSIC;
577     rendererInfo.streamUsage = StreamUsage::STREAM_USAGE_DTMF;
578     rendererInfo.rendererFlags = 0;
579     std::shared_ptr<TonePlayerImpl> toneplayer = std::make_shared<TonePlayerImpl>("", rendererInfo);
580     ASSERT_NE(nullptr, toneplayer);
581 
582     toneplayer->toneState_ = TonePlayerImpl::ToneState::TONE_STOPPED;
583     bool ret = toneplayer->CheckToneStopped();
584     EXPECT_EQ(true, ret);
585 
586     toneplayer->LoadTone(TONE_TYPE_DIAL_6);
587     EXPECT_NE(nullptr, toneplayer->toneInfo_);
588     toneplayer->currSegment_ = 0;
589     toneplayer->toneInfo_->segments[0].duration = 0;
590     toneplayer->toneState_ = TonePlayerImpl::ToneState::TONE_RUNNING;
591     ret = toneplayer->CheckToneStopped();
592     EXPECT_EQ(true, ret);
593 
594     toneplayer->currSegment_ = 0;
595     toneplayer->toneInfo_->segments[0].duration = 1;
596     toneplayer->totalSample_ = 3;
597     toneplayer->maxSample_ = 2;
598     toneplayer->toneState_ = TonePlayerImpl::ToneState::TONE_RUNNING;
599     ret = toneplayer->CheckToneStopped();
600     EXPECT_EQ(true, ret);
601 
602     toneplayer->currSegment_ = 0;
603     toneplayer->toneInfo_->segments[0].duration = 1;
604     toneplayer->totalSample_ = 1;
605     toneplayer->maxSample_ = 2;
606     toneplayer->toneState_ = TonePlayerImpl::ToneState::TONE_STOPPING;
607     ret = toneplayer->CheckToneStopped();
608     EXPECT_EQ(true, ret);
609 
610     toneplayer->currSegment_ = 0;
611     toneplayer->toneInfo_->segments[0].duration = 1;
612     toneplayer->totalSample_ = 1;
613     toneplayer->maxSample_ = 2;
614     toneplayer->toneState_ = TonePlayerImpl::ToneState::TONE_IDLE;
615     ret = toneplayer->CheckToneStopped();
616     EXPECT_EQ(false, ret);
617 }
618 } // namespace AudioStandard
619 } // namespace OHOS
620