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 SLOGI("SetAVMetaData001 End");
98 }
99
100 /**
101 * @tc.name: SetAVMetaData002
102 * @tc.desc: set av meta data
103 * @tc.type: FUNC
104 * @tc.require: AR000H31JO
105 */
106 HWTEST_F(OHAVMetadataBuilderTest, SetAVMetaData002, TestSize.Level1)
107 {
108 SLOGI("SetAVMetaData002 Begin");
109 int ret = g_ohAVMetaDataBuilder.SetSkipIntervals((AVMetadata_SkipIntervals)(SECONDS_30 + 1));
110 EXPECT_EQ(ret, AVMETADATA_ERROR_INVALID_PARAM);
111 SLOGI("SetAVMetaData002 End");
112 }
113
114 /**
115 * @tc.name: SetAVMetaData003
116 * @tc.desc: set av meta data by func
117 * @tc.type: FUNC
118 * @tc.require: AR000H31JO
119 */
120 HWTEST_F(OHAVMetadataBuilderTest, SetAVMetaData003, TestSize.Level1)
121 {
122 SLOGI("SetAVMetaData001 Begin");
123 AVMetaData* metadata;
124 OH_AVMetadataBuilder* builder;
125 OH_AVMetadata* ohMetadata;
126
127 OH_AVMetadataBuilder_Create(&builder);
128
129 OH_AVMetadataBuilder_SetTitle(builder, "UNIT TEST");
130 OH_AVMetadataBuilder_SetArtist(builder, "Anonymous artist");
131 OH_AVMetadataBuilder_SetAuthor(builder, "Anonymous author");
132 OH_AVMetadataBuilder_SetAlbum(builder, "Anonymous album");
133 OH_AVMetadataBuilder_SetWriter(builder, "Anonymous writer");
134 OH_AVMetadataBuilder_SetComposer(builder, "Anonymous composer");
135 OH_AVMetadataBuilder_SetDuration(builder, DURATION);
136 OH_AVMetadataBuilder_SetMediaImageUri(builder, "https://xxx.xxx.xx");
137 OH_AVMetadataBuilder_SetSubtitle(builder, "fac");
138 OH_AVMetadataBuilder_SetDescription(builder, "For somebody");
139 OH_AVMetadataBuilder_SetLyric(builder, "balabala");
140 OH_AVMetadataBuilder_SetAssetId(builder, "000");
141 OH_AVMetadataBuilder_SetSkipIntervals(builder, SECONDS_30);
142 OH_AVMetadataBuilder_SetDisplayTags(builder, TAGS);
143 OH_AVMetadataBuilder_GenerateAVMetadata(builder, &ohMetadata);
144
145 metadata = reinterpret_cast<AVMetaData*>(ohMetadata);
146
147 EXPECT_EQ(metadata->GetTitle(), "UNIT TEST");
148 EXPECT_EQ(metadata->GetArtist(), "Anonymous artist");
149 EXPECT_EQ(metadata->GetAuthor(), "Anonymous author");
150 EXPECT_EQ(metadata->GetAlbum(), "Anonymous album");
151 EXPECT_EQ(metadata->GetWriter(), "Anonymous writer");
152 EXPECT_EQ(metadata->GetComposer(), "Anonymous composer");
153 EXPECT_EQ(metadata->GetDuration(), DURATION);
154 EXPECT_EQ(metadata->GetMediaImageUri(), "https://xxx.xxx.xx");
155 EXPECT_EQ(metadata->GetSubTitle(), "fac");
156 EXPECT_EQ(metadata->GetDescription(), "For somebody");
157 EXPECT_EQ(metadata->GetLyric(), "balabala");
158 EXPECT_EQ(metadata->GetAssetId(), "000");
159 EXPECT_EQ(metadata->GetSkipIntervals(), SECONDS_30);
160 EXPECT_EQ(metadata->GetDisplayTags(), TAGS);
161
162 OH_AVMetadataBuilder_Destroy(builder);
163 OH_AVMetadata_Destroy(ohMetadata);
164
165 SLOGI("SetAVMetaData001 End");
166 }
167 } // namespace OHOS::AVSession