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
16 #include <gtest/gtest.h>
17 #include "OHAVMetadataBuilder.h"
18 #include "avmeta_data.h"
19 #include "avsession_log.h"
20
21 using namespace testing::ext;
22
23 namespace OHOS::AVSession {
24 static OHAVMetadataBuilder g_ohAVMetaDataBuilder;
25 constexpr int DURATION = 40000;
26 constexpr int TAGS = 1;
27
28 class OHAVMetadataBuilderTest : public testing::Test {
29 public:
30 static void SetUpTestCase();
31 static void TearDownTestCase();
32 void SetUp() override;
33 void TearDown() override;
34 };
35
SetUpTestCase()36 void OHAVMetadataBuilderTest::SetUpTestCase()
37 {
38 }
39
TearDownTestCase()40 void OHAVMetadataBuilderTest::TearDownTestCase()
41 {
42 }
43
SetUp()44 void OHAVMetadataBuilderTest::SetUp()
45 {
46 }
47
TearDown()48 void OHAVMetadataBuilderTest::TearDown()
49 {
50 }
51
52 /**
53 * @tc.name: SetAVMetaData001
54 * @tc.desc: set av meta data by class
55 * @tc.type: FUNC
56 * @tc.require: AR000H31JO
57 */
58 HWTEST_F(OHAVMetadataBuilderTest, SetAVMetaData001, TestSize.Level1)
59 {
60 SLOGI("SetAVMetaData001 Begin");
61 AVMetaData* metadata;
62 OH_AVMetadata* ohMetadata;
63 g_ohAVMetaDataBuilder.SetTitle("UNIT TEST");
64 g_ohAVMetaDataBuilder.SetArtist("Anonymous artist");
65 g_ohAVMetaDataBuilder.SetAuthor("Anonymous author");
66 g_ohAVMetaDataBuilder.SetAlbum("Anonymous album");
67 g_ohAVMetaDataBuilder.SetWriter("Anonymous writer");
68 g_ohAVMetaDataBuilder.SetComposer("Anonymous composer");
69 g_ohAVMetaDataBuilder.SetDuration(DURATION);
70 g_ohAVMetaDataBuilder.SetMediaImageUri("https://xxx.xxx.xx");
71 g_ohAVMetaDataBuilder.SetSubtitle("fac");
72 g_ohAVMetaDataBuilder.SetDescription("For somebody");
73 g_ohAVMetaDataBuilder.SetLyric("balabala");
74 g_ohAVMetaDataBuilder.SetAssetId("000");
75 g_ohAVMetaDataBuilder.SetSkipIntervals(SECONDS_30);
76 g_ohAVMetaDataBuilder.SetDisplayTags(TAGS);
77
78 g_ohAVMetaDataBuilder.GenerateAVMetadata(&ohMetadata);
79
80 metadata = reinterpret_cast<AVMetaData*>(ohMetadata);
81 EXPECT_EQ(metadata->GetTitle(), "UNIT TEST");
82 EXPECT_EQ(metadata->GetArtist(), "Anonymous artist");
83 EXPECT_EQ(metadata->GetAuthor(), "Anonymous author");
84 EXPECT_EQ(metadata->GetAlbum(), "Anonymous album");
85 EXPECT_EQ(metadata->GetWriter(), "Anonymous writer");
86 EXPECT_EQ(metadata->GetComposer(), "Anonymous composer");
87 EXPECT_EQ(metadata->GetDuration(), DURATION);
88 EXPECT_EQ(metadata->GetMediaImageUri(), "https://xxx.xxx.xx");
89 EXPECT_EQ(metadata->GetSubTitle(), "fac");
90 EXPECT_EQ(metadata->GetDescription(), "For somebody");
91 EXPECT_EQ(metadata->GetLyric(), "balabala");
92 EXPECT_EQ(metadata->GetAssetId(), "000");
93 EXPECT_EQ(metadata->GetSkipIntervals(), SECONDS_30);
94 EXPECT_EQ(metadata->GetDisplayTags(), TAGS);
95
96 delete metadata;
97 metadata = nullptr;
98 SLOGI("SetAVMetaData001 End");
99 }
100
101 /**
102 * @tc.name: SetAVMetaData002
103 * @tc.desc: set av meta data
104 * @tc.type: FUNC
105 * @tc.require: AR000H31JO
106 */
107 HWTEST_F(OHAVMetadataBuilderTest, SetAVMetaData002, TestSize.Level1)
108 {
109 SLOGI("SetAVMetaData002 Begin");
110 int ret = g_ohAVMetaDataBuilder.SetSkipIntervals((AVMetadata_SkipIntervals)(SECONDS_30 + 1));
111 EXPECT_EQ(ret, AVMETADATA_ERROR_INVALID_PARAM);
112 SLOGI("SetAVMetaData002 End");
113 }
114
115 /**
116 * @tc.name: SetAVMetaData003
117 * @tc.desc: set av meta data by func
118 * @tc.type: FUNC
119 * @tc.require: AR000H31JO
120 */
121 HWTEST_F(OHAVMetadataBuilderTest, SetAVMetaData003, TestSize.Level1)
122 {
123 SLOGI("SetAVMetaData001 Begin");
124 AVMetaData* metadata;
125 OH_AVMetadataBuilder* builder;
126 OH_AVMetadata* ohMetadata;
127
128 OH_AVMetadataBuilder_Create(&builder);
129
130 OH_AVMetadataBuilder_SetTitle(builder, "UNIT TEST");
131 OH_AVMetadataBuilder_SetArtist(builder, "Anonymous artist");
132 OH_AVMetadataBuilder_SetAuthor(builder, "Anonymous author");
133 OH_AVMetadataBuilder_SetAlbum(builder, "Anonymous album");
134 OH_AVMetadataBuilder_SetWriter(builder, "Anonymous writer");
135 OH_AVMetadataBuilder_SetComposer(builder, "Anonymous composer");
136 OH_AVMetadataBuilder_SetDuration(builder, DURATION);
137 OH_AVMetadataBuilder_SetMediaImageUri(builder, "https://xxx.xxx.xx");
138 OH_AVMetadataBuilder_SetSubtitle(builder, "fac");
139 OH_AVMetadataBuilder_SetDescription(builder, "For somebody");
140 OH_AVMetadataBuilder_SetLyric(builder, "balabala");
141 OH_AVMetadataBuilder_SetAssetId(builder, "000");
142 OH_AVMetadataBuilder_SetSkipIntervals(builder, SECONDS_30);
143 OH_AVMetadataBuilder_SetDisplayTags(builder, TAGS);
144 OH_AVMetadataBuilder_GenerateAVMetadata(builder, &ohMetadata);
145
146 metadata = reinterpret_cast<AVMetaData*>(ohMetadata);
147
148 EXPECT_EQ(metadata->GetTitle(), "UNIT TEST");
149 EXPECT_EQ(metadata->GetArtist(), "Anonymous artist");
150 EXPECT_EQ(metadata->GetAuthor(), "Anonymous author");
151 EXPECT_EQ(metadata->GetAlbum(), "Anonymous album");
152 EXPECT_EQ(metadata->GetWriter(), "Anonymous writer");
153 EXPECT_EQ(metadata->GetComposer(), "Anonymous composer");
154 EXPECT_EQ(metadata->GetDuration(), DURATION);
155 EXPECT_EQ(metadata->GetMediaImageUri(), "https://xxx.xxx.xx");
156 EXPECT_EQ(metadata->GetSubTitle(), "fac");
157 EXPECT_EQ(metadata->GetDescription(), "For somebody");
158 EXPECT_EQ(metadata->GetLyric(), "balabala");
159 EXPECT_EQ(metadata->GetAssetId(), "000");
160 EXPECT_EQ(metadata->GetSkipIntervals(), SECONDS_30);
161 EXPECT_EQ(metadata->GetDisplayTags(), TAGS);
162
163 OH_AVMetadataBuilder_Destroy(builder);
164 OH_AVMetadata_Destroy(ohMetadata);
165
166 SLOGI("SetAVMetaData001 End");
167 }
168
169 /**
170 * @tc.name: GenerateAVMetadata001
171 * @tc.desc: test GenerateAVMetadata
172 * @tc.type: FUNC
173 * @tc.require: AR000H31JO
174 */
175 HWTEST_F(OHAVMetadataBuilderTest, GenerateAVMetadata001, TestSize.Level1)
176 {
177 SLOGI("GenerateAVMetadata001 Begin");
178 AVMetadata_SkipIntervals intervals = SECONDS_10;
179 AVMetadata_Result ret = g_ohAVMetaDataBuilder.SetSkipIntervals(intervals);
180 EXPECT_EQ(ret, AVMETADATA_SUCCESS);
181
182 std::shared_ptr<AVMetaData> metadata = std::make_shared<AVMetaData>();
183 OH_AVMetadata* avMetadata = reinterpret_cast<OH_AVMetadata*>(metadata.get());
184 OH_AVMetadata** ptr = &avMetadata;
185 ret = g_ohAVMetaDataBuilder.GenerateAVMetadata(ptr);
186 EXPECT_EQ(ret, AVMETADATA_SUCCESS);
187 SLOGI("GenerateAVMetadata001 End");
188 }
189
190 /**
191 * @tc.name: GenerateAVMetadata002
192 * @tc.desc: test GenerateAVMetadata
193 * @tc.type: FUNC
194 * @tc.require: AR000H31JO
195 */
196 HWTEST_F(OHAVMetadataBuilderTest, GenerateAVMetadata002, TestSize.Level1)
197 {
198 SLOGI("GenerateAVMetadata002 Begin");
199 AVMetadata_SkipIntervals intervals = SECONDS_15;
200 AVMetadata_Result ret = g_ohAVMetaDataBuilder.SetSkipIntervals(intervals);
201 EXPECT_EQ(ret, AVMETADATA_SUCCESS);
202
203 std::shared_ptr<AVMetaData> metadata = std::make_shared<AVMetaData>();
204 OH_AVMetadata* avMetadata = reinterpret_cast<OH_AVMetadata*>(metadata.get());
205 OH_AVMetadata** ptr = &avMetadata;
206 ret = g_ohAVMetaDataBuilder.GenerateAVMetadata(ptr);
207 EXPECT_EQ(ret, AVMETADATA_SUCCESS);
208 SLOGI("GenerateAVMetadata002 End");
209 }
210
211 /**
212 * @tc.name: GenerateAVMetadata003
213 * @tc.desc: test GenerateAVMetadata
214 * @tc.type: FUNC
215 * @tc.require: AR000H31JO
216 */
217 HWTEST_F(OHAVMetadataBuilderTest, GenerateAVMetadata003, TestSize.Level1)
218 {
219 SLOGI("GenerateAVMetadata003 Begin");
220 AVMetadata_SkipIntervals intervals = SECONDS_30;
221 AVMetadata_Result ret = g_ohAVMetaDataBuilder.SetSkipIntervals(intervals);
222 EXPECT_EQ(ret, AVMETADATA_SUCCESS);
223
224 std::shared_ptr<AVMetaData> metadata = std::make_shared<AVMetaData>();
225 OH_AVMetadata* avMetadata = reinterpret_cast<OH_AVMetadata*>(metadata.get());
226 OH_AVMetadata** ptr = &avMetadata;
227 ret = g_ohAVMetaDataBuilder.GenerateAVMetadata(ptr);
228 EXPECT_EQ(ret, AVMETADATA_SUCCESS);
229 SLOGI("GenerateAVMetadata003 End");
230 }
231
232 /**
233 * @tc.name: GenerateAVMetadata004
234 * @tc.desc: test GenerateAVMetadata
235 * @tc.type: FUNC
236 * @tc.require: AR000H31JO
237 */
238 HWTEST_F(OHAVMetadataBuilderTest, GenerateAVMetadata004, TestSize.Level1)
239 {
240 SLOGI("GenerateAVMetadata004 Begin");
241 AVMetadata_SkipIntervals intervals = static_cast<AVMetadata_SkipIntervals>(100);
242 AVMetadata_Result ret = g_ohAVMetaDataBuilder.SetSkipIntervals(intervals);
243 EXPECT_EQ(ret, AVMETADATA_ERROR_INVALID_PARAM);
244
245 std::shared_ptr<AVMetaData> metadata = std::make_shared<AVMetaData>();
246 OH_AVMetadata* avMetadata = reinterpret_cast<OH_AVMetadata*>(metadata.get());
247 OH_AVMetadata** ptr = &avMetadata;
248 ret = g_ohAVMetaDataBuilder.GenerateAVMetadata(ptr);
249 EXPECT_EQ(ret, AVMETADATA_SUCCESS);
250 SLOGI("GenerateAVMetadata004 End");
251 }
252
253 } // namespace OHOS::AVSession