提交 5588ef72 编写于 作者: F fulizhong

add httpPlayer testcases Signed-off-by: FULIZHONG<fulizhong@huawei.com>

Signed-off-by: Nfulizhong <fulizhong@huawei.com>
上级 b8b06d68
# Copyright (C) 2022 Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import("//test/xts/tools/build/suite.gni")
ohos_js_hap_suite("http_player_js_hap") {
hap_profile = "./src/main/config.json"
js2abc = true
deps = [
":http_player_js_assets",
":http_player_resources",
]
# shared_libraries = [
# "//third_party/giflib:libgif",
# "//third_party/libpng:libpng",
# ]
certificate_profile = "./signature/openharmony_sx.p7b"
hap_name = "HttpPlayerJsTest"
# part_name = "prebuilt_hap"
# subsystem_name = "xts"
}
ohos_js_assets("http_player_js_assets") {
source_dir = "./src/main/js/default"
}
ohos_resources("http_player_resources") {
sources = [ "./src/main/resources" ]
hap_profile = "./src/main/config.json"
}
{
"description": "Configuration for httpplayer Tests",
"driver": {
"type": "JSUnitTest",
"test-timeout": "2000000",
"package": "ohos.acts.multimedia.http.httpplayer",
"shell-timeout": "60000"
},
"kits": [
{
"type": "PushKit",
"pre-push": [
],
"push": [
]
},
{
"type": "ShellKit",
"run-command": [
],
"teardown-command":[
]
},
{
"test-file-name": [
"HttpPlayerJsTest.hap"
],
"type": "AppInstallKit",
"cleanup-apps": true
}
]
}
{
"app": {
"apiVersion": {
"compatible": 6,
"releaseType": "Beta1",
"target": 7
},
"vendor": "acts",
"bundleName": "ohos.acts.multimedia.http.httpplayer",
"version": {
"code": 1000000,
"name": "1.0.0"
}
},
"deviceConfig": {
"default": {
"debug": true
}
},
"module": {
"abilities": [
{
"iconId": 16777218,
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
],
"descriptionId": 16777217,
"visible": true,
"labelId": 16777216,
"icon": "$media:icon",
"name": "ohos.acts.multimedia.http.httpplayer.MainAbility",
"description": "$string:mainability_description",
"label": "$string:entry_MainAbility",
"type": "page",
"homeAbility": true,
"launchType": "standard"
}
],
"deviceType": [
"phone",
"tablet",
"tv",
"wearable"
],
"mainAbility": "ohos.acts.multimedia.http.httpplayer.MainAbility",
"distro": {
"moduleType": "entry",
"installationFree": false,
"deliveryWithInstall": true,
"moduleName": "entry"
},
"package": "ohos.acts.multimedia.http.httpplayer",
"name": ".MyApplication",
"js": [
{
"pages": [
"pages/index/index",
"pages/surfaceTest/surfaceTest"
],
"name": "default",
"window": {
"designWidth": 720,
"autoDesignWidth": true
}
}
]
}
}
\ No newline at end of file
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export default {
onCreate() {
console.info('AceApplication onCreate');
},
onDestroy() {
console.info('AceApplication onDestroy');
}
};
{
"strings": {
"hello": "Hello",
"world": "World"
}
}
\ No newline at end of file
{
"strings": {
"hello": "您好",
"world": "世界"
}
}
\ No newline at end of file
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
.container {
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
.title {
font-size: 40px;
color: #000000;
opacity: 0.9;
}
@media screen and (device-type: tablet) and (orientation: landscape) {
.title {
font-size: 100px;
}
}
@media screen and (device-type: wearable) {
.title {
font-size: 28px;
color: #FFFFFF;
}
}
@media screen and (device-type: tv) {
.container {
background-image: url("/common/images/Wallpaper.png");
background-size: cover;
background-repeat: no-repeat;
background-position: center;
}
.title {
font-size: 100px;
color: #FFFFFF;
}
}
@media screen and (device-type: phone) and (orientation: landscape) {
.title {
font-size: 60px;
}
}
<!--
Copyright (c) 2022 Huawei Device Co., Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<div class="container">
<text class="title">
{{ $t('strings.hello') }} {{ title }}
</text>
<Xcomponent id = 'XcomponentId'
type = 'surface'
onload = 'LoadXcomponent'
style = "width:720px;height:480px;border-color:red;border-width:5px">
</Xcomponent>
</div>
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {Core, ExpectExtend} from 'deccjsunit/index'
export default {
data: {
title: ""
},
onInit() {
this.title = this.$t('strings.world');
},
onShow() {
console.info('onShow finish')
const core = Core.getInstance()
const expectExtend = new ExpectExtend({
'id': 'extend'
})
core.addService('expect', expectExtend)
core.init()
const configService = core.getDefaultService('config')
this.timeout = 60000
configService.setConfig(this)
setTimeout(function() {
require('../../../test/List.test')
core.execute()
}, 2000)
},
onReady() {
},
LoadXcomponent() {
globalThis.value = this.$element('XcomponentId').getComponentSurfaceId()
},
}
\ No newline at end of file
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
.container {
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
.title {
font-size: 40px;
color: #000000;
opacity: 0.9;
}
@media screen and (device-type: tablet) and (orientation: landscape) {
.title {
font-size: 100px;
}
}
@media screen and (device-type: wearable) {
.title {
font-size: 28px;
color: #FFFFFF;
}
}
@media screen and (device-type: tv) {
.container {
background-image: url("/common/images/Wallpaper.png");
background-size: cover;
background-repeat: no-repeat;
background-position: center;
}
.title {
font-size: 100px;
color: #FFFFFF;
}
}
@media screen and (device-type: phone) and (orientation: landscape) {
.title {
font-size: 60px;
}
}
<!--
Copyright (c) 2022 Huawei Device Co., Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<div class="container">
<text class="title">
VideoPlayer Test
</text>
<Xcomponent id = 'XcomponentId2'
type = 'surface'
onload = 'LoadXcomponent2'
style = "width:720px;height:480px;border-color:red;border-width:5px">
</Xcomponent>
</div>
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {Core, ExpectExtend} from 'deccjsunit/index'
import Fileio from '@ohos.fileio'
export default {
data: {
title: ""
},
onInit() {
this.title = this.$t('strings.world');
},
onShow() {
},
onReady() {
},
LoadXcomponent2() {
globalThis.value = this.$element('XcomponentId2').getXComponentSurfaceId()
},
}
\ No newline at end of file
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import media from '@ohos.multimedia.media'
import Fileio from '@ohos.fileio'
import router from '@system.router'
import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index'
describe('HttpPlayerFuncPromiseTest', function () {
const BASE_PATH = 'http://123.57.24.33:8000/'
const PLAY_TIME = 3000;
const SEEK_TIME = 5000;
const MAX_VOLUME = 1;
const DELTA_TIME = 1000;
let isToSeek = false;
let isToDuration = false;
let surfaceID = '';
beforeAll(function() {
console.info('beforeAll case');
})
beforeEach(async function() {
await toNewPage();
await msleep(1000).then(() => {
}, failureCallback).catch(catchCallback);
isToSeek = false;
isToDuration = false;
console.info('beforeEach case');
})
afterEach(async function() {
await router.clear();
console.info('afterEach case');
})
afterAll(function() {
console.info('afterAll case');
})
function sleep(time) {
for(let t = Date.now(); Date.now() - t <= time;);
}
function msleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
function failureCallback(error) {
expect().assertFail();
console.info(`case error called,errMessage is ${error.message}`);
}
function catchCallback(error) {
expect().assertFail();
console.info(`case error called,errMessage is ${error.message}`);
}
function printfDescription(obj) {
let description = "";
for(let i in obj) {
let property = obj[i];
console.info('case key is '+ i);
console.info('case value is '+ property);
description += i + " = " + property + "\n";
}
}
async function toNewPage() {
let path = 'pages/surfaceTest/surfaceTest';
let options = {
uri: path,
}
try {
let result = await router.push(options);
} catch {
console.info('case route failed');
}
}
async function playAudioSource(audioSource, done) {
let audioPlayer = media.createAudioPlayer();
audioPlayer.on('dataLoad', () => {
console.info('case set source success');
expect(audioPlayer.state).assertEqual('paused');
expect(audioPlayer.currentTime).assertEqual(0);
audioPlayer.play();
});
audioPlayer.on('play', () => {
console.info('case start to play');
expect(audioPlayer.state).assertEqual('playing');
sleep(PLAY_TIME);
if (!isToSeek) {
audioPlayer.pause();
} else {
audioPlayer.seek(SEEK_TIME);
}
});
audioPlayer.on('pause', () => {
console.info('case now is paused');
expect(audioPlayer.state).assertEqual('paused');
audioPlayer.setVolume(MAX_VOLUME);
});
audioPlayer.on('stop', () => {
console.info('case stop success');
expect(audioPlayer.state).assertEqual('stopped');
audioPlayer.reset();
});
audioPlayer.on('reset', () => {
console.info('case reset success');
expect(audioPlayer.state).assertEqual('idle');
audioPlayer.release();
audioPlayer = undefined;
done();
});
audioPlayer.on('timeUpdate', (seekDoneTime) => {
if (typeof (seekDoneTime) == "undefined") {
console.info(`case seek filed,errcode is ${seekDoneTime}`);
audioPlayer.release();
expect().assertFail();
done();
return;
}
console.info('case seek success, and seek time is ' + seekDoneTime);
if (!isToDuration) {
expect(SEEK_TIME).assertEqual(seekDoneTime);
isToDuration = true;
sleep(PLAY_TIME);
audioPlayer.seek(audioPlayer.duration);
} else {
expect(audioPlayer.duration).assertEqual(seekDoneTime);
}
});
audioPlayer.on('volumeChange', () => {
console.info('case set volume value to ' + MAX_VOLUME);
audioPlayer.play();
isToSeek = true;
});
audioPlayer.on('finish', () => {
console.info('case play end');
expect(audioPlayer.state).assertEqual('stopped');
audioPlayer.stop();
});
audioPlayer.on('error', (err) => {
console.info(`case error called,errName is ${err.name}`);
console.info(`case error called,errCode is ${err.code}`);
console.info(`case error called,errMessage is ${err.message}`);
audioPlayer.release();
expect().assertFail();
done();
});
audioPlayer.src = audioSource;
}
async function playVideoSource(path) {
let videoPlayer = null;
surfaceID = globalThis.value;
await media.createVideoPlayer().then((video) => {
if (typeof (video) != 'undefined') {
console.info('case createVideoPlayer success');
videoPlayer = video;
} else {
console.info('case createVideoPlayer is failed');
expect().assertFail();
}
}, failureCallback).catch(catchCallback);
videoPlayer.on('error', (err) => {
console.info(`case error called,errMessage is ${err.message}`);
expect().assertFail();
});
videoPlayer.url = path;
await videoPlayer.setDisplaySurface(surfaceID).then(() => {
console.info('case setDisplaySurface success');
}, failureCallback).catch(catchCallback);
await videoPlayer.prepare().then(() => {
console.info('case prepare called!!');
}, failureCallback).catch(catchCallback);
await videoPlayer.getTrackDescription().then((arrayList) => {
console.info('case getTrackDescription called!!');
if (typeof (arrayList) != 'undefined') {
for (let i = 0; i < arrayList.length; i++) {
printfDescription(arrayList[i]);
}
} else {
console.info('case getTrackDescription is failed');
expect().assertFail();
}
}, failureCallback).catch(catchCallback);
let startTime = videoPlayer.currentTime;
await videoPlayer.play().then(() => {
console.info('case play called!!');
sleep(PLAY_TIME);
}, failureCallback).catch(catchCallback);
let endTime = videoPlayer.currentTime;
expect(endTime - startTime).assertClose(PLAY_TIME, DELTA_TIME);
await videoPlayer.pause().then(() => {
console.info('case pause called!!');
}, failureCallback).catch(catchCallback);
await videoPlayer.seek(SEEK_TIME).then((seekDoneTime) => {
console.info('case seek called and seekDoneTime is' + seekDoneTime);
}, failureCallback).catch(catchCallback);
await videoPlayer.play().then(() => {
console.info('case play called!!');
sleep(PLAY_TIME);
}, failureCallback).catch(catchCallback);
await videoPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_0_75_X).then((speedMode) => {
console.info('case setSpeed called and speedMode is ' + speedMode);
}, failureCallback).catch(catchCallback);
await videoPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_1_00_X).then((speedMode) => {
console.info('case setSpeed called and speedMode is ' + speedMode);
}, failureCallback).catch(catchCallback);
await videoPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_1_25_X).then((speedMode) => {
console.info('case setSpeed called and speedMode is ' + speedMode);
}, failureCallback).catch(catchCallback);
await videoPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_1_75_X).then((speedMode) => {
console.info('case setSpeed called and speedMode is ' + speedMode);
}, failureCallback).catch(catchCallback);
await videoPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_2_00_X).then((speedMode) => {
console.info('case setSpeed called and speedMode is ' + speedMode);
}, failureCallback).catch(catchCallback);
await videoPlayer.setVolume(1).then(() => {
console.info('case setVolume called');
}, failureCallback).catch(catchCallback);
await videoPlayer.stop().then(() => {
console.info('case stop called!!');
}, failureCallback).catch(catchCallback);
await videoPlayer.reset().then(() => {
console.info('case reset called!!');
}, failureCallback).catch(catchCallback);
await videoPlayer.release().then(() => {
console.info('case release called!!');
}, failureCallback).catch(catchCallback);
}
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MP4_0100
* @tc.name : 001.H264_AAC
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MP4_0100', 0, async function (done) {
let path = BASE_PATH + 'H264_AAC.mp4';
await playVideoSource(path);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MP4_0200
* @tc.name : 002.H264_MP3
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MP4_0200', 0, async function (done) {
let path = BASE_PATH + 'H264_MP3.mp4';
await playVideoSource(path);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_TS_0100
* @tc.name : 001.H264_AAC
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_TS_0100', 0, async function (done) {
let path = BASE_PATH + 'H264_AAC.ts';
await playVideoSource(path);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_TS_0200
* @tc.name : 002.H264_MP3
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_TS_0200', 0, async function (done) {
let path = BASE_PATH + 'H264_MP3.ts';
await playVideoSource(path);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MKV_0100
* @tc.name : 001.H264_AAC
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MKV_0100', 0, async function (done) {
let path = BASE_PATH + 'H264_AAC.mkv';
await playVideoSource(path);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MKV_0200
* @tc.name : 002.H264_MP3
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MKV_0200', 0, async function (done) {
let path = BASE_PATH + 'H264_MP3.mkv';
await playVideoSource(path);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MKV_0500
* @tc.name : 005.MPEG2_AAC
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MKV_0500', 0, async function (done) {
let path = BASE_PATH + 'MPEG2_AAC.mkv';
await playVideoSource(path);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MKV_0600
* @tc.name : 006.MPEG2_MP3
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MKV_0600', 0, async function (done) {
let path = BASE_PATH + 'MPEG2_MP3.mkv';
await playVideoSource(path);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MKV_0800
* @tc.name : 008.MPEG4_MP3
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_MKV_0800', 0, async function (done) {
let path = BASE_PATH + 'MPEG4_MP3.mkv';
await playVideoSource(path);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_WEBM_0100
* @tc.name : 001.VP8_VORBIS
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FORMAT_WEBM_0100', 0, async function (done) {
let path = BASE_PATH + 'VP8_VORBIS.webm';
await playVideoSource(path);
done();
})
/* *
* @tc.number : SUB_MEDIA_AUDIO_PLAYER_HTTP_FORMAT_MP3_0100
* @tc.name : 001.MP3
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_AUDIO_PLAYER_HTTP_FORMAT_MP3_0100', 0, async function (done) {
let path = BASE_PATH + 'MP3.mp3';
await playAudioSource(path, done);
})
/* *
* @tc.number : SUB_MEDIA_AUDIO_PLAYER_HTTP_FORMAT_AAC_0100
* @tc.name : 001.AAC
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_AUDIO_PLAYER_HTTP_FORMAT_AAC_0100', 0, async function (done) {
let path = BASE_PATH + 'AAC.aac';
await playAudioSource(path, done);
})
/* *
* @tc.number : SUB_MEDIA_AUDIO_PLAYER_HTTP_FORMAT_WAV_0100
* @tc.name : 001.MP3
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_AUDIO_PLAYER_HTTP_FORMAT_WAV_0100', 0, async function (done) {
let path = BASE_PATH + 'PCM.wav';
await playAudioSource(path, done);
})
/* *
* @tc.number : SUB_MEDIA_AUDIO_PLAYER_HTTP_FORMAT_FLAC_0100
* @tc.name : 001.FLAC
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_AUDIO_PLAYER_HTTP_FORMAT_FLAC_0100', 0, async function (done) {
let path = BASE_PATH + 'FLAC.flac';
await playAudioSource(path, done);
})
/* *
* @tc.number : SUB_MEDIA_AUDIO_PLAYER_HTTP_FORMAT_M4A_0100
* @tc.name : 001.M4A
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_AUDIO_PLAYER_HTTP_FORMAT_M4A_0100', 0, async function (done) {
let path = BASE_PATH + 'AAC.m4a';
await playAudioSource(path, done);
})
/* *
* @tc.number : SUB_MEDIA_AUDIO_PLAYER_HTTP_FORMAT_OGG_0100
* @tc.name : 001.OGG
* @tc.desc : Http playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_AUDIO_PLAYER_HTTP_FORMAT_OGG_0100', 0, async function (done) {
let path = BASE_PATH + 'OGG.ogg';
await playAudioSource(path, done);
})
})
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import media from '@ohos.multimedia.media'
import router from '@system.router'
import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index'
describe('HttpPlayerFuncCallbackTest', function () {
const HTTP_SOURCE = 'http://123.57.24.33:8000/MPEG2_AAC.mp4'
const PLAY_TIME = 3000;
const SEEK_TIME = 2100;
const WIDTH_VALUE = 720;
const HEIGHT_VALUE = 480;
const DURATION_TIME = 10034;
const CREATE_EVENT = 'create';
const SETSURFACE_EVENT = 'setDisplaySurface';
const GETDESCRIPTION = 'getTrackDescription';
const PREPARE_EVENT = 'prepare';
const PLAY_EVENT = 'play';
const PAUSE_EVENT = 'pause';
const STOP_EVENT = 'stop';
const RESET_EVENT = 'reset';
const RELEASE_EVENT = 'release';
const SEEK_EVENT = 'seek';
const SEEK_MODE_EVENT = 'seekMode';
const SETVOLUME_EVENT = 'volume';
const SETSPEED_EVENT = 'speed';
const END_EVENT = 'end';
const VOLUME_VALUE = 1;
const SPEED_VALUE = 1;
const DELTA_TIME = 1000;
const NEXT_FRAME_TIME = 2200;
const PREV_FRAME_TIME = 2000;
let surfaceID = '';
let events = require('events');
let eventEmitter = new events.EventEmitter();
beforeAll(function() {
console.info('beforeAll case');
})
beforeEach(async function() {
await toNewPage();
await msleep(1000).then(() => {
}, failureCallback).catch(catchCallback);
console.info('beforeEach case');
})
afterEach(async function() {
await router.clear();
console.info('afterEach case');
})
afterAll(async function() {
console.info('afterAll case');
})
function sleep(time) {
for(let t = Date.now(); Date.now() - t <= time;);
}
async function toNewPage() {
let path = 'pages/surfaceTest/surfaceTest';
let options = {
uri: path,
}
try {
let result = await router.push(options);
} catch {
console.info('case route failed');
}
}
function msleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
function failureCallback(error) {
expect().assertFail();
console.info(`case error called,errMessage is ${error.message}`);
}
function catchCallback(error) {
expect().assertFail();
console.info(`case error called,errMessage is ${error.message}`);
}
function printfError(error, done) {
expect().assertFail();
console.info(`case error called,errMessage is ${error.message}`);
done();
}
function printfDescription(obj) {
let description = "";
for(let i in obj) {
let property = obj[i];
console.info('case key is '+ i);
console.info('case value is '+ property);
description += i + " = " + property + "\n";
}
}
function toNextStep(videoPlayer, steps, done) {
if (steps[0] == END_EVENT) {
console.info('case success!!');
done();
} else {
eventEmitter.emit(steps[0], videoPlayer, steps, done);
}
}
function setOnCallback(videoPlayer) {
videoPlayer.on('playbackCompleted', () => {
console.info('case playbackCompleted success');
});
videoPlayer.on('bufferingUpdate', (infoType, value) => {
console.info('case bufferingUpdate success infoType is ' + infoType);
console.info('case bufferingUpdate success value is ' + value);
});
videoPlayer.on('startRenderFrame', () => {
console.info('case startRenderFrame success');
});
videoPlayer.on('videoSizeChanged', (width, height) => {
expect(width).assertEqual(WIDTH_VALUE);
expect(height).assertEqual(HEIGHT_VALUE);
console.info('case videoSizeChanged success width is ' + width);
console.info('case videoSizeChanged success height is ' + height);
});
videoPlayer.on('error', (error) => {
console.info(`case error called,errMessage is ${error.message}`);
});
}
eventEmitter.on(CREATE_EVENT, (videoPlayer, steps, done) => {
steps.shift();
media.createVideoPlayer((err, video) => {
if (typeof (video) != 'undefined') {
videoPlayer = video;
setOnCallback(videoPlayer);
expect(videoPlayer.state).assertEqual('idle');
console.info('case createVideoPlayer success!!');
toNextStep(videoPlayer, steps, done);
} else {
printfError(err, done);
}
});
});
eventEmitter.on(SETSURFACE_EVENT, (videoPlayer, steps, done) => {
steps.shift();
videoPlayer.url = HTTP_SOURCE;
videoPlayer.setDisplaySurface(surfaceID, (err) => {
if (typeof (err) == 'undefined') {
expect(videoPlayer.state).assertEqual('idle');
console.info('case setDisplaySurface success!!');
toNextStep(videoPlayer, steps, done);
} else {
printfError(err, done);
}
})
});
eventEmitter.on(PREPARE_EVENT, (videoPlayer, steps, done) => {
steps.shift();
videoPlayer.url = HTTP_SOURCE;
videoPlayer.prepare((err) => {
if (typeof (err) == 'undefined') {
expect(videoPlayer.state).assertEqual('prepared');
expect(videoPlayer.duration).assertEqual(DURATION_TIME);
expect(videoPlayer.width).assertEqual(WIDTH_VALUE);
expect(videoPlayer.height).assertEqual(HEIGHT_VALUE);
console.info('case prepare success!!');
toNextStep(videoPlayer, steps, done);
} else {
printfError(err, done);
}
});
});
eventEmitter.on(GETDESCRIPTION, (videoPlayer, steps, done) => {
steps.shift();
videoPlayer.getTrackDescription((err, arrlist) => {
if (typeof (err) == 'undefined') {
for (let i = 0; i < arrlist.length; i++) {
printfDescription(arrlist[i]);
}
toNextStep(videoPlayer, steps, done);
} else {
printfError(err, done);
}
});
});
eventEmitter.on(PLAY_EVENT, (videoPlayer, steps, done) => {
steps.shift();
let startTime = videoPlayer.currentTime;
videoPlayer.play((err) => {
if (typeof (err) == 'undefined') {
expect(videoPlayer.state).assertEqual('playing');
console.info('case play success!!');
sleep(PLAY_TIME);
let endTime = videoPlayer.currentTime;
expect(endTime - startTime).assertClose(PLAY_TIME, DELTA_TIME);
toNextStep(videoPlayer, steps, done);
} else {
printfError(err, done);
}
});
});
eventEmitter.on(PAUSE_EVENT, (videoPlayer, steps, done) => {
steps.shift();
videoPlayer.pause((err) => {
if (typeof (err) == 'undefined') {
expect(videoPlayer.state).assertEqual('paused');
console.info('case pause success!!');
toNextStep(videoPlayer, steps, done);
} else {
printfError(err, done);
}
});
});
eventEmitter.on(STOP_EVENT, (videoPlayer, steps, done) => {
steps.shift();
videoPlayer.stop((err) => {
if (typeof (err) == 'undefined') {
expect(videoPlayer.state).assertEqual('stopped');
console.info('case stop success!!');
toNextStep(videoPlayer, steps, done);
} else {
printfError(err, done);
}
});
});
eventEmitter.on(RESET_EVENT, (videoPlayer, steps, done) => {
steps.shift();
videoPlayer.reset((err) => {
if (typeof (err) == 'undefined') {
expect(videoPlayer.state).assertEqual('idle');
console.info('case reset success!!');
toNextStep(videoPlayer, steps, done);
} else {
printfError(err, done);
}
});
});
eventEmitter.on(RELEASE_EVENT, (videoPlayer, steps, done) => {
steps.shift();
videoPlayer.release((err) => {
if (typeof (err) == 'undefined') {
console.info('case release success!!');
toNextStep(videoPlayer, steps, done);
} else {
printfError(err, done);
}
});
});
function checkSeekTime(seekMode, seekTime, seekDoneTime) {
switch (seekMode) {
case media.SeekMode.SEEK_NEXT_SYNC:
if (seekTime == 0) {
expect(seekDoneTime).assertEqual(0);
} else if (seekTime == DURATION_TIME) {
expect(seekDoneTime).assertEqual(DURATION_TIME);
} else {
expect(seekDoneTime).assertEqual(NEXT_FRAME_TIME);
}
break;
case media.SeekMode.SEEK_PREV_SYNC:
if (seekTime == 0) {
expect(seekDoneTime).assertEqual(0);
} else if (seekTime == DURATION_TIME) {
expect(seekDoneTime).assertEqual(10000);
} else {
expect(seekDoneTime).assertEqual(PREV_FRAME_TIME);
}
break;
default:
break;
}
}
eventEmitter.on(SEEK_EVENT, (videoPlayer, steps, done) => {
let seekTime = steps[1];
steps.shift();
steps.shift();
videoPlayer.seek(seekTime, (err, seekDoneTime) => {
if (typeof (err) == 'undefined') {
if (seekTime > DURATION_TIME) {
seekTime = DURATION_TIME;
}
checkSeekTime(media.SeekMode.SEEK_PREV_SYNC, seekTime, seekDoneTime);
console.info('case seek success and seekDoneTime is '+ seekDoneTime);
toNextStep(videoPlayer, steps, done);
} else {
printfError(err, done);
}
});
});
eventEmitter.on(SEEK_MODE_EVENT, (videoPlayer, steps, done) => {
let seekTime = steps[1];
let seekMode = steps[2];
steps.shift();
steps.shift();
steps.shift();
videoPlayer.seek(seekTime, seekMode, (err, seekDoneTime) => {
if (typeof (err) == 'undefined') {
if (seekTime > DURATION_TIME) {
seekTime = DURATION_TIME;
}
checkSeekTime(seekMode, seekTime, seekDoneTime);
console.info('case seek success and seekDoneTime is '+ seekDoneTime);
toNextStep(videoPlayer, steps, done);
} else {
printfError(err, done);
}
});
});
eventEmitter.on(SETVOLUME_EVENT, (videoPlayer, steps, done) => {
let volumeValue = steps[1];
steps.shift();
steps.shift();
videoPlayer.setVolume(volumeValue, (err) => {
if (typeof (err) == 'undefined') {
console.info('case setVolume success');
toNextStep(videoPlayer, steps, done);
} else {
printfError(err, done);
}
});
});
function checkSpeedTime(videoPlayer, speedValue, startTime) {
let endTime = videoPlayer.currentTime;
if (videoPlayer.state == 'playing') {
switch (speedValue) {
case media.PlaybackSpeed.SPEED_FORWARD_0_75_X:
expect(endTime - startTime).assertClose(0.75 * 1000, DELTA_TIME);
break;
case media.PlaybackSpeed.SPEED_FORWARD_1_00_X:
expect(endTime - startTime).assertClose(1000, DELTA_TIME);
break;
case media.PlaybackSpeed.SPEED_FORWARD_1_25_X:
expect(endTime - startTime).assertClose(1.25 * 1000, DELTA_TIME);
break;
case media.PlaybackSpeed.SPEED_FORWARD_1_75_X:
expect(endTime - startTime).assertClose(1.75 * 1000, DELTA_TIME);
break;
case media.PlaybackSpeed.SPEED_FORWARD_2_00_X:
expect(endTime - startTime).assertClose(2 * 1000, DELTA_TIME);
break;
}
} else {
console.info('case speed not in play');
}
}
eventEmitter.on(SETSPEED_EVENT, (videoPlayer, steps, done) => {
let speedValue = steps[1];
steps.shift();
steps.shift();
let startTime = videoPlayer.currentTime;
videoPlayer.setSpeed(speedValue, (err, speedMode) => {
if (typeof (err) == 'undefined') {
sleep(1000);
expect(speedValue).assertEqual(speedMode);
console.info('case setSpeed success and speedMode is '+ speedMode);
checkSpeedTime(videoPlayer, speedValue, startTime);
toNextStep(videoPlayer, steps, done);
} else {
printfError(err, done);
}
});
});
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0100
* @tc.name : 001.play (callback)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0100', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
let mySteps = new Array(CREATE_EVENT, SETSURFACE_EVENT,
PREPARE_EVENT, PLAY_EVENT, RELEASE_EVENT, END_EVENT);
eventEmitter.emit(mySteps[0], videoPlayer, mySteps, done);
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0200
* @tc.name : 002.pause (callback)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0200', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
let mySteps = new Array(CREATE_EVENT, SETSURFACE_EVENT, PREPARE_EVENT,
PLAY_EVENT, PAUSE_EVENT, RELEASE_EVENT, END_EVENT);
eventEmitter.emit(mySteps[0], videoPlayer, mySteps, done);
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0300
* @tc.name : 003.pause->play (callback)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0300', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
let mySteps = new Array(CREATE_EVENT, SETSURFACE_EVENT, PREPARE_EVENT, PLAY_EVENT,
PAUSE_EVENT, PLAY_EVENT, RELEASE_EVENT, END_EVENT);
eventEmitter.emit(mySteps[0], videoPlayer, mySteps, done);
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0400
* @tc.name : 004.stop (callback)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0400', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
let mySteps = new Array(CREATE_EVENT, SETSURFACE_EVENT, PREPARE_EVENT,
PLAY_EVENT, STOP_EVENT, RELEASE_EVENT, END_EVENT);
eventEmitter.emit(mySteps[0], videoPlayer, mySteps, done);
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0500
* @tc.name : 005.reset (callback)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0500', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
let mySteps = new Array(CREATE_EVENT, SETSURFACE_EVENT, PREPARE_EVENT,
PLAY_EVENT, RESET_EVENT, RELEASE_EVENT, END_EVENT);
eventEmitter.emit(mySteps[0], videoPlayer, mySteps, done);
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0600
* @tc.name : 006.seek (callback)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0600', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
let mySteps = new Array(CREATE_EVENT, SETSURFACE_EVENT, PREPARE_EVENT, PLAY_EVENT,
SEEK_EVENT, SEEK_TIME, RELEASE_EVENT, END_EVENT);
eventEmitter.emit(mySteps[0], videoPlayer, mySteps, done);
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0700
* @tc.name : 007.seek mode(callback)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0700', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
let mySteps = new Array(CREATE_EVENT, SETSURFACE_EVENT, PREPARE_EVENT, PLAY_EVENT,
SEEK_MODE_EVENT, SEEK_TIME, media.SeekMode.SEEK_NEXT_SYNC,
SEEK_MODE_EVENT, SEEK_TIME, media.SeekMode.SEEK_PREV_SYNC,RELEASE_EVENT, END_EVENT);
eventEmitter.emit(mySteps[0], videoPlayer, mySteps, done);
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0800
* @tc.name : 008.setVolume (callback)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0800', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
let mySteps = new Array(CREATE_EVENT, SETSURFACE_EVENT, PREPARE_EVENT, PLAY_EVENT,
SETVOLUME_EVENT, VOLUME_VALUE, RELEASE_EVENT, END_EVENT);
eventEmitter.emit(mySteps[0], videoPlayer, mySteps, done);
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0900
* @tc.name : 009.setSpeed (callback)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_0900', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
let mySteps = new Array(CREATE_EVENT, SETSURFACE_EVENT, PREPARE_EVENT, PLAY_EVENT,
SETSPEED_EVENT, SPEED_VALUE, RELEASE_EVENT, END_EVENT);
eventEmitter.emit(mySteps[0], videoPlayer, mySteps, done);
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_1000
* @tc.name : 010.getTrackDescription (callback)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_1000', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
let mySteps = new Array(CREATE_EVENT, SETSURFACE_EVENT, PREPARE_EVENT,
GETDESCRIPTION, RELEASE_EVENT, END_EVENT);
eventEmitter.emit(mySteps[0], videoPlayer, mySteps, done);
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_1100
* @tc.name : 011.Loop true (callback)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_CALLBACK_1100', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
let mySteps = new Array(CREATE_EVENT, SETSURFACE_EVENT, PREPARE_EVENT,
PLAY_EVENT, STOP_EVENT, RELEASE_EVENT, END_EVENT);
eventEmitter.emit(mySteps[0], videoPlayer, mySteps, done);
})
})
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import media from '@ohos.multimedia.media'
import router from '@system.router'
import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index'
describe('HttpPlayerFuncPromiseTest', function () {
const HTTP_SOURCE = 'http://123.57.24.33:8000/MPEG2_AAC.mp4';
const PLAY_TIME = 3000;
const SEEK_TIME = 2100;
const WIDTH_VALUE = 720;
const HEIGHT_VALUE = 480;
const DURATION_TIME = 10034;
const DELTA_TIME = 1000;
const NEXT_FRAME_TIME = 2200;
const PREV_FRAME_TIME = 2000;
let surfaceID = '';
beforeAll(function() {
console.info('beforeAll case');
})
beforeEach(async function() {
await toNewPage();
await msleep(1000).then(() => {
}, failureCallback).catch(catchCallback);
console.info('beforeEach case');
})
afterEach(async function() {
await router.clear();
console.info('afterEach case');
})
afterAll(async function() {
console.info('afterAll case');
})
function sleep(time) {
for(let t = Date.now(); Date.now() - t <= time;);
}
function msleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
function failureCallback(error) {
expect().assertFail();
console.info(`case error called,errMessage is ${error.message}`);
}
function catchCallback(error) {
expect().assertFail();
console.info(`case error called,errMessage is ${error.message}`);
}
async function toNewPage() {
let path = 'pages/surfaceTest/surfaceTest';
let options = {
uri: path,
}
try {
let result = await router.push(options);
} catch {
console.info('case route failed');
}
}
function printfDescription(obj) {
let description = "";
for(let i in obj) {
let property = obj[i];
console.info('case key is '+ i);
console.info('case value is '+ property);
description += i + " = " + property + "\n";
}
}
function checkSpeedTime(videoPlayer, speedValue, startTime) {
let newTime = videoPlayer.currentTime;
if (videoPlayer.state == 'playing') {
switch (speedValue) {
case media.PlaybackSpeed.SPEED_FORWARD_0_75_X:
expect(newTime - startTime).assertClose(0.75 * 1000, DELTA_TIME);
break;
case media.PlaybackSpeed.SPEED_FORWARD_1_00_X:
expect(newTime - startTime).assertClose(1000, DELTA_TIME);
break;
case media.PlaybackSpeed.SPEED_FORWARD_1_25_X:
expect(newTime - startTime).assertClose(1.25 * 1000, DELTA_TIME);
break;
case media.PlaybackSpeed.SPEED_FORWARD_1_75_X:
expect(newTime - startTime).assertClose(1.75 * 1000, DELTA_TIME);
break;
case media.PlaybackSpeed.SPEED_FORWARD_2_00_X:
expect(newTime - startTime).assertClose(2 * 1000, DELTA_TIME);
break;
}
} else {
console.info('case speed not in play');
}
}
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0100
* @tc.name : 001.play (promise)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0100', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
await media.createVideoPlayer().then((video) => {
if (typeof (video) != 'undefined') {
console.info('case createVideoPlayer success');
videoPlayer = video;
expect(videoPlayer.state).assertEqual('idle');
} else {
console.info('case createVideoPlayer is failed');
expect().assertFail();
}
}, failureCallback).catch(catchCallback);
videoPlayer.url = HTTP_SOURCE;
await videoPlayer.setDisplaySurface(surfaceID).then(() => {
console.info('case setDisplaySurface success');
expect(videoPlayer.state).assertEqual('idle');
}, failureCallback).catch(catchCallback);
await videoPlayer.prepare().then(() => {
console.info('case prepare called!!');
expect(videoPlayer.state).assertEqual('prepared');
expect(videoPlayer.duration).assertEqual(DURATION_TIME);
expect(videoPlayer.width).assertEqual(WIDTH_VALUE);
expect(videoPlayer.height).assertEqual(HEIGHT_VALUE);
}, failureCallback).catch(catchCallback);
let startTime = videoPlayer.currentTime;
await videoPlayer.play().then(() => {
console.info('case play called!!');
sleep(PLAY_TIME);
expect(videoPlayer.state).assertEqual('playing');
}, failureCallback).catch(catchCallback);
let endTime = videoPlayer.currentTime;
expect(endTime - startTime).assertClose(PLAY_TIME, DELTA_TIME);
await videoPlayer.release().then(() => {
console.info('case release called!!');
}, failureCallback).catch(catchCallback);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0200
* @tc.name : 002.pause (promise)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0200', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
await media.createVideoPlayer().then((video) => {
if (typeof (video) != 'undefined') {
videoPlayer = video;
expect(videoPlayer.state).assertEqual('idle');
} else {
console.info('case createVideoPlayer is failed');
expect().assertFail();
}
}, failureCallback).catch(catchCallback);
videoPlayer.url = HTTP_SOURCE;
await videoPlayer.setDisplaySurface(surfaceID).then(() => {
console.info('case setDisplaySurface success');
expect(videoPlayer.state).assertEqual('idle');
}, failureCallback).catch(catchCallback);
await videoPlayer.prepare().then(() => {
console.info('case prepare called!!');
expect(videoPlayer.state).assertEqual('prepared');
expect(videoPlayer.duration).assertEqual(DURATION_TIME);
expect(videoPlayer.width).assertEqual(WIDTH_VALUE);
expect(videoPlayer.height).assertEqual(HEIGHT_VALUE);
}, failureCallback).catch(catchCallback);
let startTime = videoPlayer.currentTime;
await videoPlayer.play().then(() => {
console.info('case play called!!');
sleep(PLAY_TIME);
expect(videoPlayer.state).assertEqual('playing');
}, failureCallback).catch(catchCallback);
let endTime = videoPlayer.currentTime;
expect(endTime - startTime).assertClose(PLAY_TIME, DELTA_TIME);
await videoPlayer.pause().then(() => {
expect(videoPlayer.state).assertEqual('paused');
console.info('case pause called!!');
}, failureCallback).catch(catchCallback);
await videoPlayer.release().then(() => {
console.info('case release called!!');
}, failureCallback).catch(catchCallback);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0300
* @tc.name : 003.pause->play (promise)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0300', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
await media.createVideoPlayer().then((video) => {
if (typeof (video) != 'undefined') {
videoPlayer = video;
expect(videoPlayer.state).assertEqual('idle');
} else {
console.info('case createVideoPlayer is failed');
expect().assertFail();
}
}, failureCallback).catch(catchCallback);
videoPlayer.url = HTTP_SOURCE;
await videoPlayer.setDisplaySurface(surfaceID).then(() => {
expect(videoPlayer.state).assertEqual('idle');
console.info('case setDisplaySurface success');
}, failureCallback).catch(catchCallback);
await videoPlayer.prepare().then(() => {
expect(videoPlayer.state).assertEqual('prepared');
expect(videoPlayer.duration).assertEqual(DURATION_TIME);
expect(videoPlayer.width).assertEqual(WIDTH_VALUE);
expect(videoPlayer.height).assertEqual(HEIGHT_VALUE);
console.info('case prepare called!!');
}, failureCallback).catch(catchCallback);
let startTime = videoPlayer.currentTime;
await videoPlayer.play().then(() => {
console.info('case play called!!');
sleep(PLAY_TIME);
expect(videoPlayer.state).assertEqual('playing');
}, failureCallback).catch(catchCallback);
let endTime = videoPlayer.currentTime;
expect(endTime - startTime).assertClose(PLAY_TIME, DELTA_TIME);
await videoPlayer.pause().then(() => {
expect(videoPlayer.state).assertEqual('paused');
console.info('case pause called!!');
}, failureCallback).catch(catchCallback);
startTime = videoPlayer.currentTime;
await videoPlayer.play().then(() => {
expect(videoPlayer.state).assertEqual('playing');
console.info('case play called!!');
sleep(PLAY_TIME);
}, failureCallback).catch(catchCallback);
endTime = videoPlayer.currentTime;
expect(endTime - startTime).assertClose(PLAY_TIME, DELTA_TIME);
await videoPlayer.release().then(() => {
console.info('case release called!!');
}, failureCallback).catch(catchCallback);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0400
* @tc.name : 004.stop (promise)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0400', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
await media.createVideoPlayer().then((video) => {
if (typeof (video) != 'undefined') {
videoPlayer = video;
expect(videoPlayer.state).assertEqual('idle');
} else {
console.info('case createVideoPlayer is failed');
expect().assertFail();
}
}, failureCallback).catch(catchCallback);
videoPlayer.url = HTTP_SOURCE;
await videoPlayer.setDisplaySurface(surfaceID).then(() => {
expect(videoPlayer.state).assertEqual('idle');
console.info('case setDisplaySurface success');
}, failureCallback).catch(catchCallback);
await videoPlayer.prepare().then(() => {
expect(videoPlayer.state).assertEqual('prepared');
expect(videoPlayer.duration).assertEqual(DURATION_TIME);
expect(videoPlayer.width).assertEqual(WIDTH_VALUE);
expect(videoPlayer.height).assertEqual(HEIGHT_VALUE);
console.info('case prepare called!!');
}, failureCallback).catch(catchCallback);
let startTime = videoPlayer.currentTime;
await videoPlayer.play().then(() => {
console.info('case play called!!');
sleep(PLAY_TIME);
expect(videoPlayer.state).assertEqual('playing');
}, failureCallback).catch(catchCallback);
let endTime = videoPlayer.currentTime;
expect(endTime - startTime).assertClose(PLAY_TIME, DELTA_TIME);
await videoPlayer.stop().then(() => {
expect(videoPlayer.state).assertEqual('stopped');
console.info('case stop called!!');
}, failureCallback).catch(catchCallback);
await videoPlayer.release().then(() => {
console.info('case release called!!');
}, failureCallback).catch(catchCallback);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0500
* @tc.name : 005.reset (promise)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0500', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
await media.createVideoPlayer().then((video) => {
if (typeof (video) != 'undefined') {
videoPlayer = video;
expect(videoPlayer.state).assertEqual('idle');
} else {
console.info('case createVideoPlayer is failed');
expect().assertFail();
}
}, failureCallback).catch(catchCallback);
videoPlayer.url = HTTP_SOURCE;
await videoPlayer.setDisplaySurface(surfaceID).then(() => {
expect(videoPlayer.state).assertEqual('idle');
console.info('case setDisplaySurface success');
}, failureCallback).catch(catchCallback);
await videoPlayer.prepare().then(() => {
expect(videoPlayer.state).assertEqual('prepared');
expect(videoPlayer.duration).assertEqual(DURATION_TIME);
expect(videoPlayer.width).assertEqual(WIDTH_VALUE);
expect(videoPlayer.height).assertEqual(HEIGHT_VALUE);
console.info('case prepare called!!');
}, failureCallback).catch(catchCallback);
let startTime = videoPlayer.currentTime;
await videoPlayer.play().then(() => {
console.info('case play called!!');
sleep(PLAY_TIME);
expect(videoPlayer.state).assertEqual('playing');
}, failureCallback).catch(catchCallback);
let endTime = videoPlayer.currentTime;
expect(endTime - startTime).assertClose(PLAY_TIME, DELTA_TIME);
await videoPlayer.reset().then(() => {
expect(videoPlayer.state).assertEqual('idle');
console.info('case reset called!!');
}, failureCallback).catch(catchCallback);
await videoPlayer.release().then(() => {
console.info('case release called!!');
}, failureCallback).catch(catchCallback);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0600
* @tc.name : 006.seek (promise)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0600', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
await media.createVideoPlayer().then((video) => {
if (typeof (video) != 'undefined') {
videoPlayer = video;
expect(videoPlayer.state).assertEqual('idle');
} else {
console.info('case createVideoPlayer is failed');
expect().assertFail();
}
}, failureCallback).catch(catchCallback);
videoPlayer.url = HTTP_SOURCE;
await videoPlayer.setDisplaySurface(surfaceID).then(() => {
expect(videoPlayer.state).assertEqual('idle');
console.info('case setDisplaySurface success');
}, failureCallback).catch(catchCallback);
await videoPlayer.prepare().then(() => {
expect(videoPlayer.state).assertEqual('prepared');
expect(videoPlayer.duration).assertEqual(DURATION_TIME);
expect(videoPlayer.width).assertEqual(WIDTH_VALUE);
expect(videoPlayer.height).assertEqual(HEIGHT_VALUE);
console.info('case prepare called!!');
}, failureCallback).catch(catchCallback);
let startTime = videoPlayer.currentTime;
await videoPlayer.play().then(() => {
console.info('case play called!!');
sleep(PLAY_TIME);
expect(videoPlayer.state).assertEqual('playing');
}, failureCallback).catch(catchCallback);
let endTime = videoPlayer.currentTime;
expect(endTime - startTime).assertClose(PLAY_TIME, DELTA_TIME);
await videoPlayer.seek(SEEK_TIME).then((seekDoneTime) => {
expect(videoPlayer.state).assertEqual('playing');
expect(seekDoneTime).assertEqual(PREV_FRAME_TIME);
console.info('case seek called and seekDoneTime is' + seekDoneTime);
}, failureCallback).catch(catchCallback);
await videoPlayer.release().then(() => {
console.info('case release called!!');
}, failureCallback).catch(catchCallback);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0700
* @tc.name : 007.seek CLOSEST(promise)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0700', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
await media.createVideoPlayer().then((video) => {
if (typeof (video) != 'undefined') {
videoPlayer = video;
expect(videoPlayer.state).assertEqual('idle');
} else {
console.info('case createVideoPlayer is failed');
expect().assertFail();
}
}, failureCallback).catch(catchCallback);
videoPlayer.url = HTTP_SOURCE;
await videoPlayer.setDisplaySurface(surfaceID).then(() => {
expect(videoPlayer.state).assertEqual('idle');
console.info('case setDisplaySurface success');
}, failureCallback).catch(catchCallback);
await videoPlayer.prepare().then(() => {
expect(videoPlayer.state).assertEqual('prepared');
expect(videoPlayer.duration).assertEqual(DURATION_TIME);
expect(videoPlayer.width).assertEqual(WIDTH_VALUE);
expect(videoPlayer.height).assertEqual(HEIGHT_VALUE);
console.info('case prepare called!!');
}, failureCallback).catch(catchCallback);
let startTime = videoPlayer.currentTime;
await videoPlayer.play().then(() => {
console.info('case play called!!');
sleep(PLAY_TIME);
expect(videoPlayer.state).assertEqual('playing');
}, failureCallback).catch(catchCallback);
let endTime = videoPlayer.currentTime;
expect(endTime - startTime).assertClose(PLAY_TIME, DELTA_TIME);
await videoPlayer.seek(SEEK_TIME, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime) => {
expect(videoPlayer.state).assertEqual('playing');
expect(seekDoneTime).assertEqual(NEXT_FRAME_TIME);
console.info('case seek called and seekDoneTime is' + seekDoneTime);
}, failureCallback).catch(catchCallback);
await videoPlayer.seek(SEEK_TIME, media.SeekMode.SEEK_PREV_SYNC).then((seekDoneTime) => {
expect(videoPlayer.state).assertEqual('playing');
expect(seekDoneTime).assertEqual(PREV_FRAME_TIME);
console.info('case seek called and seekDoneTime is' + seekDoneTime);
}, failureCallback).catch(catchCallback);
await videoPlayer.seek(PREV_FRAME_TIME - 100, media.SeekMode.SEEK_PREV_SYNC).then((seekDoneTime) => {
expect(videoPlayer.state).assertEqual('playing');
expect(seekDoneTime).assertEqual(1800);
console.info('case seek called and seekDoneTime is' + seekDoneTime);
}, failureCallback).catch(catchCallback);
await videoPlayer.seek(PREV_FRAME_TIME + 100, media.SeekMode.SEEK_PREV_SYNC).then((seekDoneTime) => {
expect(videoPlayer.state).assertEqual('playing');
expect(seekDoneTime).assertEqual(PREV_FRAME_TIME);
console.info('case seek called and seekDoneTime is' + seekDoneTime);
}, failureCallback).catch(catchCallback);
await videoPlayer.seek(NEXT_FRAME_TIME - 100, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime) => {
expect(videoPlayer.state).assertEqual('playing');
expect(seekDoneTime).assertEqual(NEXT_FRAME_TIME);
console.info('case seek called and seekDoneTime is' + seekDoneTime);
}, failureCallback).catch(catchCallback);
await videoPlayer.seek(NEXT_FRAME_TIME + 100, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime) => {
expect(videoPlayer.state).assertEqual('playing');
expect(seekDoneTime).assertEqual(2400);
console.info('case seek called and seekDoneTime is' + seekDoneTime);
}, failureCallback).catch(catchCallback);
await videoPlayer.release().then(() => {
console.info('case release called!!');
}, failureCallback).catch(catchCallback);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0800
* @tc.name : 008.setVolume (promise)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0800', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
await media.createVideoPlayer().then((video) => {
if (typeof (video) != 'undefined') {
videoPlayer = video;
expect(videoPlayer.state).assertEqual('idle');
} else {
console.info('case createVideoPlayer is failed');
expect().assertFail();
}
}, failureCallback).catch(catchCallback);
videoPlayer.url = HTTP_SOURCE;
await videoPlayer.setDisplaySurface(surfaceID).then(() => {
expect(videoPlayer.state).assertEqual('idle');
console.info('case setDisplaySurface success');
}, failureCallback).catch(catchCallback);
await videoPlayer.prepare().then(() => {
expect(videoPlayer.state).assertEqual('prepared');
expect(videoPlayer.duration).assertEqual(DURATION_TIME);
expect(videoPlayer.width).assertEqual(WIDTH_VALUE);
expect(videoPlayer.height).assertEqual(HEIGHT_VALUE);
console.info('case prepare called!!');
}, failureCallback).catch(catchCallback);
let startTime = videoPlayer.currentTime;
await videoPlayer.play().then(() => {
console.info('case play called!!');
sleep(PLAY_TIME);
expect(videoPlayer.state).assertEqual('playing');
}, failureCallback).catch(catchCallback);
let endTime = videoPlayer.currentTime;
expect(endTime - startTime).assertClose(PLAY_TIME, DELTA_TIME);
await videoPlayer.setVolume(1).then(() => {
expect(videoPlayer.state).assertEqual('playing');
console.info('case setVolume called');
}, failureCallback).catch(catchCallback);
await videoPlayer.release().then(() => {
console.info('case release called!!');
}, failureCallback).catch(catchCallback);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0900
* @tc.name : 009.setSpeed (promise)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_0900', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
await media.createVideoPlayer().then((video) => {
if (typeof (video) != 'undefined') {
videoPlayer = video;
expect(videoPlayer.state).assertEqual('idle');
} else {
console.info('case createVideoPlayer is failed');
expect().assertFail();
}
}, failureCallback).catch(catchCallback);
videoPlayer.url = HTTP_SOURCE;
await videoPlayer.setDisplaySurface(surfaceID).then(() => {
expect(videoPlayer.state).assertEqual('idle');
console.info('case setDisplaySurface success');
}, failureCallback).catch(catchCallback);
await videoPlayer.prepare().then(() => {
expect(videoPlayer.state).assertEqual('prepared');
expect(videoPlayer.duration).assertEqual(DURATION_TIME);
expect(videoPlayer.width).assertEqual(WIDTH_VALUE);
expect(videoPlayer.height).assertEqual(HEIGHT_VALUE);
console.info('case prepare called!!');
}, failureCallback).catch(catchCallback);
let startTime = videoPlayer.currentTime;
await videoPlayer.play().then(() => {
console.info('case play called!!');
sleep(PLAY_TIME);
expect(videoPlayer.state).assertEqual('playing');
}, failureCallback).catch(catchCallback);
let endTime = videoPlayer.currentTime;
expect(endTime - startTime).assertClose(PLAY_TIME, DELTA_TIME);
startTime = videoPlayer.currentTime;
await videoPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_2_00_X).then((speedMode) => {
expect(videoPlayer.state).assertEqual('playing');
sleep(1000);
expect(speedMode).assertEqual(media.PlaybackSpeed.SPEED_FORWARD_2_00_X);
console.info('case setSpeed called and speedMode is ' + speedMode);
}, failureCallback).catch(catchCallback);
endTime = videoPlayer.currentTime;
expect(endTime - startTime).assertClose(2 * 1000, DELTA_TIME);
await videoPlayer.release().then(() => {
console.info('case release called!!');
}, failureCallback).catch(catchCallback);
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_1000
* @tc.name : 010.getTrackDescription (promise)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_1000', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
let arrayDescription = null;
await media.createVideoPlayer().then((video) => {
if (typeof (video) != 'undefined') {
videoPlayer = video;
expect(videoPlayer.state).assertEqual('idle');
} else {
console.info('case createVideoPlayer is failed');
expect().assertFail();
}
}, failureCallback).catch(catchCallback);
videoPlayer.url = HTTP_SOURCE;
await videoPlayer.setDisplaySurface(surfaceID).then(() => {
expect(videoPlayer.state).assertEqual('idle');
console.info('case setDisplaySurface success');
}, failureCallback).catch(catchCallback);
await videoPlayer.prepare().then(() => {
expect(videoPlayer.state).assertEqual('prepared');
console.info('case prepare called!!');
}, failureCallback).catch(catchCallback);
await videoPlayer.getTrackDescription().then((arrayList) => {
console.info('case getTrackDescription called!!');
if (typeof (arrayList) != 'undefined') {
arrayDescription = arrayList;
} else {
console.info('case getTrackDescription is failed');
expect().assertFail();
}
}, failureCallback).catch(catchCallback);
for (let i = 0; i < arrayDescription.length; i++) {
printfDescription(arrayDescription[i]);
}
done();
})
/* *
* @tc.number : SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_1100
* @tc.name : 011.Loop true (promise)
* @tc.desc : Video playback control test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level1
*/
it('SUB_MEDIA_VIDEO_PLAYER_HTTP_FUNCTION_PROMISE_1100', 0, async function (done) {
surfaceID = globalThis.value;
console.info('case new surfaceID is ' + surfaceID);
let videoPlayer = null;
await media.createVideoPlayer().then((video) => {
if (typeof (video) != 'undefined') {
videoPlayer = video;
expect(videoPlayer.state).assertEqual('idle');
} else {
console.info('case createVideoPlayer is failed');
expect().assertFail();
}
}, failureCallback).catch(catchCallback);
videoPlayer.url = HTTP_SOURCE;
await videoPlayer.setDisplaySurface(surfaceID).then(() => {
expect(videoPlayer.state).assertEqual('idle');
console.info('case setDisplaySurface success');
}, failureCallback).catch(catchCallback);
await videoPlayer.prepare().then(() => {
videoPlayer.loop = true;
expect(videoPlayer.state).assertEqual('prepared');
expect(videoPlayer.duration).assertEqual(DURATION_TIME);
expect(videoPlayer.width).assertEqual(WIDTH_VALUE);
expect(videoPlayer.height).assertEqual(HEIGHT_VALUE);
console.info('case prepare called!!');
}, failureCallback).catch(catchCallback);
let startTime = videoPlayer.currentTime;
await videoPlayer.play().then(() => {
expect(videoPlayer.loop).assertEqual(true);
console.info('case play called!!');
sleep(PLAY_TIME);
expect(videoPlayer.state).assertEqual('playing');
}, failureCallback).catch(catchCallback);
let endTime = videoPlayer.currentTime;
expect(endTime - startTime).assertClose(PLAY_TIME, DELTA_TIME);
await videoPlayer.seek(DURATION_TIME, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime) => {
expect(videoPlayer.state).assertEqual('playing');
expect(seekDoneTime).assertEqual(DURATION_TIME);
console.info('case seek called and seekDoneTime is' + seekDoneTime);
}, failureCallback).catch(catchCallback);
await videoPlayer.release().then(() => {
console.info('case release called!!');
}, failureCallback).catch(catchCallback);
done();
})
})
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
require('./HttpPlayerCompatibilityTest.test.js')
require('./HttpPlayerFuncPromiseTest.test.js')
require('./HttpPlayerFuncCallbackTest.test.js')
{
"string": [
{
"name": "entry_MainAbility",
"value": "entry_MainAbility"
},
{
"name": "mainability_description",
"value": "JS_Empty Ability"
}
]
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册