1 /*
2  * Copyright (C) 2024 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 #include <queue>
16 #include "gtest/gtest.h"
17 #include "filter/filter.h"
18 #include "media_sync_manager.h"
19 
20 #include "video_sink.h"
21 #include "media_synchronous_sink.h"
22 
23 using namespace testing::ext;
24 
25 namespace OHOS {
26 namespace Media {
27 namespace Test {
28 using namespace Pipeline;
29 class TestSyncManager : public testing::Test {
30 public:
31     // SetUpTestCase: Called before all test cases
SetUpTestCase(void)32     static void SetUpTestCase(void) { }
33     // TearDownTestCase: Called after all test case
TearDownTestCase(void)34     static void TearDownTestCase(void) { }
35     // SetUp: Called before each test cases
SetUp(void)36     void SetUp(void)
37     {
38         syncManager_ = std::make_shared<MediaSyncManager>();
39         ASSERT_TRUE(syncManager_ != nullptr);
40     }
41     // TearDown: Called after each test cases
TearDown(void)42     void TearDown(void)
43     {
44         syncManager_ = nullptr;
45     }
46 public:
47     std::shared_ptr<MediaSyncManager> syncManager_ = nullptr;
48 };
49 
50 HWTEST_F(TestSyncManager, sync_manager_set, TestSize.Level1)
51 {
52     float rate = 0;
53     auto setPlaybackRateStatus = syncManager_->SetPlaybackRate(rate);
54     ASSERT_EQ(setPlaybackRateStatus, Status::OK);
55 }
56 
57 HWTEST_F(TestSyncManager, sync_manager_get, TestSize.Level1)
58 {
59     auto rateBack = syncManager_->GetPlaybackRate();
60     ASSERT_EQ(rateBack, 1);
61 }
62 
63 HWTEST_F(TestSyncManager, sync_manager_life_cycle, TestSize.Level1)
64 {
65     // Resume
66     auto resumeStatus = syncManager_->Resume();
67     ASSERT_EQ(resumeStatus, Status::OK);
68 
69     // Pause
70     auto pauseStatus = syncManager_->Pause();
71     ASSERT_EQ(pauseStatus, Status::OK);
72 
73     // Seek
74     int64_t seekTime = 0;
75     auto seekStatus = syncManager_->Seek(seekTime);
76     ASSERT_NE(seekStatus, Status::OK);
77 
78     // Reset
79     auto resetStatus = syncManager_->Reset();
80     ASSERT_EQ(resetStatus, Status::OK);
81 
82     // IsSeeking
83     auto isSeeking = syncManager_->InSeeking();
84     ASSERT_EQ(isSeeking, false);
85 }
86 
87 HWTEST_F(TestSyncManager, sync_manager_update_time_without_synchronizer, TestSize.Level1)
88 {
89     // AddSynchronizer
90     VideoSink sync;
91     syncManager_->AddSynchronizer(&sync);
92     // RemoveSynchronizer
93     syncManager_->RemoveSynchronizer(&sync);
94     // UpdateTimeAnchor
95     auto updateTimeStatus = syncManager_->UpdateTimeAnchor(-1, -1, -1, -1, -1, nullptr);
96     ASSERT_EQ(updateTimeStatus, true);
97     updateTimeStatus = syncManager_->UpdateTimeAnchor(1, -1, -1, -1, -1, nullptr);
98     ASSERT_EQ(updateTimeStatus, true);
99     updateTimeStatus = syncManager_->UpdateTimeAnchor(1, 1, -1, -1, -1, nullptr);
100     ASSERT_EQ(updateTimeStatus, true);
101     updateTimeStatus = syncManager_->UpdateTimeAnchor(1, 1, 1, -1, -1, nullptr);
102     ASSERT_EQ(updateTimeStatus, true);
103     updateTimeStatus = syncManager_->UpdateTimeAnchor(1, 1, 1, 1, -1, nullptr);
104     ASSERT_EQ(updateTimeStatus, true);
105     updateTimeStatus = syncManager_->UpdateTimeAnchor(1, 1, 1, 1, 1, nullptr);
106     ASSERT_EQ(updateTimeStatus, true);
107     updateTimeStatus = syncManager_->UpdateTimeAnchor(1, 1, 1, 1, 1, &sync);
108     ASSERT_EQ(updateTimeStatus, true);
109 }
110 
111 HWTEST_F(TestSyncManager, sync_manager_life_func, TestSize.Level1)
112 {
113     // AddSynchronizer
114     VideoSink sync;
115     syncManager_->AddSynchronizer(&sync);
116     // UpdateTimeAnchor
117     auto updateTimeStatus = syncManager_->UpdateTimeAnchor(-1, -1, -1, -1, -1, nullptr);
118     ASSERT_EQ(updateTimeStatus, true);
119     updateTimeStatus = syncManager_->UpdateTimeAnchor(1, -1, -1, -1, -1, nullptr);
120     ASSERT_EQ(updateTimeStatus, true);
121     updateTimeStatus = syncManager_->UpdateTimeAnchor(1, 1, -1, -1, -1, nullptr);
122     ASSERT_EQ(updateTimeStatus, true);
123     updateTimeStatus = syncManager_->UpdateTimeAnchor(1, 1, 1, -1, -1, nullptr);
124     ASSERT_EQ(updateTimeStatus, true);
125     updateTimeStatus = syncManager_->UpdateTimeAnchor(1, 1, 1, 1, -1, nullptr);
126     ASSERT_EQ(updateTimeStatus, true);
127     updateTimeStatus = syncManager_->UpdateTimeAnchor(1, 1, 1, 1, 1, nullptr);
128     ASSERT_EQ(updateTimeStatus, true);
129     updateTimeStatus = syncManager_->UpdateTimeAnchor(1, 1, 1, 1, 1, &sync);
130     ASSERT_EQ(updateTimeStatus, true);
131 
132     // GetMediaTimeNow
133     auto mediaTimeNow = syncManager_->GetMediaTimeNow();
134     ASSERT_EQ(mediaTimeNow, 0);
135 
136     // GetClockTimeNow
137     auto clockTimeNow = syncManager_->GetMediaTimeNow();
138     ASSERT_EQ(clockTimeNow, 0);
139 
140     // GetClockTime
141     auto clockTime = syncManager_->GetClockTime(0);
142     ASSERT_NE(clockTime, 0);
143 
144     // Report
145     syncManager_->ReportPrerolled(&sync);
146     syncManager_->ReportEos(&sync);
147     syncManager_->SetMediaTimeRangeEnd(0, 0, &sync);
148     syncManager_->SetMediaTimeRangeStart(0, 0, &sync);
149 
150     // GetSeekTime
151     int64_t seekTime = syncManager_->GetSeekTime();
152     ASSERT_NE(seekTime, 0);
153 }
154 
155 // Scenario1: Test when syncer is nullptr then AddSynchronizer does nothing.
156 HWTEST_F(TestSyncManager, AddSynchronizer_ShouldDoNothing_WhenSyncerIsNull, TestSize.Level0)
157 {
158     IMediaSynchronizer* syncer = nullptr;
159     syncManager_->AddSynchronizer(syncer);
160     // No exception should be thrown and no action should be performed.
161 }
162 
163 // Scenario2: Test when syncer is not nullptr and not already in syncers_ then AddSynchronizer adds the syncer.
164 HWTEST_F(TestSyncManager, AddSynchronizer_ShouldAddSyncer_WhenSyncerIsNotNullAndNotInSyncers, TestSize.Level0)
165 {
166     IMediaSynchronizer* syncer = new VideoSink();
167     syncManager_->AddSynchronizer(syncer);
168     EXPECT_EQ(syncManager_->syncers_.size(), 1);
169     EXPECT_EQ(syncManager_->syncers_[0], syncer);
170     delete syncer;
171 }
172 
173 // Scenario3: Test when syncer is not nullptr and already in syncers_ then AddSynchronizer does nothing.
174 HWTEST_F(TestSyncManager, AddSynchronizer_ShouldDoNothing_WhenSyncerIsNotNullAndInSyncers, TestSize.Level0)
175 {
176     IMediaSynchronizer* syncer = new VideoSink();
177     syncManager_->AddSynchronizer(syncer);
178     syncManager_->AddSynchronizer(syncer);
179     EXPECT_EQ(syncManager_->syncers_.size(), 1);
180     delete syncer;
181 }
182 
183 // Scenario1: Test when syncer is nullptr then RemoveSynchronizer does nothing.
184 HWTEST_F(TestSyncManager, RemoveSynchronizer_ShouldDoNothing_WhenSyncerIsNull, TestSize.Level0)
185 {
186     IMediaSynchronizer* syncer = nullptr;
187     syncManager_->RemoveSynchronizer(syncer);
188     // No exception should be thrown and nothing should change in syncManager
189 }
190 
191 // Scenario2: Test when syncer is not nullptr then RemoveSynchronizer removes the syncer from syncManager.
192 HWTEST_F(TestSyncManager, RemoveSynchronizer_ShouldRemoveSyncer_WhenSyncerIsNotNull, TestSize.Level0)
193 {
194     IMediaSynchronizer* syncer = new VideoSink();
195     IMediaSynchronizer* syncerOne = new VideoSink();
196     syncManager_->AddSynchronizer(syncer);
197     syncManager_->RemoveSynchronizer(syncerOne);
198     EXPECT_EQ(syncManager_->syncers_.size(), 1);
199     syncManager_->RemoveSynchronizer(syncer);
200     EXPECT_EQ(syncManager_->syncers_.size(), 0);
201     delete syncer;
202     delete syncerOne;
203 }
204 
205 // Scenario1: Test case for rate less than 0
206 HWTEST_F(TestSyncManager, SetPlaybackRate_ShouldReturnError_WhenRateLessThan0, TestSize.Level0) {
207     float rate = -1.0;
208     EXPECT_EQ(syncManager_->SetPlaybackRate(rate), Status::ERROR_INVALID_PARAMETER);
209 }
210 
211 // Scenario2: Test case for rate equal to 0
212 HWTEST_F(TestSyncManager, SetPlaybackRate_ShouldReturnOk_WhenRateEqualTo0, TestSize.Level0) {
213     float rate = 0.0;
214     EXPECT_EQ(syncManager_->SetPlaybackRate(rate), Status::OK);
215 }
216 
217 // Scenario3: Test case for rate greater than 0 and currentAbsMediaTime_ is HST_TIME_NONE
218 HWTEST_F(TestSyncManager,
219     SetPlaybackRate_ShouldReturnOk_WhenRateGreaterThan0AndCurrentAbsMediaTimeIsNone, TestSize.Level0) {
220     float rate = 1.0;
221     syncManager_->currentAbsMediaTime_ = HST_TIME_NONE;
222     EXPECT_EQ(syncManager_->SetPlaybackRate(rate), Status::OK);
223 }
224 
225 // Scenario4: Test case for rate greater than 0 and currentAbsMediaTime_ is not HST_TIME_NONE
226 HWTEST_F(TestSyncManager,
227     SetPlaybackRate_ShouldReturnOk_WhenRateGreaterThan0AndCurrentAbsMediaTimeIsNotNone, TestSize.Level0) {
228     float rate = 1.0;
229     syncManager_->currentAbsMediaTime_ = 100;
230     EXPECT_EQ(syncManager_->SetPlaybackRate(rate), Status::OK);
231 }
232 
233 // Scenario1: Test when inTime is less than minRangeStartOfMediaTime_
234 HWTEST_F(TestSyncManager, ClipMediaTime_ShouldClipToMin_WhenInTimeLessThanMin, TestSize.Level0)
235 {
236     syncManager_->minRangeStartOfMediaTime_ = 100;
237     syncManager_->maxRangeEndOfMediaTime_ = 200;
238     int64_t inTime = 50;
239     int64_t expected = 100;
240     int64_t result = syncManager_->ClipMediaTime(inTime);
241     ASSERT_EQ(expected, result);
242 }
243 
244 // Scenario2: Test when inTime is more than maxRangeEndOfMediaTime_
245 HWTEST_F(TestSyncManager, ClipMediaTime_ShouldClipToMax_WhenInTimeMoreThanMax, TestSize.Level0)
246 {
247     syncManager_->minRangeStartOfMediaTime_ = 100;
248     syncManager_->maxRangeEndOfMediaTime_ = 200;
249     int64_t inTime = 250;
250     int64_t expected = 200;
251     int64_t result = syncManager_->ClipMediaTime(inTime);
252     ASSERT_EQ(expected, result);
253 }
254 
255 // Scenario3: Test when inTime is between minRangeStartOfMediaTime_ and maxRangeEndOfMediaTime_
256 HWTEST_F(TestSyncManager, ClipMediaTime_ShouldNotClip_WhenInTimeBetweenMinAndMax, TestSize.Level0)
257 {
258     syncManager_->minRangeStartOfMediaTime_ = 100;
259     syncManager_->maxRangeEndOfMediaTime_ = 200;
260     int64_t inTime = 150;
261     int64_t expected = 150;
262     int64_t result = syncManager_->ClipMediaTime(inTime);
263     ASSERT_EQ(expected, result);
264 }
265 
266 // Scenario4: Test when inTime is equal to minRangeStartOfMediaTime_
267 HWTEST_F(TestSyncManager, ClipMediaTime_ShouldNotClip_WhenInTimeEqualToMin, TestSize.Level0)
268 {
269     syncManager_->minRangeStartOfMediaTime_ = 100;
270     syncManager_->maxRangeEndOfMediaTime_ = 200;
271     int64_t inTime = 100;
272     int64_t expected = 100;
273     int64_t result = syncManager_->ClipMediaTime(inTime);
274     ASSERT_EQ(expected, result);
275 }
276 
277 // Scenario5: Test when inTime is equal to maxRangeEndOfMediaTime_
278 HWTEST_F(TestSyncManager, ClipMediaTime_ShouldNotClip_WhenInTimeEqualToMax, TestSize.Level0)
279 {
280     syncManager_->minRangeStartOfMediaTime_ = 100;
281     syncManager_->maxRangeEndOfMediaTime_ = 200;
282     int64_t inTime = 200;
283     int64_t expected = 200;
284     int64_t result = syncManager_->ClipMediaTime(inTime);
285     ASSERT_EQ(expected, result);
286 }
287 
288 HWTEST_F(TestSyncManager, UpdateFirstPtsAfterSeek_ShouldUpdateFirstPts_WhenFirstPtsIsNone, TestSize.Level0)
289 {
290     int64_t mediaTime = 100;
291     syncManager_->UpdateFirstPtsAfterSeek(mediaTime);
292     EXPECT_EQ(syncManager_->firstMediaTimeAfterSeek_, mediaTime);
293 }
294 
295 HWTEST_F(TestSyncManager, UpdateFirstPtsAfterSeek_ShouldUpdateFirstPts_WhenMediaTimeIsGreater, TestSize.Level0)
296 {
297     int64_t firstMediaTimeAfterSeek = 50;
298     int64_t mediaTime = 100;
299     syncManager_->firstMediaTimeAfterSeek_ = firstMediaTimeAfterSeek;
300     syncManager_->UpdateFirstPtsAfterSeek(mediaTime);
301     EXPECT_EQ(syncManager_->firstMediaTimeAfterSeek_, mediaTime);
302 }
303 
304 HWTEST_F(TestSyncManager, UpdateFirstPtsAfterSeek_ShouldNotUpdateFirstPts_WhenMediaTimeIsLess, TestSize.Level0)
305 {
306     int64_t firstMediaTimeAfterSeek = 150;
307     int64_t mediaTime = 100;
308     syncManager_->firstMediaTimeAfterSeek_ = firstMediaTimeAfterSeek;
309     syncManager_->UpdateFirstPtsAfterSeek(mediaTime);
310     EXPECT_EQ(syncManager_->firstMediaTimeAfterSeek_, firstMediaTimeAfterSeek);
311 }
312 
313 // Scenario1: Test when playRate is 0 then return HST_TIME_NONE.
314 HWTEST_F(TestSyncManager, SimpleGetMediaTime_001, TestSize.Level0)
315 {
316     int64_t anchorClockTime = 100;
317     int64_t delayTime = 50;
318     int64_t nowClockTime = 150;
319     int64_t anchorMediaTime = 200;
320     float playRate = 0;
321     int64_t result =
322         syncManager_->SimpleGetMediaTime(anchorClockTime, delayTime, nowClockTime, anchorMediaTime, playRate);
323     ASSERT_EQ(result, HST_TIME_NONE);
324 }
325 
326 // Scenario2: Test when any of the input parameters is HST_TIME_NONE then return HST_TIME_NONE.
327 HWTEST_F(TestSyncManager, SimpleGetMediaTime_002, TestSize.Level0)
328 {
329     int64_t anchorClockTime = HST_TIME_NONE;
330     int64_t delayTime = 50;
331     int64_t nowClockTime = 150;
332     int64_t anchorMediaTime = 200;
333     float playRate = 1.0;
334     int64_t result =
335         syncManager_->SimpleGetMediaTime(anchorClockTime, delayTime, nowClockTime, anchorMediaTime, playRate);
336     ASSERT_EQ(result, HST_TIME_NONE);
337 }
338 
339 // Scenario3: Test when all parameters are valid then return anchorMediaTime.
340 HWTEST_F(TestSyncManager, SimpleGetMediaTime_003, TestSize.Level0)
341 {
342     int64_t anchorClockTime = 100;
343     int64_t delayTime = 50;
344     int64_t nowClockTime = 150;
345     int64_t anchorMediaTime = 200;
346     float playRate = 1.0;
347     int64_t result =
348         syncManager_->SimpleGetMediaTime(anchorClockTime, delayTime, nowClockTime, anchorMediaTime, playRate);
349     ASSERT_EQ(result, anchorMediaTime);
350 }
351 
352 // Scenario1: Test case for when isSeeking_ is true
353 HWTEST_F(TestSyncManager, GetMediaTimeNow_001, TestSize.Level0)
354 {
355     syncManager_->isSeeking_ = true;
356     syncManager_->seekingMediaTime_ = 100;
357     EXPECT_EQ(syncManager_->GetMediaTimeNow(), 100);
358 }
359 
360 // Scenario3: Test case for when SimpleGetMediaTimeExactly returns HST_TIME_NONE
361 HWTEST_F(TestSyncManager, GetMediaTimeNow_003, TestSize.Level0)
362 {
363     EXPECT_EQ(syncManager_->GetMediaTimeNow(), 0);
364 }
365 
366 // Scenario1: Test case for when clockState_ is PAUSED
367 HWTEST_F(TestSyncManager, GetClockTimeNow_001, TestSize.Level0)
368 {
369     MediaSyncManager mediaSyncManager;
370     mediaSyncManager.clockState_ = MediaSyncManager::State::PAUSED;
371     mediaSyncManager.GetClockTimeNow();
372     EXPECT_EQ(mediaSyncManager.clockState_, MediaSyncManager::State::PAUSED);
373 }
374 
375 // Scenario1: Test when playRate is 0, the function should return HST_TIME_NONE.
376 HWTEST_F(TestSyncManager, SimpleGetClockTime_001, TestSize.Level0)
377 {
378     MediaSyncManager mediaSyncManager;
379     int64_t anchorClockTime = 100;
380     int64_t nowMediaTime = 200;
381     int64_t anchorMediaTime = 150;
382     float playRate = 0;
383     int64_t result = mediaSyncManager.SimpleGetClockTime(anchorClockTime, nowMediaTime, anchorMediaTime, playRate);
384     EXPECT_EQ(result, HST_TIME_NONE);
385 }
386 
387 // Scenario2: Test when any of the input parameters is HST_TIME_NONE, the function should return HST_TIME_NONE.
388 HWTEST_F(TestSyncManager, SimpleGetClockTime_002, TestSize.Level0)
389 {
390     MediaSyncManager mediaSyncManager;
391     int64_t anchorClockTime = HST_TIME_NONE;
392     int64_t nowMediaTime = 200;
393     int64_t anchorMediaTime = 150;
394     float playRate = 1.0;
395     int64_t result = mediaSyncManager.SimpleGetClockTime(anchorClockTime, nowMediaTime, anchorMediaTime, playRate);
396     EXPECT_EQ(result, HST_TIME_NONE);
397 }
398 
399 // Scenario3: Test when all parameters are valid, the function should return the correct clock time.
400 HWTEST_F(TestSyncManager, SimpleGetClockTime_003, TestSize.Level0)
401 {
402     MediaSyncManager mediaSyncManager;
403     int64_t anchorClockTime = 100;
404     int64_t nowMediaTime = 200;
405     int64_t anchorMediaTime = 150;
406     float playRate = 1.0;
407     int64_t result = mediaSyncManager.SimpleGetClockTime(anchorClockTime, nowMediaTime, anchorMediaTime, playRate);
408     EXPECT_EQ(result, 150);
409 }
410 
411 HWTEST_F(TestSyncManager, GetClockTime_001, TestSize.Level0)
412 {
413     MediaSyncManager mediaSyncManager;
414     mediaSyncManager.minRangeStartOfMediaTime_ = 100;
415     mediaSyncManager.maxRangeEndOfMediaTime_ = 200;
416     int64_t mediaTime = 50;
417     int64_t result = mediaSyncManager.GetClockTime(mediaTime);
418     EXPECT_EQ(result, HST_TIME_NONE);
419 }
420 
421 // Scenario2: Test when mediaTime is greater than maxRangeEndOfMediaTime_
422 HWTEST_F(TestSyncManager, GetClockTime_002, TestSize.Level0)
423 {
424     MediaSyncManager mediaSyncManager;
425     mediaSyncManager.minRangeStartOfMediaTime_ = 100;
426     mediaSyncManager.maxRangeEndOfMediaTime_ = 200;
427     int64_t mediaTime = 250;
428     int64_t result = mediaSyncManager.GetClockTime(mediaTime);
429     EXPECT_EQ(result, HST_TIME_NONE);
430 }
431 
432 // Scenario3: Test when mediaTime is within the range
433 HWTEST_F(TestSyncManager, GetClockTime_003, TestSize.Level0)
434 {
435     MediaSyncManager mediaSyncManager;
436     mediaSyncManager.minRangeStartOfMediaTime_ = 100;
437     mediaSyncManager.maxRangeEndOfMediaTime_ = 200;
438     int64_t mediaTime = 150;
439     int64_t result = mediaSyncManager.GetClockTime(mediaTime);
440     EXPECT_EQ(result, HST_TIME_NONE);
441 }
442 
443 // Scenario1: Test when supplier is nullptr then ReportPrerolled returns immediately.
444 HWTEST_F(TestSyncManager, ReportPrerolled_001, TestSize.Level0)
445 {
446     syncManager_->ReportPrerolled(nullptr);
447     // No further action is expected, as the function should return immediately.
448 }
449 
450 // Scenario2: Test when allSyncerShouldPrerolled_ is false then ReportPrerolled returns immediately.
451 HWTEST_F(TestSyncManager, ReportPrerolled_002, TestSize.Level0)
452 {
453     IMediaSynchronizer* supplier = new VideoSink();
454     syncManager_->allSyncerShouldPrerolled_ = false;
455     syncManager_->ReportPrerolled(supplier);
456     // No further action is expected, as the function should return immediately.
457     delete supplier;
458 }
459 
460 // Scenario3: Test when supplier is already in prerolledSyncers_ then ReportPrerolled returns immediately.
461 HWTEST_F(TestSyncManager, ReportPrerolled_003, TestSize.Level0)
462 {
463     IMediaSynchronizer* supplier = new VideoSink();
464     syncManager_->allSyncerShouldPrerolled_ = true;
465     syncManager_->prerolledSyncers_.emplace_back(supplier);
466     syncManager_->ReportPrerolled(supplier);
467     // No further action is expected, as the function should return immediately.
468     delete supplier;
469 }
470 
471 HWTEST_F(TestSyncManager, ReportPrerolled_004, TestSize.Level0)
472 {
473     IMediaSynchronizer* supplier = new VideoSink();
474     syncManager_->allSyncerShouldPrerolled_ = true;
475     syncManager_->ReportPrerolled(supplier);
476     EXPECT_EQ(syncManager_->prerolledSyncers_.size(), 1);
477     EXPECT_EQ(syncManager_->prerolledSyncers_.front(), supplier);
478     delete supplier;
479 }
480 
481 // Scenario5: Test when all prerolledSyncers_ are equal to syncers_ then all prerolledSyncers_ are notified and cleared.
482 HWTEST_F(TestSyncManager, ReportPrerolled_005, TestSize.Level0)
483 {
484     IMediaSynchronizer* supplier = new VideoSink();
485     syncManager_->allSyncerShouldPrerolled_ = true;
486     syncManager_->syncers_.emplace_back(supplier);
487     syncManager_->ReportPrerolled(supplier);
488     EXPECT_EQ(syncManager_->prerolledSyncers_.size(), 0);
489     EXPECT_EQ(syncManager_->prerolledSyncers_.size(), 0);
490     delete supplier;
491 }
492 }  // namespace Test
493 }  // namespace Media
494 }  // namespace OHOS