提交 4bb4cb99 编写于 作者: N NOBUGGERS

http player CompatibilityTest Signed-off-by: NOBUGGERS <ruanmeng@huawei.com>

Signed-off-by: NNOBUGGERS <ruanmeng@huawei.com>
上级 205a0dc3
......@@ -26,7 +26,7 @@ ohos_js_hap_suite("http_player_js_hap") {
# "//third_party/libpng:libpng",
# ]
certificate_profile = "./signature/openharmony_sx.p7b"
hap_name = "HttpPlayerJsTest"
hap_name = "ActsHTTPPlayerJsTest"
# part_name = "prebuilt_hap"
# subsystem_name = "xts"
......
......@@ -23,7 +23,7 @@
},
{
"test-file-name": [
"HttpPlayerJsTest.hap"
"ActsHTTPPlayerJsTest.hap"
],
"type": "AppInstallKit",
"cleanup-apps": true
......
......@@ -17,10 +17,4 @@
<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>
......@@ -33,15 +33,9 @@ export default {
const configService = core.getDefaultService('config')
this.timeout = 60000
configService.setConfig(this)
setTimeout(function() {
require('../../../test/List.test')
core.execute()
}, 2000)
require('../../../test/List.test')
core.execute()
},
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 = 'XcomponentId3'
type = 'surface'
onload = 'LoadXcomponent3'
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() {
},
LoadXcomponent3() {
globalThis.value = this.$element('XcomponentId3').getXComponentSurfaceId()
},
}
\ No newline at end of file
......@@ -14,35 +14,36 @@
*/
import media from '@ohos.multimedia.media'
import Fileio from '@ohos.fileio'
import router from '@system.router'
import * as mediaTestBase from '../../../../../MediaTestBase.js';
import {playAudioSource} from '../../../../../AudioPlayerTestBase.js';
import {toNewPage, clearRouter, playVideoSource} from '../../../../../VideoPlayerTestBase.js';
import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index'
describe('HttpPlayerFuncPromiseTest', function () {
const BASE_PATH = 'http://123.57.24.33:8000/'
describe('HttpPlayerCompatibilityTest', function () {
const HTTP_PATH = 'http://123.57.24.33:8000/';
const VIDEO_PATH = HTTP_PATH + '01.video/';
const AUDIO_PATH = HTTP_PATH + '02.audio/';
const VIDEOPLAYER_PATH = HTTP_PATH + '03.videoplayer/';
const AUDIOPLAYER_PATH = HTTP_PATH + '04.audioplayer/';
const PLAY_TIME = 3000;
const SEEK_TIME = 5000;
const MAX_VOLUME = 1;
const DELTA_TIME = 1000;
let isToSeek = false;
let isToDuration = false;
let surfaceID = '';
const pagePath1 = 'pages/surfaceTest/surfaceTest';
const pagePath2 = 'pages/surfaceTest2/surfaceTest2';
let pageId = 0;
beforeAll(function() {
console.info('beforeAll case');
})
beforeEach(async function() {
await toNewPage();
await msleep(1000).then(() => {
}, failureCallback).catch(catchCallback);
isToSeek = false;
isToDuration = false;
await toNewPage(pagePath1, pagePath2, pageId);
pageId = (pageId + 1) % 2;
await mediaTestBase.msleepAsync(1000).then(
() => {}, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
console.info('beforeEach case');
})
afterEach(async function() {
await router.clear();
await clearRouter();
console.info('afterEach case');
})
......@@ -50,216 +51,6 @@ describe('HttpPlayerFuncPromiseTest', 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
......@@ -269,8 +60,8 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = VIDEOPLAYER_PATH + 'mp4/h264_aac_640x320_30r.mp4';
await playVideoSource(path, 640, 320, 10034, PLAY_TIME, done);
done();
})
......@@ -283,8 +74,8 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = VIDEOPLAYER_PATH + 'mp4/h264_mp3_640x480_25r.mp4';
await playVideoSource(path, 640, 480, 10034, PLAY_TIME, done);
done();
})
......@@ -297,8 +88,8 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = VIDEOPLAYER_PATH + 'mpeg_ts/h264_aac_640x480_30r.ts';
await playVideoSource(path, 640, 480, 10161, PLAY_TIME, done);
done();
})
......@@ -311,8 +102,8 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = VIDEOPLAYER_PATH + 'mpeg_ts/h264_mp3_640x480_25r.ts';
await playVideoSource(path, 640, 480, 10169, PLAY_TIME, done);
done();
})
......@@ -325,8 +116,8 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = VIDEO_PATH + 'H264_AAC.mkv';
await playVideoSource(path, 720, 480, 10057, PLAY_TIME, done);
done();
})
......@@ -339,8 +130,8 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = VIDEO_PATH + 'H264_MP3.mkv';
await playVideoSource(path, 720, 480, 10059, PLAY_TIME, done);
done();
})
......@@ -353,8 +144,8 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = VIDEO_PATH + 'MPEG2_AAC.mkv';
await playVideoSource(path, 720, 480, 10057, PLAY_TIME, done);
done();
})
......@@ -367,8 +158,8 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = VIDEO_PATH + 'MPEG2_MP3.mkv';
await playVideoSource(path, 720, 480, 10059, PLAY_TIME, done);
done();
})
......@@ -381,8 +172,8 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = VIDEO_PATH + 'MPEG4_MP3.mkv';
await playVideoSource(path, 720, 480, 10059, PLAY_TIME, done);
done();
})
......@@ -395,8 +186,8 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = VIDEO_PATH + 'VP8_VORBIS.webm';
await playVideoSource(path, 720, 480, 10083, PLAY_TIME, done);
done();
})
......@@ -409,8 +200,8 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = AUDIO_PATH + '01.mp3';
await playAudioSource(path, 219600, PLAY_TIME, true, done);
})
/* *
......@@ -422,8 +213,8 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = AUDIOPLAYER_PATH + 'aac/aac_96ksr_64kbr_2ch.aac';
await playAudioSource(path, 12198, PLAY_TIME, true, done);
})
/* *
......@@ -435,8 +226,8 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = AUDIOPLAYER_PATH + 'wav/pcm_48ksr_16kbr_1ch.wav';
await playAudioSource(path, 5461, PLAY_TIME, true, done);
})
/* *
......@@ -448,8 +239,8 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = AUDIOPLAYER_PATH + 'flac/flac_96ksr_64kbr_2ch.flac';
await playAudioSource(path, 10000, PLAY_TIME, true, done);
})
/* *
......@@ -461,8 +252,8 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = AUDIO_PATH + '55.m4a';
await playAudioSource(path, 219575, PLAY_TIME, true, done);
})
/* *
......@@ -474,7 +265,7 @@ describe('HttpPlayerFuncPromiseTest', function () {
* @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);
let path = AUDIOPLAYER_PATH + 'ogg/vorbis_48ksr_32kbr_1ch.ogg';
await playAudioSource(path, 10009, PLAY_TIME, true, done);
})
})
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册