1 /*
2  * Copyright (c) 2022-2022 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 #include <chrono>
16 #include <math.h>
17 #include <thread>
18 #include "helper/test_player.hpp"
19 #include "testngpp/testngpp.hpp"
20 #include "foundation/log.h"
21 
22 using namespace OHOS::Media::Test;
23 
24 // @fixture(tags=3daAudio_player_fast)
FIXTURE(DataDriven3DaSinglePlayerTestFast)25 FIXTURE(DataDriven3DaSinglePlayerTestFast)
26 {
27     bool CheckTimeEquality(int32_t expectValue, int32_t currentValue)
28     {
29         MEDIA_LOG_I("expectValue : %d, currentValue : %d", expectValue, currentValue);
30         return fabs(expectValue - currentValue) < 1000; // if open debug log, should use value >= 1000
31     }
32     DATA_PROVIDER(myTsUrls, 1,
33     DATA_GROUP(std::string(RESOURCE_DIR "/TS/h264_aac_270p_10r_voiced.ts")));
34 
35     // @test(data="myTsUrls", tags=3da_audio_play_fast)
36     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_SRC_API_0200)
37     {
38         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
39         ASSERT_EQ(0, player->SetSource(TestSource(url)));
40         ASSERT_EQ(0, player->Prepare());
41         ASSERT_EQ(0, player->Play());
42         ASSERT_EQ(0, player->Pause());
43         ASSERT_EQ(0, player->Play());
44         ASSERT_EQ(0, player->Release());
45     }
46 
47     // @test(data="myTsUrls", tags=3da_audio_play_fast)
48     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Play_API_0200)
49     {
50         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
51         ASSERT_EQ(0, player->SetSource(TestSource(url)));
52         ASSERT_EQ(0, player->Prepare());
53         ASSERT_EQ(0, player->Play());
54         ASSERT_EQ(0, player->Stop());
55         ASSERT_EQ(0, player->Release());
56     }
57 
58     // @test(data="myTsUrls", tags=3da_audio_play_fast)
59     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Play_API_0300)
60     {
61         int64_t timeMs = 5000;
62         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
63         ASSERT_EQ(0, player->SetSource(TestSource(url)));
64         ASSERT_EQ(0, player->Prepare());
65         ASSERT_EQ(0, player->Play());
66         ASSERT_EQ(0, player->Pause());
67         ASSERT_EQ(0, player->Seek(timeMs));
68         ASSERT_EQ(0, player->Release());
69     }
70 
71     // @test(data="myTsUrls", tags=3da_audio_play_fast)
72     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Pause_API_0100)
73     {
74         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
75         ASSERT_NE(0, player->Pause());
76         ASSERT_EQ(0, player->Release());
77     }
78     // @test(data="myTsUrls", tags=3da_audio_play_fast)
79     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Pause_API_0200)
80     {
81         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
82         ASSERT_EQ(0, player->SetSource(TestSource(url)));
83         ASSERT_EQ(0, player->Prepare());
84         ASSERT_EQ(0, player->Play());
85         ASSERT_EQ(0, player->Pause());
86         ASSERT_EQ(0, player->Release());
87     }
88     // @test(data="myTsUrls", tags=3da_audio_play_fast)
89     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Pause_API_0300)
90     {
91         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
92         ASSERT_EQ(0, player->SetSource(TestSource(url)));
93         ASSERT_EQ(0, player->Prepare());
94         ASSERT_EQ(0, player->Play());
95         ASSERT_EQ(0, player->Stop());
96         ASSERT_NE(0, player->Pause());
97         ASSERT_EQ(0, player->Release());
98     }
99     // @test(data="myTsUrls", tags=3da_audio_play_fast)
100     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Pause_API_0400)
101     {
102         int64_t timeMs = 5000;
103         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
104         ASSERT_EQ(0, player->SetSource(TestSource(url)));
105         ASSERT_EQ(0, player->Prepare());
106         ASSERT_EQ(0, player->Play());
107         ASSERT_EQ(0, player->Stop());
108         ASSERT_NE(0, player->Seek(timeMs));
109         ASSERT_NE(0, player->Pause());
110         ASSERT_EQ(0, player->Release());
111     }
112     // @test(data="myTsUrls", tags=3da_audio_play_fast)
113     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Stop_API_0100)
114     {
115         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
116         ASSERT_EQ(0, player->SetSource(TestSource(url)));
117         ASSERT_EQ(0, player->Prepare());
118         ASSERT_EQ(0, player->Play());
119         ASSERT_EQ(0, player->Stop());
120         ASSERT_EQ(0, player->Release());
121     }
122     // @test(data="myTsUrls", tags=3da_audio_play_fast)
123     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Stop_API_0200)
124     {
125         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
126         ASSERT_EQ(0, player->SetSource(TestSource(url)));
127         ASSERT_EQ(0, player->Prepare());
128         ASSERT_EQ(0, player->Play());
129         ASSERT_EQ(0, player->Pause());
130         ASSERT_EQ(0, player->Stop());
131         ASSERT_EQ(0, player->Release());
132     }
133     // @test(data="myTsUrls", tags=3da_audio_play_fast)
134     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Stop_API_0300)
135     {
136         int64_t timeMs = 5000;
137         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
138         ASSERT_EQ(0, player->SetSource(TestSource(url)));
139         ASSERT_EQ(0, player->Prepare());
140         ASSERT_EQ(0, player->Play());
141         ASSERT_EQ(0, player->Seek(timeMs));
142         ASSERT_EQ(0, player->Stop());
143         ASSERT_EQ(0, player->Release());
144     }
145     // @test(data="myTsUrls", tags=3da_audio_play_fast)
146     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Seek_API_0100)
147     {
148         int64_t timeMs = 5000;
149         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
150         ASSERT_EQ(0, player->SetSource(TestSource(url)));
151         ASSERT_EQ(0, player->Prepare());
152         ASSERT_EQ(0, player->Play());
153         ASSERT_EQ(0, player->Seek(timeMs));
154         ASSERT_EQ(0, player->Release());
155     }
156     // @test(data="myTsUrls", tags=3da_audio_play_fast)
157     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Seek_API_0200)
158     {
159         int64_t timeMs = 5000;
160         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
161         ASSERT_EQ(0, player->SetSource(TestSource(url)));
162         ASSERT_EQ(0, player->Prepare());
163         ASSERT_EQ(0, player->Play());
164         ASSERT_EQ(0, player->Pause());
165         ASSERT_EQ(0, player->Seek(timeMs));
166         ASSERT_EQ(0, player->Release());
167     }
168     // @test(data="myTsUrls", tags=3da_audio_play_fast)
169     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Seek_API_0300)
170     {
171         int64_t timeMs = 0;
172         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
173         ASSERT_EQ(0, player->SetSource(TestSource(url)));
174         ASSERT_EQ(0, player->Prepare());
175         ASSERT_EQ(0, player->Play());
176         ASSERT_EQ(0, player->Seek(timeMs));
177         ASSERT_EQ(0, player->Release());
178     }
179     // @test(data="myTsUrls", tags=3da_audio_play_fast)
180     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Reset_API_0100)
181     {
182         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
183         ASSERT_EQ(0, player->SetSource(TestSource(url)));
184         ASSERT_EQ(0, player->Prepare());
185         ASSERT_EQ(0, player->Play());
186         ASSERT_EQ(0, player->Reset());
187         ASSERT_EQ(0, player->Release());
188     }
189     // @test(data="myTsUrls", tags=3da_audio_play_fast)
190     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Reset_API_0200)
191     {
192         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
193         ASSERT_EQ(0, player->SetSource(TestSource(url)));
194         ASSERT_EQ(0, player->Prepare());
195         ASSERT_EQ(0, player->Play());
196         ASSERT_EQ(0, player->Pause());
197         ASSERT_EQ(0, player->Reset());
198         ASSERT_EQ(0, player->Release());
199     }
200     // @test(data="myTsUrls", tags=3da_audio_play_fast)
201     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_SetVolume_API_0100/0200)
202     {
203         float lv = 0.5;
204         float rv = 0.5;
205         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
206         ASSERT_EQ(0, player->SetSource(TestSource(url)));
207         ASSERT_EQ(0, player->Prepare());
208         ASSERT_EQ(0, player->Play());
209         ASSERT_EQ(0, player->SetVolume(lv, rv));
210         ASSERT_EQ(0, player->Release());
211     }
212     // @test(data="myTsUrls", tags=3da_audio_play_fast)
213     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_SetVolume_API_0300)
214     {
215         float lv = 0.5;
216         float rv = 0.5;
217         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
218         ASSERT_EQ(0, player->SetSource(TestSource(url)));
219         ASSERT_EQ(0, player->Prepare());
220         ASSERT_EQ(0, player->Play());
221         ASSERT_EQ(0, player->Pause());
222         ASSERT_EQ(0, player->SetVolume(lv, rv));
223         ASSERT_EQ(0, player->Release());
224     }
225 
226     // @test(data="myTsUrls", tags=3da_audio_play_fast)
227     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Release_API_0100/0200)
228     {
229         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
230         ASSERT_EQ(0, player->SetSource(TestSource(url)));
231         ASSERT_EQ(0, player->Prepare());
232         ASSERT_EQ(0, player->Play());
233         ASSERT_EQ(0, player->Pause());
234         ASSERT_EQ(0, player->Release());
235     }
236     // @test(data="myTsUrls", tags=3da_audio_play_fast)
237     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Release_API_0300)
238     {
239         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
240         ASSERT_EQ(0, player->SetSource(TestSource(url)));
241         ASSERT_EQ(0, player->Prepare());
242         ASSERT_EQ(0, player->Play());
243         ASSERT_EQ(0, player->Stop());
244         ASSERT_EQ(0, player->Release());
245     }
246     // @test(data="myTsUrls", tags=3da_audio_play_fast)
247     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Release_API_0400)
248     {
249         int64_t timeMs = 5000;
250         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
251         ASSERT_EQ(0, player->SetSource(TestSource(url)));
252         ASSERT_EQ(0, player->Prepare());
253         ASSERT_EQ(0, player->Play());
254         ASSERT_EQ(0, player->Seek(timeMs));
255         ASSERT_EQ(0, player->Release());
256     }
257     // @test(data="myTsUrls", tags=3da_audio_play_fast)
258     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Release_API_0500)
259     {
260         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
261         ASSERT_EQ(0, player->SetSource(TestSource(url)));
262         ASSERT_EQ(0, player->Prepare());
263         ASSERT_EQ(0, player->Play());
264         ASSERT_EQ(0, player->Reset());
265         ASSERT_EQ(0, player->Release());
266     }
267     // @test(data="myTsUrls", tags=3da_audio_play_fast)
268     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Time_API_0100)
269     {
270         int64_t durationMs;
271         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
272         ASSERT_EQ(0, player->SetSource(TestSource(url)));
273         ASSERT_EQ(0, player->Prepare());
274         ASSERT_EQ(0, player->Play());
275         std::this_thread::sleep_for(std::chrono::milliseconds(1000));
276         ASSERT_EQ(0, player->GetDuration(durationMs));
277         ASSERT_TRUE(CheckTimeEquality(3010, durationMs)); // 3010---duration of audio
278         ASSERT_EQ(0, player->Release());
279     }
280     // @test(data="myTsUrls", tags=3da_audio_play_fast)
281     PTEST((std::string url), SUB_MEDIA_PLAYER_AudioPlayer_Play_API_0400)
282     {
283         std::unique_ptr<TestPlayer> player = TestPlayer::Create();
284         ASSERT_EQ(0, player->SetSource(TestSource(url)));
285         ASSERT_EQ(0, player->Prepare());
286         ASSERT_EQ(0, player->Reset());
287         ASSERT_NE(0, player->Play());
288         ASSERT_EQ(0, player->Release());
289     }
290 };
291 
292