1 /*
2 * Copyright (C) 2025 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 "subtitle_sink_unittest.h"
17
18 namespace OHOS {
19 namespace Media {
20 using namespace std;
21 using namespace testing;
22 using namespace testing::ext;
23
24 static const string TEXT_A = "a";
25 static const string TEXT_B = "b";
26 static const int64_t PTR_100 = 100;
27 static const int64_t PTR_200 = 200;
28 static const int64_t DURATION_50 = 50;
29 static const int64_t TIME_50 = 50;
30 static const int64_t TIME_220 = 220;
31 static const int64_t TIME_300 = 300;
32 static const uint32_t RET_0 = 0;
33 static const uint32_t RET_1 = 1;
34 static const uint32_t RET_2 = 2;
35 static const int32_t ERROR_RET = 0;
36
SetUpTestCase(void)37 void SubtitleSinkUnitTest::SetUpTestCase(void)
38 {
39 }
40
TearDownTestCase(void)41 void SubtitleSinkUnitTest::TearDownTestCase(void)
42 {
43 }
44
SetUp(void)45 void SubtitleSinkUnitTest::SetUp(void)
46 {
47 sink_ = std::make_shared<SubtitleSink>();
48 }
49
TearDown(void)50 void SubtitleSinkUnitTest::TearDown(void)
51 {
52 sink_ = nullptr;
53 }
54
55 /**
56 * @tc.name : Test GetTargetSubtitleIndex
57 * @tc.number: GetTargetSubtitleIndex_001
58 * @tc.desc : Test startTime > currentTime
59 */
60 HWTEST_F(SubtitleSinkUnitTest, GetTargetSubtitleIndex_001, TestSize.Level0)
61 {
62 ASSERT_NE(sink_, nullptr);
63 sink_->subtitleInfoVec_.emplace_back(TEXT_A, PTR_100, DURATION_50);
64 sink_->subtitleInfoVec_.emplace_back(TEXT_B, PTR_200, DURATION_50);
65 sink_->GetTargetSubtitleIndex(TIME_50);
66 EXPECT_EQ(sink_->currentInfoIndex_, RET_0);
67 }
68
69 /**
70 * @tc.name : Test GetTargetSubtitleIndex
71 * @tc.number: GetTargetSubtitleIndex_002
72 * @tc.desc : Test endTime < currentTime
73 */
74 HWTEST_F(SubtitleSinkUnitTest, GetTargetSubtitleIndex_002, TestSize.Level0)
75 {
76 ASSERT_NE(sink_, nullptr);
77 sink_->subtitleInfoVec_.emplace_back(TEXT_A, PTR_100, DURATION_50);
78 sink_->subtitleInfoVec_.emplace_back(TEXT_B, PTR_200, DURATION_50);
79 sink_->GetTargetSubtitleIndex(TIME_300);
80 EXPECT_EQ(sink_->currentInfoIndex_, RET_2);
81 }
82
83 /**
84 * @tc.name : Test GetTargetSubtitleIndex
85 * @tc.number: GetTargetSubtitleIndex_003
86 * @tc.desc : Test startTime <= currentTime <= endTime
87 */
88 HWTEST_F(SubtitleSinkUnitTest, GetTargetSubtitleIndex_003, TestSize.Level0)
89 {
90 ASSERT_NE(sink_, nullptr);
91 sink_->subtitleInfoVec_.emplace_back(TEXT_A, PTR_100, DURATION_50);
92 sink_->subtitleInfoVec_.emplace_back(TEXT_B, PTR_200, DURATION_50);
93 sink_->GetTargetSubtitleIndex(TIME_220);
94 EXPECT_EQ(sink_->currentInfoIndex_, RET_1);
95 }
96
97 /**
98 * @tc.name : Test ResetSyncInfo
99 * @tc.number: ResetSyncInfo_001
100 * @tc.desc : Test syncCenter != nullptr
101 */
102 HWTEST_F(SubtitleSinkUnitTest, ResetSyncInfo_001, TestSize.Level0)
103 {
104 ASSERT_NE(sink_, nullptr);
105 auto syncCenter = std::make_shared<Pipeline::MediaSyncManager>();
106 sink_->SetSyncCenter(syncCenter);
107 EXPECT_CALL(*syncCenter, AddSynchronizer(_)).WillRepeatedly(Return());
108 sink_->ResetSyncInfo();
109 EXPECT_CALL(*syncCenter, Reset()).WillRepeatedly(Return(Status::OK));
110 EXPECT_EQ(syncCenter->isFrameAfterSeeked_, false);
111 }
112
113 /**
114 * @tc.name : Test GetMediaTime
115 * @tc.number: GetMediaTime_001
116 * @tc.desc : Test syncCenter == nullptr
117 */
118 HWTEST_F(SubtitleSinkUnitTest, GetMediaTime_001, TestSize.Level0)
119 {
120 ASSERT_NE(sink_, nullptr);
121 sink_->SetSyncCenter(nullptr);
122 auto ret = sink_->GetMediaTime();
123 EXPECT_EQ(ret, ERROR_RET);
124 }
125 } // namespace Media
126 } // namespace OHOS