• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2021 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 "scene/player/standard/hiplayer_impl.h"
18 #include "plugin/common/plugin_meta.h"
19 
20 #define private public
21 #define protected public
22 #define UNIT_TEST 1
23 
24 
25 using namespace testing::ext;
26 
27 namespace OHOS {
28 namespace Media {
29 namespace Test {
30 using namespace OHOS::Media::Plugin;
31 using namespace OHOS::Media::Pipeline;
32 
33 HWTEST(TestMeta, can_get_uint32_after_set, TestSize.Level1)
34 {
35     Meta meta;
36     uint32_t channels = 64;
37     meta.Set<Tag::AUDIO_CHANNELS>(channels);
38     uint32_t outChannels = 0;
39     ASSERT_TRUE(meta.Get<Tag::AUDIO_CHANNELS>(outChannels));
40     ASSERT_EQ(channels, outChannels);
41 }
42 
43 HWTEST(TestMeta, can_not_get_uint32_if_not_set, TestSize.Level1)
44 {
45     Meta meta;
46     uint32_t canNotGet = 0;
47     ASSERT_FALSE(meta.Get<Tag::AUDIO_CHANNELS>(canNotGet));
48 }
49 
50 HWTEST(TestMeta, set_then_get_cstring, TestSize.Level1)
51 {
52     Meta meta;
53     std::string artist("abcd");
54     meta.Set<Tag::MEDIA_TITLE>(artist);
55     std::string outArtist;
56     ASSERT_TRUE(meta.Get<Tag::MEDIA_TITLE>(outArtist));
57     ASSERT_STREQ(artist.c_str(), outArtist.c_str());
58 }
59 
60 HWTEST(TestMeta, set_then_get_float, TestSize.Level1)
61 {
62     Meta meta;
63     std::string in = "9.9999f";
64     meta.Set<Tag::MEDIA_ARTIST>(in); // this is only for test, normally MEDIA_ARTIST should be string
65     std::string out = "";
66     ASSERT_TRUE(meta.Get<Tag::MEDIA_ARTIST>(out));
67     ASSERT_TRUE(in == out);
68 }
69 
70 HWTEST(TestMeta, fail_to_get_unexisted_data, TestSize.Level1)
71 {
72     Meta meta;
73     int32_t channels = 64;
74     meta.Set<Tag::AUDIO_CHANNELS>(channels);
75     int64_t bitRate = 1876411;
76     ASSERT_FALSE(meta.Get<Tag::MEDIA_BITRATE>(bitRate));
77 }
78 
79 HWTEST(TestMeta, remove_data, TestSize.Level1)
80 {
81     Meta meta;
82     uint32_t channels = 64;
83     meta.Set<Tag::AUDIO_CHANNELS>(channels);
84     uint32_t out;
85     ASSERT_TRUE(meta.Get<Tag::AUDIO_CHANNELS>(out));
86     ASSERT_EQ(channels, out);
87     meta.Remove(Tag::AUDIO_CHANNELS);
88     ASSERT_FALSE(meta.Get<Tag::AUDIO_CHANNELS>(out));
89 }
90 
91 HWTEST(TestMeta, clear_data, TestSize.Level1)
92 {
93     Meta meta;
94     std::string title("title");
95     std::string album("album");
96     uint32_t channels = 64;
97     meta.Set<Tag::MEDIA_TITLE>(title);
98     meta.Set<Tag::MEDIA_ALBUM>(album);
99     meta.Set<Tag::AUDIO_CHANNELS>(channels);
100     meta.Clear();
101     std::string out;
102     ASSERT_FALSE(meta.Get<Tag::MEDIA_TITLE>(out));
103     ASSERT_TRUE(out.empty());
104     ASSERT_FALSE(meta.Get<Tag::MEDIA_ALBUM>(out));
105     ASSERT_TRUE(out.empty());
106     uint32_t oChannels = 0;
107     ASSERT_FALSE(meta.Get<Tag::AUDIO_CHANNELS>(oChannels));
108     ASSERT_EQ(0u, oChannels);
109 }
110 
111 HWTEST(TestMeta, update_meta, TestSize.Level1)
112 {
113     Meta meta;
114     std::string title("title");
115     std::string album("album");
116     int32_t channels = 64;
117     meta.Set<Tag::MEDIA_TITLE>(title);
118     meta.Set<Tag::MEDIA_ALBUM>(album);
119     meta.Set<Tag::AUDIO_CHANNELS>(channels);
120 
121     Meta meta2;
122     uint32_t channels2 = 32;
123     meta2.Set<Tag::AUDIO_CHANNELS>(channels2);
124 
125     meta = meta2;
126     std::string out;
127     ASSERT_FALSE(meta.Get<Tag::MEDIA_TITLE>(out));
128     ASSERT_STRNE("title", out.c_str());
129     ASSERT_FALSE(meta.Get<Tag::MEDIA_ALBUM>(out));
130     ASSERT_STRNE("album", out.c_str());
131     uint32_t oChannel = 0;
132     ASSERT_TRUE(meta.Get<Tag::AUDIO_CHANNELS>(oChannel));
133     ASSERT_EQ(channels2, oChannel);
134 }
135 
136 HWTEST(TestMeta, Can_insert_tag_value_int64_to_Meta, TestSize.Level1)
137 {
138     Meta meta;
139     ASSERT_TRUE(meta.Set<Tag::MEDIA_DURATION>(10000));
140     ASSERT_TRUE(meta.Set<Tag::MEDIA_FILE_SIZE>(500));
141     int64_t value;
142     ASSERT_TRUE(meta.Get<Tag::MEDIA_DURATION>(value));
143     ASSERT_EQ(10000, value);
144     uint64_t size;
145     ASSERT_TRUE(meta.Get<Tag::MEDIA_FILE_SIZE>(size));
146     ASSERT_EQ(500, size);
147 }
148 
149 HWTEST(TestMeta, Can_insert_tag_value_uint32_to_Meta, TestSize.Level1)
150 {
151     Meta meta;
152     ASSERT_TRUE(meta.Set<Tag::TRACK_ID>(10000));
153     uint32_t value;
154     ASSERT_TRUE(meta.Get<Tag::TRACK_ID>(value));
155     ASSERT_EQ(10000, value);
156 }
157 
158 HWTEST(TestMeta, return_value_after_meta_to_capability, TestSize.Level1)
159 {
160     Meta meta;
161     meta.Set<Plugin::Tag::AUDIO_MPEG_VERSION>(1);
162     meta.Set<Plugin::Tag::AUDIO_CHANNELS>(2);
163     std::shared_ptr<Capability> cap = MetaToCapability(meta);
164     auto mpegVersion = Plugin::AnyCast<uint32_t>(cap->keys[CapabilityID::AUDIO_MPEG_VERSION]);
165     ASSERT_TRUE(mpegVersion == 1);
166     auto channels = Plugin::AnyCast<uint32_t>(cap->keys[CapabilityID::AUDIO_CHANNELS]);
167     ASSERT_TRUE(channels == 2);
168 }
169 
170 HWTEST(TestMeta, meta_to_string, TestSize.Level1)
171 {
172     Meta meta;
173     meta.Set<Plugin::Tag::AUDIO_MPEG_VERSION>(1);
174     meta.Set<Plugin::Tag::AUDIO_CHANNELS>(2);
175     std::string string = Meta2String(meta);
176     ASSERT_EQ(string, "Meta{channels:(uint32_t)2, ad_mpeg_ver:(uint32_t)1}");
177 }
178 } // namespace Test
179 } // namespace Media
180 } // namespace OHOS
181