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