• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "ringtone_metadata_extractor_test.h"
17 
18 #include <string>
19 
20 #include "ability_context_impl.h"
21 #include "ringtone_data_manager.h"
22 #include "ringtone_errno.h"
23 #include "ringtone_log.h"
24 #define private public
25 #include "ringtone_metadata_extractor.h"
26 #undef private
27 #include "ringtone_scanner_db.h"
28 #include "ringtone_unittest_utils.h"
29 
30 using namespace std;
31 using namespace OHOS;
32 using namespace testing::ext;
33 
34 namespace OHOS {
35 namespace Media {
SetUpTestCase()36 void RingtoneMetadataExtractorTest::SetUpTestCase()
37 {
38     auto stageContext = std::make_shared<AbilityRuntime::ContextImpl>();
39     auto abilityContextImpl = std::make_shared<OHOS::AbilityRuntime::AbilityContextImpl>();
40     abilityContextImpl->SetStageContext(stageContext);
41     auto ret = RingtoneDataManager::GetInstance()->Init(abilityContextImpl);
42     EXPECT_EQ(ret, E_OK);
43 }
44 
TearDownTestCase()45 void RingtoneMetadataExtractorTest::TearDownTestCase()
46 {
47     auto dataManager = RingtoneDataManager::GetInstance();
48     EXPECT_NE(dataManager, nullptr);
49     dataManager->ClearRingtoneDataMgr();
50 }
51 
52 // SetUp:Execute before each test case
SetUp()53 void RingtoneMetadataExtractorTest::SetUp() {}
54 
TearDown(void)55 void RingtoneMetadataExtractorTest::TearDown(void) {}
56 
57 HWTEST_F(RingtoneMetadataExtractorTest, metadataExtractor_Extract_test_001, TestSize.Level0)
58 {
59     unique_ptr<RingtoneMetadata> data = make_unique<RingtoneMetadata>();
60     unique_ptr<RingtoneScannerDb> ringtoneScannerDb;
61     ringtoneScannerDb->GetFileBasicInfo(STORAGE_FILES_DIR, data);
62     data->SetMediaType(static_cast<RingtoneMediaType>(RINGTONE_MEDIA_TYPE_AUDIO));
63     int32_t ret = RingtoneMetadataExtractor::Extract(data);
64     EXPECT_EQ(ret, E_AVMETADATA);
65 }
66 
67 HWTEST_F(RingtoneMetadataExtractorTest, metadataExtractor_Extract_test_002, TestSize.Level0)
68 {
69     unique_ptr<RingtoneMetadata> data = make_unique<RingtoneMetadata>();
70     unique_ptr<RingtoneScannerDb> ringtoneScannerDb;
71     ringtoneScannerDb->GetFileBasicInfo(STORAGE_FILES_DIR, data);
72     data->SetMediaType(static_cast<RingtoneMediaType>(RINGTONE_MEDIA_TYPE_INVALID));
73     int32_t ret = RingtoneMetadataExtractor::Extract(data);
74     EXPECT_EQ(ret, E_AVMETADATA);
75 }
76 
77 HWTEST_F(RingtoneMetadataExtractorTest, metadataExtractor_FillExtractedMetadata_test_001, TestSize.Level0)
78 {
79     unique_ptr<RingtoneMetadata> data = make_unique<RingtoneMetadata>();
80     unique_ptr<RingtoneScannerDb> ringtoneScannerDb;
81     const int modifiedTime = 11;
82     ringtoneScannerDb->GetFileBasicInfo(STORAGE_FILES_DIR, data);
83     data->SetMediaType(static_cast<RingtoneMediaType>(RINGTONE_MEDIA_TYPE_AUDIO));
84     data->SetData(STORAGE_FILES_DIR);
85     data->SetDateModified(static_cast<int64_t>(modifiedTime));
86     unordered_map<int32_t, std::string> resultMap;
87     resultMap = { { Media::AV_KEY_DURATION, "" }, { Media::AV_KEY_DATE_TIME_FORMAT, "" },
88         { Media::AV_KEY_MIME_TYPE, "" }, { Media::AV_KEY_TITLE, "" } };
89     RingtoneMetadataExtractor::FillExtractedMetadata(resultMap, data);
90     EXPECT_EQ(data->GetTitle(), "");
91 }
92 
93 HWTEST_F(RingtoneMetadataExtractorTest, metadataExtractor_FillExtractedMetadata_test_002, TestSize.Level0)
94 {
95     unique_ptr<RingtoneMetadata> data = make_unique<RingtoneMetadata>();
96     unique_ptr<RingtoneScannerDb> ringtoneScannerDb;
97     const int modifiedTime = 13;
98     ringtoneScannerDb->GetFileBasicInfo(STORAGE_FILES_DIR, data);
99     data->SetMediaType(static_cast<RingtoneMediaType>(RINGTONE_MEDIA_TYPE_AUDIO));
100     data->SetData(STORAGE_FILES_DIR);
101     data->SetDateModified(static_cast<int64_t>(modifiedTime));
102     unordered_map<int32_t, std::string> resultMap;
103     resultMap = { { Media::AV_KEY_DURATION, "a" }, { Media::AV_KEY_DATE_TIME_FORMAT, "a" },
104         { Media::AV_KEY_MIME_TYPE, "a" }, { Media::AV_KEY_TITLE, "a" } };
105     RingtoneMetadataExtractor::FillExtractedMetadata(resultMap, data);
106     EXPECT_EQ(data->GetTitle(), "a");
107     const string timeKey = "2021-10-1 15:00:00";
108     resultMap = { { Media::AV_KEY_DURATION, "a" }, { Media::AV_KEY_DATE_TIME_FORMAT,  timeKey},
109         { Media::AV_KEY_MIME_TYPE, "a" }, { Media::AV_KEY_TITLE, "a" } };
110     RingtoneMetadataExtractor::FillExtractedMetadata(resultMap, data);
111     EXPECT_EQ(data->GetTitle(), "a");
112 }
113 
114 HWTEST_F(RingtoneMetadataExtractorTest, metadataExtractor_ExtractAudioMetadata_test_001, TestSize.Level0)
115 {
116     unique_ptr<RingtoneMetadata> data = make_unique<RingtoneMetadata>();
117     unique_ptr<RingtoneScannerDb> ringtoneScannerDb;
118     ringtoneScannerDb->GetFileBasicInfo(STORAGE_FILES_DIR, data);
119     data->SetMediaType(static_cast<RingtoneMediaType>(RINGTONE_MEDIA_TYPE_AUDIO));
120     int32_t ret = RingtoneMetadataExtractor::ExtractAudioMetadata(data);
121     EXPECT_EQ(ret, E_AVMETADATA);
122     data->SetData(STORAGE_FILES_DIR);
123     ret = RingtoneMetadataExtractor::ExtractAudioMetadata(data);
124     EXPECT_NE(ret, E_OK);
125     data->SetData("ExtractAudioMetadata");
126     ret = RingtoneMetadataExtractor::ExtractAudioMetadata(data);
127     EXPECT_EQ((ret == E_SYSCALL || ret == E_AVMETADATA), true);
128 }
129 
130 HWTEST_F(RingtoneMetadataExtractorTest, metadataExtractor_FillExtractedMetadata_test_003, TestSize.Level0)
131 {
132     RINGTONE_INFO_LOG("metadataExtractor_FillExtractedMetadata_test_003 start.");
133     unique_ptr<RingtoneMetadata> data = make_unique<RingtoneMetadata>();
134     unordered_map<int32_t, std::string> resultMap;
135     const string timeKey = "1600-01-01 00:00:00";
136     resultMap = { { Media::AV_KEY_DURATION, "-123456" }, { Media::AV_KEY_DATE_TIME_FORMAT,  timeKey},
137         { Media::AV_KEY_MIME_TYPE, "a" }, { Media::AV_KEY_TITLE, "a" } };
138     RingtoneMetadataExtractor::FillExtractedMetadata(resultMap, data);
139     EXPECT_EQ(data->GetTitle(), "a");
140     RINGTONE_INFO_LOG("metadataExtractor_FillExtractedMetadata_test_003 end.");
141 }
142 
143 } // namespace Media
144 } // namespace OHOS
145