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