diff --git a/applications/kitframework/BUILD.gn b/applications/kitframework/BUILD.gn index 1c98b65b95b3b46c224aa7e1c39bc82441a4bc91..eae372b343a4610c124769fb7cc7ee3b21fbe9f8 100644 --- a/applications/kitframework/BUILD.gn +++ b/applications/kitframework/BUILD.gn @@ -31,7 +31,4 @@ hctest_suite("ActsKitFwkApiTest") { # dir for oem_auth_config.h and oem_auth_result_storage.h "//vendor/kitframework/include/", ] - - # un-comment this Macro for token-persist-test - # defines = [ "TOKEN_PERSIST_TEST" ] } diff --git a/applications/kitframework_ipcamera/BUILD.gn b/applications/kitframework_ipcamera/BUILD.gn index 37e7e224aef930fb438fdf052a75074230d70171..2ed059a15aca9690b9eb9ab1cd6c4ac412177453 100644 --- a/applications/kitframework_ipcamera/BUILD.gn +++ b/applications/kitframework_ipcamera/BUILD.gn @@ -43,7 +43,4 @@ executable("ActsKitFwkApiTest") { ] output_extension = "bin" - - # un-comment this Macro for token-persist-test - # defines = [ "TOKEN_PERSIST_TEST" ] } diff --git a/arkui/ace_ets_components_ux/BUILD.gn b/arkui/ace_ets_components_ux/BUILD.gn index ceffbe1d35d9988ffcbeb3bff56aa80c13df40b2..3cd4d6b65ace6d4ad58f4c6d4a829f12dbe8c960 100644 --- a/arkui/ace_ets_components_ux/BUILD.gn +++ b/arkui/ace_ets_components_ux/BUILD.gn @@ -18,6 +18,7 @@ group("componentUxTest") { "ace_ets_component_select:ActsAceSelectTest", "ace_ets_component_sidebar:ActsAceSideBarTest", "ace_ets_component_swiper:ActsAceSwiperTest", + "ace_ets_component_tabs:ActsAceTabsTest", ] } } diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/AppScope/app.json b/arkui/ace_ets_components_ux/ace_ets_component_tabs/AppScope/app.json new file mode 100644 index 0000000000000000000000000000000000000000..fcd145421eed6260608923b641b97733be178ab6 --- /dev/null +++ b/arkui/ace_ets_components_ux/ace_ets_component_tabs/AppScope/app.json @@ -0,0 +1,19 @@ +{ + "app": { + "bundleName": "com.example.acetabstest", + "vendor": "example", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name", + "distributedNotificationEnabled": true, + "keepAlive": true, + "singleUser": true, + "minAPIVersion": 10, + "targetAPIVersion": 10, + "car": { + "apiCompatibleVersion": 10, + "singleUser": false + } + } +} \ No newline at end of file diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/AppScope/resources/base/element/string.json b/arkui/ace_ets_components_ux/ace_ets_component_tabs/AppScope/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..30af7cfee6766dda361b893d1565490dc145fdf0 --- /dev/null +++ b/arkui/ace_ets_components_ux/ace_ets_component_tabs/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string":[ + { + "name":"app_name", + "value":"MyApplication" + } + ] +} \ No newline at end of file diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/AppScope/resources/base/media/app_icon.png b/arkui/ace_ets_components_ux/ace_ets_component_tabs/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/arkui/ace_ets_components_ux/ace_ets_component_tabs/AppScope/resources/base/media/app_icon.png differ diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/BUILD.gn b/arkui/ace_ets_components_ux/ace_ets_component_tabs/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..b5a9ba313f4173a063ce0424bc16570247855df1 --- /dev/null +++ b/arkui/ace_ets_components_ux/ace_ets_component_tabs/BUILD.gn @@ -0,0 +1,43 @@ +# Copyright (c) 2021 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("ActsAceTabsTest") { + hap_profile = "src/main/module.json" + js_build_mode = "debug" + deps = [ + ":ace_ets_component_tabs_js_assets", + ":ace_ets_component_tabs_resources", + ] + ets2abc = true + certificate_profile = "signature/openharmony_sx.p7b" + hap_name = "ActsAceTabsTest" + part_name = "ace_engine" + subsystem_name = "arkui" +} + +ohos_app_scope("ace_ets_component_tabs_profile") { + app_profile = "AppScope/app.json" + sources = [ "AppScope/resources" ] +} + +ohos_js_assets("ace_ets_component_tabs_js_assets") { + source_dir = "src/main/ets" +} + +ohos_resources("ace_ets_component_tabs_resources") { + sources = [ "src/main/resources" ] + deps = [ ":ace_ets_component_tabs_profile" ] + hap_profile = "src/main/module.json" +} diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/Test.json b/arkui/ace_ets_components_ux/ace_ets_component_tabs/Test.json new file mode 100644 index 0000000000000000000000000000000000000000..81ab99eca180dc4d3d342a9cd8720cbd7394d70a --- /dev/null +++ b/arkui/ace_ets_components_ux/ace_ets_component_tabs/Test.json @@ -0,0 +1,26 @@ +{ + "description": "Configuration for hjunit demo Tests", + "driver": { + "type": "OHJSUnitTest", + "test-timeout": "600000", + "bundle-name": "com.example.acetabstest", + "module-name": "phone", + "shell-timeout": "600000", + "testcase-timeout": 240000 + }, + "kits": [{ + "test-file-name": [ + "ActsAceTabsTest.hap" + ], + "type": "AppInstallKit", + "cleanup-apps": true + }, + { + "type": "ShellKit", + "run-command": [ + "power-shell wakeup", + "power-shell setmode 602" + ] + } + ] +} \ No newline at end of file diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/signature/openharmony_sx.p7b b/arkui/ace_ets_components_ux/ace_ets_component_tabs/signature/openharmony_sx.p7b new file mode 100644 index 0000000000000000000000000000000000000000..a866b9ed5c4087ac574c893cf65a2a7a7d01f854 Binary files /dev/null and b/arkui/ace_ets_components_ux/ace_ets_component_tabs/signature/openharmony_sx.p7b differ diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/TestAbility/TestAbility.ets b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/TestAbility/TestAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..8d65dd2ea8346a8b5d12ac7aff026197a95abaea --- /dev/null +++ b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/TestAbility/TestAbility.ets @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2023 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 hilog from '@ohos.hilog'; +import Ability from '@ohos.app.ability.UIAbility' +import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' +import testsuite from '../test/List.test' +import Window from '@ohos.window' + +export default class TestAbility extends Ability { + onCreate(want, launchParam) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onCreate'); + hilog.info(0x0000, 'testTag', '%{public}s', 'want param:' + JSON.stringify(want) ?? ''); + hilog.info(0x0000, 'testTag', '%{public}s', 'launchParam:'+ JSON.stringify(launchParam) ?? ''); + } + + onDestroy() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onDestroy'); + } + + onWindowStageCreate(windowStage: Window.WindowStage) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageCreate'); + windowStage.loadContent('TestAbility/pages/Index', (err, data) => { + if (err.code) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.ERROR); + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', + JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageDestroy'); + } + + onForeground() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onForeground'); + } + + onBackground() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onBackground'); + } +} diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/TestAbility/pages/Index.ets b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/TestAbility/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..647a4ed660225f83ab9a9da9855b625fcc81e064 --- /dev/null +++ b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/TestAbility/pages/Index.ets @@ -0,0 +1,358 @@ +/* + * Copyright (c) 2023 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 events_emitter from '@ohos.events.emitter'; +import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry'; +import { Hypium } from '@ohos/hypium'; +import hilog from '@ohos.hilog'; +import testsuite from '../../test/List.test' +@Entry +@Component +struct TabsExample { + private controller: TabsController = new TabsController() + private controller2: TabsController = new TabsController() + private controller3: TabsController = new TabsController() + private controller4: TabsController = new TabsController() + @State strokeWidthStr: string = '10px' + @State dividerColorStr: string = 'red' + @State startMarginStr: string = '5px' + @State endMarginStr: string = '5px' + + @State nullFlag: boolean = false + + @State strokeWidthNum: number = 10 + @State dividerColorNum: number = 0xFFFF0000 + @State startMarginNum: number = 5 + @State endMarginNum: number = 5 + + @State strokeWidthRes: Resource = $r("app.string.Divider_Stroke_Width") + @State dividerColorRes: Resource = $r("app.color.Divider_Color") + @State startMarginRes: Resource = $r("app.string.Divider_Start_Margin") + @State endMarginRes: Resource = $r("app.string.Divider_End_Margin") + + @State dividerColor: Color = Color.Red + + @State overflowFlag: boolean = false + @State selfIndicatorColor: Color = Color.Red + @State selfIndicatorHeight: number = 10 + @State selfIndicatorWidth: number = 30 + @State selfIndicatorBorderRadius: number = 5 + @State selfSubTabBorderRadius: number = 20 + @State selfMarginTop: number = 10 + + @State selfIndicatorColorStr: string = "#FFFF0000" + @State selfIndicatorHeightStr: string = "10vp" + @State selfIndicatorWidthStr: string = "30vp" + @State selfIndicatorBorderRadiusStr: string = "5vp" + @State selfSubTabBorderRadiusStr: string = "20vp" + @State selfMarginTopStr: string = "10vp" + + @State selfSelectedMode: SelectedMode = SelectedMode.INDICATOR + + private stateChangCallBack = (eventData) => { + console.info("tabs page state change called:" + JSON.stringify(eventData)); + if (eventData != null) { + if (eventData.data.dividerColorStr != null) { + this.dividerColorStr = eventData.data.dividerColorStr; + } + if (eventData.data.strokeWidthStr != null) { + this.strokeWidthStr = eventData.data.strokeWidthStr; + } + if (eventData.data.startMarginStr != null) { + this.startMarginStr = eventData.data.startMarginStr; + } + if (eventData.data.endMarginStr != null) { + this.endMarginStr = eventData.data.endMarginStr; + } + if (eventData.data.nullFlag != null) { + this.nullFlag = eventData.data.nullFlag; + } + if (eventData.data.dividerColor != null) { + this.dividerColor = eventData.data.dividerColor; + } + if (eventData.data.strokeWidthNum != null) { + this.strokeWidthNum = eventData.data.strokeWidthNum; + } + if (eventData.data.startMarginNum != null) { + this.startMarginNum = eventData.data.startMarginNum; + } + if (eventData.data.endMarginNum != null) { + this.endMarginNum = eventData.data.endMarginNum; + } + + if (eventData.data.dividerColorRes != null) { + this.dividerColorRes = eventData.data.dividerColorRes; + } + if (eventData.data.strokeWidthRes != null) { + this.strokeWidthRes = eventData.data.strokeWidthRes; + } + if (eventData.data.startMarginRes != null) { + this.startMarginRes = eventData.data.startMarginRes; + } + if (eventData.data.endMarginRes != null) { + this.endMarginRes = eventData.data.endMarginRes; + } + + if (eventData.data.overflowFlag != null) { + this.overflowFlag = eventData.data.overflowFlag; + } + + if (eventData.data.selfIndicatorColor != null) { + this.selfIndicatorColor = eventData.data.selfIndicatorColor; + } + + if (eventData.data.selfIndicatorHeight != null) { + this.selfIndicatorHeight = eventData.data.selfIndicatorHeight; + } + + if (eventData.data.selfIndicatorWidth != null) { + this.selfIndicatorWidth = eventData.data.selfIndicatorWidth; + } + + if (eventData.data.selfIndicatorBorderRadius != null) { + this.selfIndicatorBorderRadius = eventData.data.selfIndicatorBorderRadius; + } + + if (eventData.data.selfSelectedMode != null) { + this.selfSelectedMode = eventData.data.selfSelectedMode; + } + + if (eventData.data.selfSubTabBorderRadius != null) { + this.selfSubTabBorderRadius = eventData.data.selfSubTabBorderRadius; + } + + if (eventData.data.selfMarginTop != null) { + this.selfMarginTop = eventData.data.selfMarginTop; + } + + if (eventData.data.selfIndicatorColorStr != null) { + this.selfIndicatorColorStr = eventData.data.selfIndicatorColorStr; + } + + if (eventData.data.selfIndicatorHeightStr != null) { + this.selfIndicatorHeightStr = eventData.data.selfIndicatorHeightStr; + } + + if (eventData.data.selfIndicatorWidthStr != null) { + this.selfIndicatorWidthStr = eventData.data.selfIndicatorWidthStr; + } + + if (eventData.data.selfIndicatorBorderRadiusStr != null) { + this.selfIndicatorBorderRadiusStr = eventData.data.selfIndicatorBorderRadiusStr; + } + + if (eventData.data.selfSubTabBorderRadiusStr != null) { + this.selfSubTabBorderRadiusStr = eventData.data.selfSubTabBorderRadiusStr; + } + + if (eventData.data.selfMarginTopStr != null) { + this.selfMarginTopStr = eventData.data.selfMarginTopStr; + } + } + } + + aboutToAppear(){ + var stateChangeEvent = { + eventId: 183, + priority: events_emitter.EventPriority.LOW + } + events_emitter.on(stateChangeEvent, this.stateChangCallBack); + var abilityDelegator: any + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + var abilityDelegatorArguments: any + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'start run testcase!!!'); + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite) + } + + build() { + Column() { + Tabs({ barPosition: BarPosition.Start, controller: this.controller }) { + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Pink) + }.tabBar(SubTabBarStyle.of('pink').indicator({ + color: this.selfIndicatorColor, + height: this.selfIndicatorHeight, + width: this.selfIndicatorWidth, + borderRadius: this.selfIndicatorBorderRadius, + marginTop: this.selfMarginTop + }).selectedMode(this.selfSelectedMode) + .board({ borderRadius: this.selfSubTabBorderRadius }) + .labelStyle({ overflow: TextOverflow.Ellipsis, maxLines: 1, minFontSize: 5, heightAdaptivePolicy: TextHeightAdaptivePolicy.MIN_FONT_SIZE_FIRST, + font: { size: 15 } })) + .key('indicatorTest1') + + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Blue) + }.tabBar(SubTabBarStyle.of('pink').indicator({ + color: this.selfIndicatorColorStr, + height: this.selfIndicatorHeightStr, + width: this.selfIndicatorWidthStr, + borderRadius: this.selfIndicatorBorderRadiusStr, + marginTop: this.selfMarginTopStr + }).selectedMode(this.selfSelectedMode) + .board({ borderRadius: this.selfSubTabBorderRadiusStr }) + .labelStyle({ overflow: TextOverflow.Clip, maxLines: 1, minFontSize: 5, maxFontSize: 20, heightAdaptivePolicy: TextHeightAdaptivePolicy.LAYOUT_CONSTRAINT_FIRST, + font: { size: 15} })) + .key('indicatorTest2') + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Green) + } + .tabBar(SubTabBarStyle.of('pink') + .indicator({ + color: $r("app.color.Indicator_Color"), + height: $r("app.string.Indicator_Height"), + width: $r("app.string.Indicator_Width"), + borderRadius: $r("app.string.Indicator_Radius"), + marginTop: $r("app.string.Indicator_Space") + }) + .selectedMode(this.selfSelectedMode) + .board({ borderRadius: $r("app.string.Indicator_Sub_Radius") }) + .labelStyle({ overflow: TextOverflow.None, maxLines: 2, minFontSize: 5, maxFontSize: 20, heightAdaptivePolicy: TextHeightAdaptivePolicy.LAYOUT_CONSTRAINT_FIRST, + font: { size: 15 } })) + .key('indicatorTest3') + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Yellow) + }.tabBar(SubTabBarStyle.of('pink') + .indicator({ + color: 0xFFFF0000, //下划线颜色 + }) + .selectedMode(this.selfSelectedMode) + .board({ borderRadius: this.selfSubTabBorderRadius }) + .labelStyle({ overflow: TextOverflow.None, maxLines: 10, minFontSize: 5, maxFontSize: 20, heightAdaptivePolicy: TextHeightAdaptivePolicy.MAX_LINES_FIRST, + font: { size: 15 } })) + .key('indicatorTest4') + + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Yellow) + }.tabBar(SubTabBarStyle.of('pink')) + .key('indicatorTest5') + } + .vertical(true).scrollable(true).barMode(BarMode.Fixed) + .barWidth(70).barHeight('100%').animationDuration(400) + .onChange((index: number) => { + console.info(index.toString()) + }) + .height('200vp') + .width('90%') + .divider(this.nullFlag ? null : { strokeWidth: this.strokeWidthStr, + color: this.dividerColorStr, + startMargin: this.startMarginStr, + endMargin: this.endMarginStr + }) + + .fadingEdge(this.overflowFlag) + .key('tabsTest') + + Tabs({ barPosition: BarPosition.Start, controller: this.controller2 }) { + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Pink) + }.tabBar('pink') + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Yellow) + }.tabBar('yellow') + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Blue) + }.tabBar('blue') + } + .vertical(true).scrollable(true).barMode(BarMode.Fixed) + .barWidth(70).barHeight('100%').animationDuration(400) + .onChange((index: number) => { + console.info(index.toString()) + }) + .height('200vp') + .width('90%') + .divider({ strokeWidth: this.strokeWidthNum, + color: this.dividerColorNum, + startMargin: this.startMarginNum, + endMargin: this.endMarginNum + }) + .key('tabsTest2') + + Tabs({ barPosition: BarPosition.Start, controller: this.controller3 }) { + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Pink) + }.tabBar('pink') + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Yellow) + }.tabBar('yellow') + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Blue) + }.tabBar('blue') + } + .vertical(true).scrollable(true).barMode(BarMode.Fixed) + .barWidth(70).barHeight('100%').animationDuration(400) + .onChange((index: number) => { + console.info(index.toString()) + }) + .height('200vp') + .width('90%') + .divider({ strokeWidth: this.strokeWidthRes, + color: this.dividerColorRes, + startMargin: this.startMarginRes, + endMargin: this.endMarginRes + }) + .key('tabsTest3') + + + Tabs({ barPosition: BarPosition.Start, controller: this.controller4 }) { + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Pink) + }.tabBar('pink') + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Yellow) + }.tabBar('yellow') + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Blue) + }.tabBar('blue') + } + .vertical(true).scrollable(true).barMode(BarMode.Fixed) + .barWidth(70).barHeight('100%').animationDuration(400) + .onChange((index: number) => { + console.info(index.toString()) + }) + .height('200vp') + .width('90%') + .divider({ strokeWidth: this.strokeWidthStr, + color: this.dividerColor, + startMargin: this.startMarginStr, + endMargin: this.endMarginStr + }) + .key('tabsTest4') + + Tabs({ barPosition: BarPosition.Start, controller: this.controller4 }) { + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Pink) + }.tabBar('pink') + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Yellow) + }.tabBar('yellow') + TabContent() { + Column().width('100%').height('100%').backgroundColor(Color.Blue) + }.tabBar('blue') + } + .vertical(true).scrollable(true).barMode(BarMode.Fixed) + .barWidth(70).barHeight('100%').animationDuration(400) + .onChange((index: number) => { + console.info(index.toString()) + }) + .height('200vp') + .width('90%') + .key('tabsTest5') + + } + } +} \ No newline at end of file diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/TestRunner/OpenHarmonyTestRunner.ts b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/TestRunner/OpenHarmonyTestRunner.ts new file mode 100644 index 0000000000000000000000000000000000000000..d6c662824093f9339085214d247c6247faa86ae9 --- /dev/null +++ b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/TestRunner/OpenHarmonyTestRunner.ts @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2023 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 hilog from '@ohos.hilog'; +import TestRunner from '@ohos.application.testRunner' +import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' + +var abilityDelegator = undefined +var abilityDelegatorArguments = undefined + +function translateParamsToString(parameters) { + const keySet = new Set([ + '-s class', '-s notClass', '-s suite', '-s it', + '-s level', '-s testType', '-s size', '-s timeout', + '-s dryRun' + ]) + let targetParams = ''; + for (const key in parameters) { + if (keySet.has(key)) { + targetParams = `${targetParams} ${key} ${parameters[key]}` + } + } + return targetParams.trim() +} + +async function onAbilityCreateCallback() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'onAbilityCreateCallback'); +} + +async function addAbilityMonitorCallback(err: any) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', 'addAbilityMonitorCallback : %{public}s', JSON.stringify(err) ?? ''); +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner OnPrepare '); + } + + async onRun() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun run'); + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + var testAbilityName = abilityDelegatorArguments.bundleName + '.TestAbility' + let lMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + }; + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback) + var cmd = 'aa start -d 0 -a TestAbility' + ' -b ' + abilityDelegatorArguments.bundleName + cmd += ' '+translateParamsToString(abilityDelegatorArguments.parameters) + var debug = abilityDelegatorArguments.parameters['-D'] + if (debug == 'true') + { + cmd += ' -D' + } + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', 'cmd : %{public}s', cmd); + abilityDelegator.executeShellCommand(cmd, + (err: any, d: any) => { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', 'executeShellCommand : err : %{public}s', JSON.stringify(err) ?? ''); + hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', d.stdResult ?? ''); + hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', d.exitCode ?? ''); + }) + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun end'); + } +} \ No newline at end of file diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/test/List.test.ets b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..e2c14ff0dd31e3c2f8b5b60dcc4024c80826449e --- /dev/null +++ b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/test/List.test.ets @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2023 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 tabs from './Tabs' + +export default function testsuite() { + tabs() +} \ No newline at end of file diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/test/Tabs.ets b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/test/Tabs.ets new file mode 100644 index 0000000000000000000000000000000000000000..8c1b820408eb6b402c352a248ca90982af63932a --- /dev/null +++ b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/test/Tabs.ets @@ -0,0 +1,510 @@ +/* + * Copyright (c) 2023 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. + */ +// @ts-nocheck +import { describe, beforeEach, afterEach, it, expect } from '@ohos/hypium' +import events_emitter from '@ohos.events.emitter'; +import Utils from './Utils.ets'; +export default function tabs() { + describe('ActsAceTabsTest', function () { + beforeEach(async function (done) { + await Utils.sleep(2000); + console.info("tabs beforeEach start"); + done(); + }) + + afterEach(async function (done) { + console.info("tabs afterEach start"); + try { + var eventData = { + data: { + "strokeWidthStr": '10px', + "dividerColorStr": 'red', + "startMarginStr": '5px', + "endMarginStr": '5px', + + "nullFlag": false, + + "strokeWidthNum": 10, + "dividerColorNum": 0xFFFF0000, + "startMarginNum": 5, + "endMarginNum": 5, + + "dividerColor": Color.Red, + + "strokeWidthRes": $r("app.string.Divider_Stroke_Width"), + "dividerColorRes": $r("app.color.Divider_Color"), + "startMarginRes": $r("app.string.Divider_Start_Margin"), + "endMarginRes": $r("app.string.Divider_End_Margin"), + + "overflowFlag": false, + "selfIndicatorColor": Color.Red, + "selfIndicatorHeight": 10, + "selfIndicatorWidth": 30, + "selfIndicatorBorderRadius": 5, + "selfMarginTop": 10, + "selfSubTabBorderRadius": 20, + "selfSelectedMode": SelectedMode.INDICATOR, + + "selfIndicatorColorStr": "#FFFF0000", + "selfIndicatorHeightStr": "10vp", + "selfIndicatorWidthStr": "30vp", + "selfIndicatorBorderRadiusStr": "5vp", + "selfSubTabBorderRadiusStr": "20vp", + "selfMarginTopStr": "10vp", + } + } + var innerEvent = { + eventId: 183, + priority: events_emitter.EventPriority.LOW + } + console.info("[ArkUI_Tabs_Divider_0100] start to publish emit"); + events_emitter.emit(innerEvent, eventData); + } catch (err) { + console.log("[ArkUI_Tabs_Divider_0100] change component data error: " + err.message); + } + await Utils.sleep(2000); + done(); + }) + + + /** + * @tc.number ArkUI_Tabs_Divider_0100 + * @tc.name Tests the divier property of the tabs component + * @tc.desc the default divier parameter is {} + */ + it('ArkUI_Tabs_Divider_0100', 0, async function (done) { + console.info("ArkUI_Tabs_Divider_0100 start"); + let strJson = getInspectorByKey('tabsTest5'); + let obj = JSON.parse(strJson); + console.info("[ArkUI_Tabs_Divider_0100] divider:" + obj.$attrs.divider); + if(!obj.$attrs.divider.strokeWidth) { + expect(true).assertTrue(); + } else { + expect(true).assertFalse(); + } + done(); + }); + + /** + * @tc.number ArkUI_Tabs_Divider_0200 + * @tc.name Tests the divier property of the tabs component + * @tc.desc set divier parameter to type number + */ + it('ArkUI_Tabs_Divider_0200', 0, async function (done) { + console.info("ArkUI_Tabs_Divider_0200 start"); + let strJson = getInspectorByKey('tabsTest'); + let obj = JSON.parse(strJson); + + console.info("[ArkUI_Tabs_Divider_0200] divider:" + JSON.stringify(obj.$attrs.divider)); + let dividerObject = obj.$attrs.divider; + expect(dividerObject.strokeWidth).assertEqual("10.00px"); + expect(dividerObject.color).assertEqual("#FFFF0000"); + expect(dividerObject.startMargin).assertEqual("5.00px"); + expect(dividerObject.endMargin).assertEqual("5.00px"); + done(); + }); + + /** + * @tc.number ArkUI_Tabs_Divider_0300 + * @tc.name Tests the divier property of the tabs component + * @tc.desc set divier parameter to type string + */ + it('ArkUI_Tabs_Divider_0300', 0, async function (done) { + console.info("ArkUI_Tabs_Divider_0300 start"); + let strJson = getInspectorByKey('tabsTest2'); + let obj = JSON.parse(strJson); + console.info("[ArkUI_Tabs_Divider_0300] divider:" + JSON.stringify(obj.$attrs.divider)); + let dividerObject = obj.$attrs.divider; + expect(dividerObject.strokeWidth).assertEqual("10.00vp"); + expect(dividerObject.color).assertEqual('#FFFF0000'); + expect(dividerObject.startMargin).assertEqual("5.00vp"); + expect(dividerObject.endMargin).assertEqual("5.00vp"); + done(); + }); + + /** + * @tc.number ArkUI_Tabs_Divider_0400 + * @tc.name Tests the divier property of the tabs component + * @tc.desc set divier parameter to type Resource + */ + it('ArkUI_Tabs_Divider_0400', 0, async function (done) { + console.info("ArkUI_Tabs_Divider_0400 start"); + await Utils.sleep(2000); + let strJson = getInspectorByKey('tabsTest3'); + let obj = JSON.parse(strJson); + console.info("[ArkUI_Tabs_Divider_0400] divider:" + JSON.stringify(obj.$attrs.divider)); + let dividerObject = obj.$attrs.divider; + expect(dividerObject.strokeWidth).assertEqual("10.00px"); + expect(dividerObject.color).assertEqual('#FF121212'); + expect(dividerObject.startMargin).assertEqual("5.00px"); + expect(dividerObject.endMargin).assertEqual("5.00px"); + done(); + }); + + /** + * @tc.number ArkUI_Tabs_Divider_0500 + * @tc.name Tests the divier property of the tabs component + * @tc.desc set divier parameter to type Color + */ + it('ArkUI_Tabs_Divider_0500', 0, async function (done) { + console.info("ArkUI_Tabs_Divider_0500 start"); + await Utils.sleep(2000); + let strJson = getInspectorByKey('tabsTest4'); + let obj = JSON.parse(strJson); + console.info("[ArkUI_Tabs_Divider_0500] divider:" + JSON.stringify(obj.$attrs.divider)); + let dividerObject = obj.$attrs.divider; + expect(dividerObject.strokeWidth).assertEqual("10.00px"); + expect(dividerObject.color).assertEqual("#FFFF0000"); + expect(dividerObject.startMargin).assertEqual("5.00px"); + expect(dividerObject.endMargin).assertEqual("5.00px"); + done(); + }); + + /** + * @tc.number ArkUI_Tabs_Divider_0600 + * @tc.name Tests the divier property of the tabs component + * @tc.desc set divier parameter to null + */ + it('ArkUI_Tabs_Divider_0600', 0, async function (done) { + console.info("ArkUI_Tabs_Divider_0600 start"); + + try { + var eventData = { + data: { + "nullFlag": true, + } + } + var innerEvent = { + eventId: 183, + priority: events_emitter.EventPriority.LOW + } + console.info("[ArkUI_Tabs_Divider_0600] start to publish emit"); + events_emitter.emit(innerEvent, eventData); + } catch (err) { + console.log("[ArkUI_Tabs_Divider_0600] change component data error: " + err.message); + } + await Utils.sleep(2000); + let strJson = getInspectorByKey('tabsTest'); + let obj = JSON.parse(strJson); + console.info("[ArkUI_Tabs_Divider_0600] divider:" + JSON.stringify(obj.$attrs.divider)); + let dividerObject = obj.$attrs.divider; + expect(dividerObject.strokeWidth).assertEqual("0.00px"); + expect(dividerObject.color).assertEqual('#33182431'); + expect(dividerObject.startMargin).assertEqual('0.00px'); + expect(dividerObject.endMargin).assertEqual('0.00px'); + done(); + }); + + /** + * @tc.number ArkUI_Tabs_Divider_0700 + * @tc.name Tests the divier property of the tabs component + * @tc.desc set divier parameter to abnormol color value + */ + it('ArkUI_Tabs_Divider_0700', 0, async function (done) { + console.info("ArkUI_Tabs_Divider_0700 start"); + + try { + var eventData = { + data: { + "strokeWidthStr": '10px', + "dividerColorStr": 'xxxxxxxx', + "startMarginStr": '5px', + "endMarginStr": '5px', + } + } + var innerEvent = { + eventId: 183, + priority: events_emitter.EventPriority.LOW + } + console.info("[ArkUI_Tabs_Divider_0700] start to publish emit"); + events_emitter.emit(innerEvent, eventData); + } catch (err) { + console.log("[ArkUI_Tabs_Divider_0700] change component data error: " + err.message); + } + await Utils.sleep(2000); + let strJson = getInspectorByKey('tabsTest'); + let obj = JSON.parse(strJson); + console.info("[ArkUI_Tabs_Divider_0700] divider:" + JSON.stringify(obj.$attrs.divider)); + let dividerObject = obj.$attrs.divider; + expect(dividerObject.strokeWidth).assertEqual("10.00px"); + expect(dividerObject.color).assertEqual('#33182431'); + expect(dividerObject.startMargin).assertEqual("5.00px"); + expect(dividerObject.endMargin).assertEqual("5.00px"); + done(); + }); + + /** + * @tc.number ArkUI_Tabs_Divider_0800 + * @tc.name Tests the divier property of the tabs component + * @tc.desc set divier parameter to abnormol strokeWidthStr value + */ + it('ArkUI_Tabs_Divider_0800', 0, async function (done) { + console.info("ArkUI_Tabs_Divider_0800 start"); + + try { + var eventData = { + data: { + "strokeWidthStr": 'xxxxxxxx', + "dividerColorStr": 'red', + "startMarginStr": '5px', + "endMarginStr": '5px', + } + } + var innerEvent = { + eventId: 183, + priority: events_emitter.EventPriority.LOW + } + console.info("[ArkUI_Tabs_Divider_0900] start to publish emit"); + events_emitter.emit(innerEvent, eventData); + } catch (err) { + console.log("[ArkUI_Tabs_Divider_0800] change component data error: " + err.message); + } + await Utils.sleep(2000); + let strJson = getInspectorByKey('tabsTest'); + let obj = JSON.parse(strJson); + console.info("[ArkUI_Tabs_Divider_0800] divider:" + JSON.stringify(obj.$attrs.divider)); + let dividerObject = obj.$attrs.divider; + expect(dividerObject.strokeWidth).assertEqual('0.00vp'); + done(); + }); + + /** + * @tc.number ArkUI_Tabs_Divider_0900 + * @tc.name Tests the divier property of the tabs component + * @tc.desc set divier parameter to abnormol startMarginStr value + */ + it('ArkUI_Tabs_Divider_0900', 0, async function (done) { + console.info("ArkUI_Tabs_Divider_0900 start"); + + try { + var eventData = { + data: { + "strokeWidthStr": '10px', + "dividerColorStr": 'red', + "startMarginStr": 'xxxxxxxx', + "endMarginStr": '5px', + } + } + var innerEvent = { + eventId: 183, + priority: events_emitter.EventPriority.LOW + } + console.info("[ArkUI_Tabs_Divider_0900] start to publish emit"); + events_emitter.emit(innerEvent, eventData); + } catch (err) { + console.log("[ArkUI_Tabs_Divider_0900] change component data error: " + err.message); + } + await Utils.sleep(2000); + let strJson = getInspectorByKey('tabsTest'); + let obj = JSON.parse(strJson); + console.info("[ArkUI_Tabs_Divider_0900] divider:" + JSON.stringify(obj.$attrs.divider)); + let dividerObject = obj.$attrs.divider; + expect(dividerObject.startMargin).assertEqual('0.00vp'); + done(); + }); + + /** + * @tc.number ArkUI_Tabs_Divider_1000 + * @tc.name Tests the divier property of the tabs component + * @tc.desc set divier parameter to abnormol endMarginStr value + */ + it('ArkUI_Tabs_Divider_1000', 0, async function (done) { + console.info("ArkUI_Tabs_Divider_1000 start"); + + try { + var eventData = { + data: { + "strokeWidthStr": '10px', + "dividerColorStr": 'red', + "startMarginStr": '5px', + "endMarginStr": 'xxxxxxxx', + } + } + var innerEvent = { + eventId: 183, + priority: events_emitter.EventPriority.LOW + } + console.info("[ArkUI_Tabs_Divider_1000] start to publish emit"); + events_emitter.emit(innerEvent, eventData); + } catch (err) { + console.log("[ArkUI_Tabs_Divider_1000] change component data error: " + err.message); + } + await Utils.sleep(2000); + let strJson = getInspectorByKey('tabsTest'); + let obj = JSON.parse(strJson); + console.info("[ArkUI_Tabs_Divider_1000] divider:" + JSON.stringify(obj.$attrs.divider)); + let dividerObject = obj.$attrs.divider; + expect(dividerObject.endMargin).assertEqual('0.00vp'); + done(); + }); + + /** + * @tc.number ArkUI_Tabs_Divider_1100 + * @tc.name Tests the divider and indicator.selectedMode property of the tabs component + * @tc.desc set divider and indicator.selectedMode test + */ + it('ArkUI_Tabs_Divider_1100', 0, async function (done) { + console.info("ArkUI_Tabs_Divider_1100 start"); + + try { + var eventData = { + data: { + "strokeWidthStr": '10px', + "dividerColorStr": 'red', + "startMarginStr": '5px', + "endMarginStr": '5px', + "selfSelectedMode": SelectedMode.BOARD, + } + } + var innerEvent = { + eventId: 183, + priority: events_emitter.EventPriority.LOW + } + console.info("[ArkUI_Tabs_Divider_1100] start to publish emit"); + events_emitter.emit(innerEvent, eventData); + } catch (err) { + console.log("[ArkUI_Tabs_Divider_1100] change component data error: " + err.message); + } + await Utils.sleep(2000); + let strJson = getInspectorByKey('tabsTest'); + let strJson2 = getInspectorByKey('indicatorTest1'); + let obj = JSON.parse(strJson); + let obj2 = JSON.parse(strJson2); + console.info("[ArkUI_Tabs_Divider_1100] divider:" + JSON.stringify(obj.$attrs.divider)); + console.info("[ArkUI_Tabs_Divider_1100] selectedMode:" + obj2.$attrs.tabBar.selectedMode); + let dividerObject = obj.$attrs.divider; + expect(dividerObject.strokeWidth).assertEqual("10.00px"); + expect(dividerObject.color).assertEqual("#FFFF0000"); + expect(dividerObject.startMargin).assertEqual("5.00px"); + expect(dividerObject.endMargin).assertEqual("5.00px"); + expect(obj2.$attrs.tabBar.selectedMode).assertEqual("SelectedMode.BOARD"); + done(); + }); + + /** + * @tc.number ArkUI_Tabs_Divider_1200 + * @tc.name Tests the divier property of the tabs component + * @tc.desc set divier parameter to abnormol endMarginStr value + */ + it('ArkUI_Tabs_Divider_1200', 0, async function (done) { + console.info("ArkUI_Tabs_Divider_1200 start"); + + try { + var eventData = { + data: { + "strokeWidthStr": '10vp', + "startMarginStr": '10vp', + "endMarginStr": '10vp', + } + } + var innerEvent = { + eventId: 183, + priority: events_emitter.EventPriority.LOW + } + console.info("[ArkUI_Tabs_Divider_1200] start to publish emit"); + events_emitter.emit(innerEvent, eventData); + } catch (err) { + console.log("[ArkUI_Tabs_Divider_1200] change component data error: " + err.message); + } + await Utils.sleep(2000); + let strJson = getInspectorByKey('tabsTest'); + let obj = JSON.parse(strJson); + console.info("[ArkUI_Tabs_Divider_1200] divider:" + JSON.stringify(obj.$attrs.divider)); + let dividerObject = obj.$attrs.divider; + expect(dividerObject.strokeWidth).assertEqual('10.00vp'); + expect(dividerObject.startMargin).assertEqual('10.00vp'); + expect(dividerObject.endMargin).assertEqual('10.00vp'); + + try { + var eventData = { + data: { + "strokeWidthStr": '10px', + "startMarginStr": '10px', + "endMarginStr": '10px', + } + } + var innerEvent = { + eventId: 183, + priority: events_emitter.EventPriority.LOW + } + console.info("[ArkUI_Tabs_Divider_1200] start to publish emit"); + events_emitter.emit(innerEvent, eventData); + } catch (err) { + console.log("[ArkUI_Tabs_Divider_1200] change component data error: " + err.message); + } + await Utils.sleep(2000); + strJson = getInspectorByKey('tabsTest'); + obj = JSON.parse(strJson); + console.info("[ArkUI_Tabs_Divider_1200] divider:" + JSON.stringify(obj.$attrs.divider)); + dividerObject = obj.$attrs.divider; + expect(dividerObject.strokeWidth).assertEqual('10.00px'); + expect(dividerObject.startMargin).assertEqual('10.00px'); + expect(dividerObject.endMargin).assertEqual('10.00px'); + + try { + var eventData = { + data: { + "strokeWidthStr": '10fp', + "startMarginStr": '10fp', + "endMarginStr": '10fp', + } + } + var innerEvent = { + eventId: 183, + priority: events_emitter.EventPriority.LOW + } + console.info("[ArkUI_Tabs_Divider_1200] start to publish emit"); + events_emitter.emit(innerEvent, eventData); + } catch (err) { + console.log("[ArkUI_Tabs_Divider_1200] change component data error: " + err.message); + } + await Utils.sleep(2000); + strJson = getInspectorByKey('tabsTest'); + obj = JSON.parse(strJson); + console.info("[ArkUI_Tabs_Divider_1200] divider:" + JSON.stringify(obj.$attrs.divider)); + dividerObject = obj.$attrs.divider; + expect(dividerObject.strokeWidth).assertEqual('10.00fp'); + expect(dividerObject.startMargin).assertEqual('10.00fp'); + expect(dividerObject.endMargin).assertEqual('10.00fp'); + + try { + var eventData = { + data: { + "strokeWidthStr": '10lpx', + "startMarginStr": '10lpx', + "endMarginStr": '10lpx', + } + } + var innerEvent = { + eventId: 183, + priority: events_emitter.EventPriority.LOW + } + console.info("[ArkUI_Tabs_Divider_1200] start to publish emit"); + events_emitter.emit(innerEvent, eventData); + } catch (err) { + console.log("[ArkUI_Tabs_Divider_1200] change component data error: " + err.message); + } + await Utils.sleep(2000); + strJson = getInspectorByKey('tabsTest'); + obj = JSON.parse(strJson); + console.info("[ArkUI_Tabs_Divider_1200] divider:" + JSON.stringify(obj.$attrs.divider)); + dividerObject = obj.$attrs.divider; + expect(dividerObject.strokeWidth).assertEqual('10.00lpx'); + expect(dividerObject.startMargin).assertEqual('10.00lpx'); + expect(dividerObject.endMargin).assertEqual('10.00lpx'); + done(); + }); + }) +} diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/test/Utils.ets b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/test/Utils.ets new file mode 100644 index 0000000000000000000000000000000000000000..6fecbfe80e6e5a3882dac77004efbc26a7faefea --- /dev/null +++ b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/ets/test/Utils.ets @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023 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 class Utils { + static sleep(time){ + return new Promise((resolve,reject)=>{ + setTimeout(()=>{ + resolve("ok") + },time) + }).then(()=>{ + console.info(`sleep ${time} over...`) + }) + } +} diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/module.json b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/module.json new file mode 100644 index 0000000000000000000000000000000000000000..20b3b82812f632af44b6f121eb6567d4790c33f5 --- /dev/null +++ b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/module.json @@ -0,0 +1,41 @@ +{ + "module": { + "name": "phone", + "type": "feature", + "description": "$string:module_test_desc", + "mainElement": "TestAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:test_pages", + "metadata": [{ + "name": "ArkTSPartialUpdate", + "value": "true" + }], + "abilities": [ + { + "name": "TestAbility", + "srcEntrance": "./ets/TestAbility/TestAbility.ets", + "description": "$string:TestAbility_desc", + "icon": "$media:icon", + "label": "$string:TestAbility_label", + "visible": true, + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ] + } + ] + } +} diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/resources/base/element/color.json b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..81731b03bb86e5a25b60b4405956bd90cf1bac02 --- /dev/null +++ b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/resources/base/element/color.json @@ -0,0 +1,16 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + }, + { + "name": "Divider_Color", + "value": "#FF121212" + }, + { + "name": "Indicator_Color", + "value": "#FFFF0000" + } + ] +} \ No newline at end of file diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/resources/base/element/string.json b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..b82bde1f9d13024295e0020e844cae88b7b3858a --- /dev/null +++ b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/resources/base/element/string.json @@ -0,0 +1,48 @@ +{ + "string": [ + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "Divider_Stroke_Width", + "value": "10px" + }, + { + "name": "Divider_Start_Margin", + "value": "5px" + }, + { + "name": "Divider_End_Margin", + "value": "5px" + }, + { + "name": "Indicator_Height", + "value": "10vp" + }, + { + "name": "Indicator_Width", + "value": "30vp" + }, + { + "name": "Indicator_Radius", + "value": "5vp" + }, + { + "name": "Indicator_Sub_Radius", + "value": "20vp" + }, + { + "name": "Indicator_Space", + "value": "10vp" + } + ] +} \ No newline at end of file diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/resources/base/media/icon.png b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/resources/base/media/icon.png differ diff --git a/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/resources/base/profile/test_pages.json b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/resources/base/profile/test_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..77e90731b5a38d861663029b483df3d3ac9ec74b --- /dev/null +++ b/arkui/ace_ets_components_ux/ace_ets_component_tabs/src/main/resources/base/profile/test_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "TestAbility/pages/Index" + ] +} diff --git a/distributeddatamgr/distributedKVStoretest/distributedKVStorejstest/hap/src/main/js/test/SchemaJsTest.js b/distributeddatamgr/distributedKVStoretest/distributedKVStorejstest/hap/src/main/js/test/SchemaJsTest.js index b882502a2b46019a03e7c882b53f7ac9921fb48f..9c8e1a0534829ab1c6516d0a314d1c3b1b1320ad 100644 --- a/distributeddatamgr/distributedKVStoretest/distributedKVStorejstest/hap/src/main/js/test/SchemaJsTest.js +++ b/distributeddatamgr/distributedKVStoretest/distributedKVStorejstest/hap/src/main/js/test/SchemaJsTest.js @@ -19,7 +19,7 @@ import abilityFeatureAbility from '@ohos.ability.featureAbility' var context = abilityFeatureAbility.getContext(); const TEST_BUNDLE_NAME = 'ohos.acts.distributedKvStore'; -const TEST_STORE_ID = 'storeId'; +const TEST_STORE_ID = 'SchemaStoreId'; var kvManager = null; var kvStore = null; diff --git a/distributeddatamgr/relationalStoretest/relationalStoreStagetest/entry/src/main/ets/test/relationalStoreEtsunit.test.ets b/distributeddatamgr/relationalStoretest/relationalStoreStagetest/entry/src/main/ets/test/relationalStoreEtsunit.test.ets index ab22da648573c1a1512972f78380fd61443a9406..31b9d4a476d3d25dcf669ec177b4604959c374d6 100644 --- a/distributeddatamgr/relationalStoretest/relationalStoreStagetest/entry/src/main/ets/test/relationalStoreEtsunit.test.ets +++ b/distributeddatamgr/relationalStoretest/relationalStoreStagetest/entry/src/main/ets/test/relationalStoreEtsunit.test.ets @@ -24,119 +24,113 @@ function sleep(ms) { } export default function relationalStoreTest(context){ -describe('relationalStoreTest', function () { - beforeAll(async function () { - console.info(TAG + 'beforeAll') - }) + describe('relationalStoreTest', function () { + beforeAll(async function () { + console.info(TAG + 'beforeAll') + }) - beforeEach(function () { - console.info(TAG + 'beforeEach') - }) + beforeEach(function () { + console.info(TAG + 'beforeEach') + }) - afterEach(function () { - console.info(TAG + 'afterEach') - }) + afterEach(function () { + console.info(TAG + 'afterEach') + }) - afterAll(async function () { - console.info(TAG + 'afterAll') - }) + afterAll(async function () { + console.info(TAG + 'afterAll') + }) - console.log(TAG + "*************Unit Test Begin*************"); + console.log(TAG + "*************Unit Test Begin*************"); - /** - * @tc.name rdb store getRdbStore with securityLevel S1 - * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0100 - * @tc.desc rdb store getRdbStore with securityLevel S1 - * @tc.require: I5PIL6 - */ - it('SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0100', 0, async function (done) { - console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0100 start *************"); - let config = { - name: "secure.db", - securityLevel: dataRdb.SecurityLevel.S1 - } - let storePromise = dataRdb.getRdbStore(context, config); - storePromise.then(async (store) => { - try { - await store.executeSql(CREATE_TABLE_TEST); - } catch (err) { - expect(null).assertFail(); + /** + * @tc.name rdb store getRdbStore with securityLevel S1 + * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0100 + * @tc.desc rdb store getRdbStore with securityLevel S1 + * @tc.require: I5PIL6 + */ + it('SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0100', 0, async function (done) { + console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0100 start *************"); + let config = { + name: "secure.db", + securityLevel: dataRdb.SecurityLevel.S1 } - }).catch((err) => { - expect(null).assertFail(); + let storePromise = dataRdb.getRdbStore(context, config); + storePromise.then(async (store) => { + try { + await store.executeSql(CREATE_TABLE_TEST); + } catch (err) { + expect(null).assertFail(); + } + await dataRdb.deleteRdbStore(context,"secure.db"); + done(); + }).catch((err) => { + expect(null).assertFail(); + }) + console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0100 end *************"); }) - await storePromise - storePromise = null - await dataRdb.deleteRdbStore(context,"secure.db"); - done(); - console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0100 end *************"); - }) - /** - * @tc.name rdb store getRdbStore with securityLevel S2 - * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0200 - * @tc.desc rdb store getRdbStore with securityLevel S2 - * @tc.require: I5PIL6 - */ - it('SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0200', 0, async function (done) { - console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0200 start *************"); - let config = { - name: "secure.db", - securityLevel: dataRdb.SecurityLevel.S2 - } - let storePromise = dataRdb.getRdbStore(context, config); - storePromise.then(async (store) => { - try { - await store.executeSql(CREATE_TABLE_TEST); - } catch (err) { - expect(null).assertFail(); + /** + * @tc.name rdb store getRdbStore with securityLevel S2 + * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0200 + * @tc.desc rdb store getRdbStore with securityLevel S2 + * @tc.require: I5PIL6 + */ + it('SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0200', 0, async function (done) { + console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0200 start *************"); + let config = { + name: "secure.db", + securityLevel: dataRdb.SecurityLevel.S2 } - }).catch((err) => { - expect(null).assertFail(); + let storePromise = dataRdb.getRdbStore(context, config); + storePromise.then(async (store) => { + try { + await store.executeSql(CREATE_TABLE_TEST); + } catch (err) { + expect(null).assertFail(); + } + await dataRdb.deleteRdbStore(context,"secure.db"); + done(); + }).catch((err) => { + expect(null).assertFail(); + }) + console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0200 end *************"); }) - await storePromise - storePromise = null - await dataRdb.deleteRdbStore(context,"secure.db"); - done(); - console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0200 end *************"); - }) - /** - * @tc.name rdb store getRdbStore with securityLevel S3 - * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0300 - * @tc.desc rdb store getRdbStore with securityLevel S3 - * @tc.require: I5PIL6 - */ - it('SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0300', 0, async function (done) { - console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0300 start *************"); - let config = { - name: "secure.db", - securityLevel: dataRdb.SecurityLevel.S3 - } - let storePromise = dataRdb.getRdbStore(context, config); - storePromise.then(async (store) => { - try { - await store.executeSql(CREATE_TABLE_TEST); - } catch (err) { - expect(null).assertFail(); + /** + * @tc.name rdb store getRdbStore with securityLevel S3 + * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0300 + * @tc.desc rdb store getRdbStore with securityLevel S3 + * @tc.require: I5PIL6 + */ + it('SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0300', 0, async function (done) { + console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0300 start *************"); + let config = { + name: "secure.db", + securityLevel: dataRdb.SecurityLevel.S3 } - }).catch((err) => { - expect(null).assertFail(); + let storePromise = dataRdb.getRdbStore(context, config); + storePromise.then(async (store) => { + try { + await store.executeSql(CREATE_TABLE_TEST); + } catch (err) { + expect(null).assertFail(); + } + await dataRdb.deleteRdbStore(context,"secure.db"); + done(); + }).catch((err) => { + expect(null).assertFail(); + }) + console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0300 end *************"); }) - await storePromise - storePromise = null - await dataRdb.deleteRdbStore(context,"secure.db"); - done(); - console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0300 end *************"); - }) - /** - * @tc.name rdb store getRdbStore with securityLevel S4 - * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0400 - * @tc.desc rdb store getRdbStore with securityLevel S4 - * @tc.require: I5PIL6 - */ - it('SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0400', 0, async function (done) { + /** + * @tc.name rdb store getRdbStore with securityLevel S4 + * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0400 + * @tc.desc rdb store getRdbStore with securityLevel S4 + * @tc.require: I5PIL6 + */ + it('SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0400', 0, async function (done) { console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0400 start *************"); let config = { name: "secure.db", @@ -157,164 +151,163 @@ describe('relationalStoreTest', function () { console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_PROMISE_0400 end *************"); }) - /** - * @tc.name rdb store getRdbStore with securityLevel S1 - * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0100 - * @tc.desc rdb store getRdbStore with securityLevel S1 - * @tc.require: I5PIL6 - */ - it('SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0100', 0, async function (done) { - console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0100 start *************"); - let config = { - name: "secure.db", - securityLevel: dataRdb.SecurityLevel.S1 - } - dataRdb.getRdbStore(context, config, async (err,data) => { - if(err != null){ - console.info(TAG + "get rdb store error" + err.message) - expect(null).assertFail(); - }else{ - console.info(TAG + "create table success") + /** + * @tc.name rdb store getRdbStore with securityLevel S1 + * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0100 + * @tc.desc rdb store getRdbStore with securityLevel S1 + * @tc.require: I5PIL6 + */ + it('SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0100', 0, async function (done) { + console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0100 start *************"); + let config = { + name: "secure.db", + securityLevel: dataRdb.SecurityLevel.S1 } - dataRdb.deleteRdbStore(context,"secure.db").then(()=>{ - console.info(TAG + "Delete rdbstore success") - done(); - console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0100 end *************"); - }) - }); - }) + dataRdb.getRdbStore(context, config, async (err,data) => { + if(err != null){ + console.info(TAG + "get rdb store error" + err.message) + expect(null).assertFail(); + }else{ + console.info(TAG + "create table success") + } + dataRdb.deleteRdbStore(context,"secure.db").then(()=>{ + console.info(TAG + "Delete rdbstore success") + done(); + console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0100 end *************"); + }) + }); + }) - /** - * @tc.name rdb store getRdbStore with securityLevel S2 - * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0200 - * @tc.desc rdb store getRdbStore with securityLevel S2 - * @tc.require: I5PIL6 - */ - it('SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0200', 0, async function (done) { - console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0200 start *************"); - let config = { - name: "secure.db", - securityLevel: dataRdb.SecurityLevel.S2 - } - dataRdb.getRdbStore(context, config,async (err,data) => { - if(err != null){ - console.info(TAG + "get rdb store error") - expect(null).assertFail(); - }else{ - console.info(TAG + "create table success") + /** + * @tc.name rdb store getRdbStore with securityLevel S2 + * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0200 + * @tc.desc rdb store getRdbStore with securityLevel S2 + * @tc.require: I5PIL6 + */ + it('SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0200', 0, async function (done) { + console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0200 start *************"); + let config = { + name: "secure.db", + securityLevel: dataRdb.SecurityLevel.S2 } - dataRdb.deleteRdbStore(context, "secure.db").then(() => { - done(); - console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0200 end *************"); - }) - }); - }) + dataRdb.getRdbStore(context, config,async (err,data) => { + if(err != null){ + console.info(TAG + "get rdb store error") + expect(null).assertFail(); + }else{ + console.info(TAG + "create table success") + } + dataRdb.deleteRdbStore(context, "secure.db").then(() => { + done(); + console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0200 end *************"); + }) + }); + }) - /** - * @tc.name rdb store getRdbStore with securityLevel S3 - * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0300 - * @tc.desc rdb store getRdbStore with securityLevel S3 - * @tc.require: I5PIL6 - */ - it('SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0300', 0, async function (done) { - console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0300 start *************"); - let config = { - name: "secure.db", - securityLevel: dataRdb.SecurityLevel.S3 - } - dataRdb.getRdbStore(context, config,async (err,data) => { - if(err != null){ - console.info(TAG + "get rdb store error") - expect(null).assertFail(); - }else{ - console.info(TAG + "create table success") + /** + * @tc.name rdb store getRdbStore with securityLevel S3 + * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0300 + * @tc.desc rdb store getRdbStore with securityLevel S3 + * @tc.require: I5PIL6 + */ + it('SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0300', 0, async function (done) { + console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0300 start *************"); + let config = { + name: "secure.db", + securityLevel: dataRdb.SecurityLevel.S3 } - dataRdb.deleteRdbStore(context, "secure.db").then(() => { - done(); - console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0300 end *************"); - }) - }); - }) + dataRdb.getRdbStore(context, config,async (err,data) => { + if(err != null){ + console.info(TAG + "get rdb store error") + expect(null).assertFail(); + }else{ + console.info(TAG + "create table success") + } + dataRdb.deleteRdbStore(context, "secure.db").then(() => { + done(); + console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0300 end *************"); + }) + }); + }) - /** - * @tc.name rdb store getRdbStore with securityLevel S4 - * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0400 - * @tc.desc rdb store getRdbStore with securityLevel S4 - * @tc.require: I5PIL6 - */ - it('SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0400', 0, async function (done) { - console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0400 start *************"); - let config = { - name: "secure.db", - securityLevel: dataRdb.SecurityLevel.S4 - } - dataRdb.getRdbStore(context, config,async (err,data) => { - if(err != null){ - console.info(TAG + "get rdb store error") - expect(null).assertFail(); - }else{ - console.info(TAG + "get rdb store success") + /** + * @tc.name rdb store getRdbStore with securityLevel S4 + * @tc.number SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0400 + * @tc.desc rdb store getRdbStore with securityLevel S4 + * @tc.require: I5PIL6 + */ + it('SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0400', 0, async function (done) { + console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0400 start *************"); + let config = { + name: "secure.db", + securityLevel: dataRdb.SecurityLevel.S4 + } + dataRdb.getRdbStore(context, config,async (err,data) => { + if(err != null){ + console.info(TAG + "get rdb store error") + expect(null).assertFail(); + }else{ + console.info(TAG + "get rdb store success") + } + dataRdb.deleteRdbStore(context,"secure.db").then(() => { + done(); + console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0400 end *************"); + }) + }); + }) + + /** + * @tc.name rdb store deleteRdbStore + * @tc.number SUB_DDM_RELATIONALETS_DELETERDBSTORE_PROMISE_0100 + * @tc.desc rdb store deleteRdbStore + * @tc.require: I5PIL6 + */ + it('SUB_DDM_RELATIONALETS_DELETERDBSTORE_PROMISE_0100', 0, async function (done) { + console.log(TAG + "************* SUB_DDM_RELATIONALETS_DELETERDBSTORE_PROMISE_0100 start *************"); + let config = { + name: "secure.db", + securityLevel: dataRdb.SecurityLevel.S4 } - dataRdb.deleteRdbStore(context,"secure.db").then(() => { + let deleteResult = false + await dataRdb.getRdbStore(context, config).then(async (store) => { + console.info(TAG + "create table success") + await dataRdb.deleteRdbStore(context,"secure.db").then(() => { + deleteResult = true + console.info(`${TAG} delete rdb store success,result is ${deleteResult}`) + }); + expect(deleteResult).assertTrue(); done(); - console.log(TAG + "************* SUB_DDM_RELATIONALETS_GETRDBSTORE_CALLBACK_0400 end *************"); }) - }); - }) - - /** - * @tc.name rdb store deleteRdbStore - * @tc.number SUB_DDM_RELATIONALETS_DELETERDBSTORE_PROMISE_0100 - * @tc.desc rdb store deleteRdbStore - * @tc.require: I5PIL6 - */ - it('SUB_DDM_RELATIONALETS_DELETERDBSTORE_PROMISE_0100', 0, async function (done) { - console.log(TAG + "************* SUB_DDM_RELATIONALETS_DELETERDBSTORE_PROMISE_0100 start *************"); - let config = { - name: "secure.db", - securityLevel: dataRdb.SecurityLevel.S4 - } - let deleteResult = false - await dataRdb.getRdbStore(context, config).then(async (store) => { - console.info(TAG + "create table success") + console.log(TAG + "************* SUB_DDM_RELATIONALETS_DELETERDBSTORE_PROMISE_0100 end *************"); }) - await dataRdb.deleteRdbStore(context,"secure.db").then(() => { - deleteResult = true - console.info(`${TAG} delete rdb store success,result is ${deleteResult}`) - }); - expect(deleteResult).assertTrue(); - done(); - console.log(TAG + "************* SUB_DDM_RELATIONALETS_DELETERDBSTORE_PROMISE_0100 end *************"); - }) - /** - * @tc.name rdb store deleteRdbStore - * @tc.number SUB_DDM_RELATIONALETS_DELETERDBSTORE_CALLBACK_0100 - * @tc.desc rdb store deleteRdbStore - * @tc.require: I5PIL6 - */ - it('SUB_DDM_RELATIONALETS_DELETERDBSTORE_CALLBACK_0100', 0, async function (done) { - console.log(TAG + "************* SUB_DDM_RELATIONALETS_DELETERDBSTORE_CALLBACK_0100 start *************"); - let config = { - name: "secure.db", - securityLevel: dataRdb.SecurityLevel.S1 - } - let deleteResult = false - await dataRdb.getRdbStore(context, config).then(async (store) => { - console.info(TAG + "create rdb store success") - }) - dataRdb.deleteRdbStore(context,"secure.db", (err, data) => { - if(err == undefined){ - deleteResult = true - console.info(`${TAG} delete rdb store success,result is ${deleteResult}`) + /** + * @tc.name rdb store deleteRdbStore + * @tc.number SUB_DDM_RELATIONALETS_DELETERDBSTORE_CALLBACK_0100 + * @tc.desc rdb store deleteRdbStore + * @tc.require: I5PIL6 + */ + it('SUB_DDM_RELATIONALETS_DELETERDBSTORE_CALLBACK_0100', 0, async function (done) { + console.log(TAG + "************* SUB_DDM_RELATIONALETS_DELETERDBSTORE_CALLBACK_0100 start *************"); + let config = { + name: "secure.db", + securityLevel: dataRdb.SecurityLevel.S1 } - done(); + let deleteResult = false + await dataRdb.getRdbStore(context, config).then(async (store) => { + console.info(TAG + "create rdb store success") + dataRdb.deleteRdbStore(context,"secure.db", (err, data) => { + if(err == undefined){ + deleteResult = true + console.info(`${TAG} delete rdb store success,result is ${deleteResult}`) + } + }) + await sleep(1000) + expect(deleteResult).assertTrue(); + done(); + }) + console.log(TAG + "************* SUB_DDM_RELATIONALETS_DELETERDBSTORE_CALLBACK_0100 end *************"); }) - await sleep(1000) - expect(deleteResult).assertTrue(); - done(); - console.log(TAG + "************* SUB_DDM_RELATIONALETS_DELETERDBSTORE_CALLBACK_0100 end *************"); + console.log(TAG + "*************Unit Test End*************"); }) - console.log(TAG + "*************Unit Test End*************"); -}) } \ No newline at end of file diff --git a/global/i18n_standard/intljs/src/main/js/test/Lang.test.js b/global/i18n_standard/intljs/src/main/js/test/Lang.test.js index 3737a6298e31e412b9ffda6fcdf6b89fc1389d99..b7a62515942019c1c0c50906913b1fa2fa7d0c3a 100644 --- a/global/i18n_standard/intljs/src/main/js/test/Lang.test.js +++ b/global/i18n_standard/intljs/src/main/js/test/Lang.test.js @@ -208,7 +208,7 @@ describe('LangTest', function () { console.log('i18n_test_preferredlanguage_1100 ' + 'start'); let value = I18n.getAppPreferredLanguage(); console.log('i18n_test_preferredlanguage_1100 ' + value); - expect(value).assertEqual('zh-Hans'); + expect(value).assertContain('zh'); }) /* * diff --git a/multimedia/media/media_js_standard/AVPlayerTestBase.js b/multimedia/media/media_js_standard/AVPlayerTestBase.js index 88f2ebca40b6d04f6b010ba0b64fdefb27d60526..b609c55bd0cf24dea4a2dc7c5379849eda54457c 100644 --- a/multimedia/media/media_js_standard/AVPlayerTestBase.js +++ b/multimedia/media/media_js_standard/AVPlayerTestBase.js @@ -71,6 +71,16 @@ function toPreparePromise(avPlayer, playTest) { }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); } +async function preparePromise(avPlayer) { + if (typeof(avPlayer) == 'undefined') { + return; + } + await avPlayer.prepare().then(() => { + console.info('case prepare called'); + console.info('case avPlayer.duration: ' + avPlayer.duration); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); +} + function addCnt(countArr) { if (countArr != null) { countArr[0]++; @@ -387,7 +397,7 @@ export function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } -function setAVPlayerPlayAndPauseWithCallBack(src, avPlayer, playTest, playTime, done) { +function setAVPlayerPlayAndPauseWithCallBack(src, avPlayer, playTime, done) { let playPauseCount = 0; let surfaceID = globalThis.value; console.info(`case setAVPlayerPlayAndPauseWithCallBack in, surfaceID is ${surfaceID}`); @@ -399,7 +409,7 @@ function setAVPlayerPlayAndPauseWithCallBack(src, avPlayer, playTest, playTime, avPlayer.surfaceId = surfaceID; console.info('playPauseLoopWithCallBack play state is INITIALIZED') // step 1: initialized -> prepared -> play - toPreparePromise(avPlayer, playTest); + preparePromise(avPlayer); await sleep(2000); avPlayer.play() break; @@ -453,7 +463,7 @@ function setAVPlayerPlayAndPauseWithCallBack(src, avPlayer, playTest, playTime, }); } -export async function avPlayerWithCallBack(src, avPlayer, playTest, playTime, done) { +async function idle(src, avPlayer) { console.info(`case media source: ${src}`) await media.createAVPlayer().then((video) => { if (typeof(video) != 'undefined') { @@ -462,11 +472,15 @@ export async function avPlayerWithCallBack(src, avPlayer, playTest, playTime, do } else { console.error('case createAVPlayer failed'); expect().assertFail(); - done(); } }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); - setAVPlayerPlayAndPauseWithCallBack(src, avPlayer, playTest, playTime, done); - setSource(avPlayer, src); + return avPlayer; +} + +export async function avPlayerWithCallBack(src, avPlayer, playTime, done) { + avPlayer = await idle(src, avPlayer) + setAVPlayerPlayAndPauseWithCallBack(src, avPlayer, playTime, done); + await setSource(avPlayer, src); } async function playToPauseLoop(avPlayer){ @@ -474,7 +488,7 @@ async function playToPauseLoop(avPlayer){ console.info('playToPauseLoop play success'); expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); }, (err) => { - console.error('playToPauseLoop play filed,error message is :' + err.message) + console.error('playToPauseLoop play filed,error message is :' + err.message) }) if(avPlayer.state == AV_PLAYER_STATE.PLAYING){ avPlayer.loop = true; @@ -489,44 +503,1656 @@ async function playToPauseLoop(avPlayer){ }) } -export async function avPlayerWithoutCallBack(src, avPlayer, playTest, done) { +export async function createToRelease(src, avPlayer, done) { + for(var i = 0;i < 1000; i++){ + let surfaceID = globalThis.value; + avPlayer = await idle(src, avPlayer) + await setSource(avPlayer, src); + console.info('CreateToRelease setSource'); + if(avPlayer.state == AV_PLAYER_STATE.INITIALIZED) { + avPlayer.surfaceId = surfaceID; + await avPlayer.release().then(() => { + console.info('CreateToRelease avPlayer from stop to release') + console.info(`case CreateToRelease loop is ${i}`); + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + avPlayer = null; + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + } + } + done(); +} + +export async function playToCompleted(src, avPlayer, done) { + avPlayer = await idle(src, avPlayer) + playToCompletedLoop(src, avPlayer, done); + await setSource(avPlayer, src); +} + +async function playToCompletedLoop(src, avPlayer, done) { + let playToCompletedCount = 0; let surfaceID = globalThis.value; - console.info(`case avPlayerWithoutCallBack in, surfaceID is ${surfaceID}`); - console.info(`case media source: ${src}`) - await media.createAVPlayer().then((video) => { - if (typeof(video) != 'undefined') { - console.info('case createAVPlayer success'); - avPlayer = video; - } else { - console.error('case createAVPlayer failed'); - expect().assertFail(); + console.info(`case playToCompletedLoop in, surfaceID is ${surfaceID}`); + avPlayer.on('stateChange', async (state, reason) => { + console.info(`case stateChange called, state is ${state}, reason is ${reason}`); + console.info(`case state is ${state}`); + switch (state) { + case AV_PLAYER_STATE.INITIALIZED: + avPlayer.surfaceId = surfaceID; + console.info('playToCompletedLoop play state is INITIALIZED') + // step 1: initialized -> prepared -> play + preparePromise(avPlayer); + await sleep(2000); + avPlayer.play() + break; + case AV_PLAYER_STATE.PLAYING: + avPlayer.loop = false; + console.info('playToCompletedLoop play state is PLAYING') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + playToCompletedCount++; + if(playToCompletedCount == 1001){ + // step 4: playing -> stop -> release + avPlayer.stop().then(() => { + console.info('playToCompletedLoop avPlayer from play to stop') + avPlayer.release().then(() => { + console.info('playToCompletedLoop avPlayer from stop to release') + offCallback(avPlayer, ['stateChange', 'error']); + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + }else{ + // step 2: playing -> seek loop + avPlayer.seek(10034, media.SeekMode.SEEK_NEXT_SYNC) + console.info('playToCompletedLoop avPlayer from play to seek,time is :' + playToCompletedCount) + } + break; + case AV_PLAYER_STATE.COMPLETED: + expect(avPlayer.currentTime).assertEqual(avPlayer.duration); + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.COMPLETED); + console.info('playToCompletedLoop avPlayer from COMPLETED to play') + // step 3: COMPLETED -> play loop + avPlayer.play(); + break; + case AV_PLAYER_STATE.ERROR: + expect().assertFail(); + avPlayer.release().then(() => { + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + break; + default: + break; + } + }); + avPlayer.on('error', async (err) => { + console.error(`case error called, errMessage is ${err.message}`); + expect().assertFail(); + await avPlayer.release().then(() => { + avPlayer = null; + done(); + }); + }); +} + +export async function seekLoop(src, avPlayer, done) { + let surfaceID = globalThis.value; + avPlayer = await idle(src, avPlayer) + seekLoopWithCallback(avPlayer); + await setSource(avPlayer, src); + if(avPlayer.state == AV_PLAYER_STATE.INITIALIZED) { + avPlayer.surfaceId = surfaceID; + console.info('seekLoop case prepare success'); + preparePromise(avPlayer); + await sleep(2000); + } + await avPlayer.play().then(() => { + console.info('seekLoop play success'); + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + }, (err) => { + console.error('seekLoop play filed,error message is :' + err.message) + }) + if(avPlayer.state == AV_PLAYER_STATE.PLAYING){ + console.info('seekLoop avPlayer from play to seek') + // play seek loop 1000 times + for(var loopTime = 0;loopTime < 1000; loopTime++){ + avPlayer.seek(loopTime) + console.info(`case seekLoopWithCallback loopTime is ${loopTime}`); } + } + await avPlayer.stop().then(() => { + console.info('seekLoopWithCallback avPlayer from play to stop') + offCallback(avPlayer, ['stateChange', 'seekDone']); + avPlayer.release().then(() => { + console.info('seekLoopWithCallback avPlayer from stop to release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); - setSource(avPlayer, src); - console.info('avPlayerWithoutCallBack setSource'); - avPlayer.surfaceId = surfaceID; +} + +async function seekLoopWithCallback(avPlayer) { + avPlayer.on('seekDone', async (seekDoneTime) => { + console.info(`case seekDone called seekDoneTime is ${seekDoneTime}`); + }); +} + +export async function seekLoopWithoutCallback(src, avPlayer, done) { + let surfaceID = globalThis.value; + console.info(`case Initialized in, surfaceID is ${surfaceID}`); + avPlayer = await idle(src, avPlayer) + await setSource(avPlayer, src); if(avPlayer.state == AV_PLAYER_STATE.INITIALIZED) { - toPreparePromise(avPlayer, playTest); + avPlayer.surfaceId = surfaceID; + preparePromise(avPlayer); await sleep(2000); } - if(avPlayer.state == AV_PLAYER_STATE.PREPARED){ - console.info('avPlayerWithoutCallBack avPlayer from PREPARED to play') - // play to pause loop 1000 times - for(var i = 0;i < 1000; i++){ - await playToPauseLoop(avPlayer) - console.info(`case avPlayerWithoutCallBack playToPauseLoop is ${i}`); + await avPlayer.play().then(() => { + console.info('seekLoopWithoutCallback play success'); + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + }, (err) => { + console.error('seekLoopWithoutCallback play filed,error message is :' + err.message) + }) + if(avPlayer.state == AV_PLAYER_STATE.PLAYING){ + console.info('seekLoopWithoutCallback avPlayer from play to seek') + // play seek loop 1000 times + for(var loopTime = 0;loopTime < 1000; loopTime++){ + avPlayer.seek(loopTime) + console.info(`case seekLoopWithoutCallback loopTime is ${loopTime}`); } } await avPlayer.stop().then(() => { - console.info('avPlayerWithoutCallBack avPlayer from play to stop') + console.info('seekLoopWithoutCallback avPlayer from play to stop') avPlayer.release().then(() => { - console.info('avPlayerWithoutCallBack avPlayer from stop to release') + console.info('seekLoopWithoutCallback avPlayer from stop to release') expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); done(); }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); } +export async function prepareToStopLoop(src, avPlayer, done) { + let surfaceID = globalThis.value; + console.info(`case prepareToStopLoop Initialized in, surfaceID is ${surfaceID}`); + avPlayer = await idle(src, avPlayer) + setSource(avPlayer, src); + console.info('prepareToStopLoop setSource'); + if(avPlayer.state == AV_PLAYER_STATE.INITIALIZED) { + avPlayer.surfaceId = surfaceID; + } + // prepare to stop loop 1000 times + for(var i = 0;i < 1000; i++){ + await avPlayer.prepare().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('prepareToStopLoop avPlayer state is prepared') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + + console.info('prepareToStopLoop avPlayer from prepare to stop') + + await avPlayer.stop().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.STOPPED); + console.info('prepareToStopLoop avPlayer state is stop') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + + console.info(`case PrepareToStopLoop is ${i}`); + } + await avPlayer.release().then(() => { + console.info('prepareToStopLoop avPlayer from stop to release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); +} + +export async function prepareToResetLoop(src, avPlayer, done) { + let surfaceID = globalThis.value; + console.info(`case prepareToResetLoop Initialized in, surfaceID is ${surfaceID}`); + avPlayer = await idle(src, avPlayer) + // url -> prepare -> play -> reset loop 1000 times + for(var i = 0;i < 1000; i++){ + await setSource(avPlayer, src); + console.info('prepareToResetLoop setSource'); + console.info('prepareToResetLoop avPlayer state is :' + avPlayer.state) + await sleep(20) + avPlayer.surfaceId = surfaceID; + await avPlayer.prepare().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('prepareToResetLoop avPlayer state is prepared') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + + await avPlayer.play().then(() => { + console.info('prepareToResetLoop play success'); + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + }, (err) => { + console.error('prepareToResetLoop play filed,error message is :' + err.message) + }) + + await avPlayer.reset().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.IDLE); + console.info('prepareToResetLoop avPlayer state is reset') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + + console.info(`case prepareToReset loop is ${i}`); + } + + await avPlayer.release().then(() => { + console.info('prepareToResetLoop avPlayer from stop to release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); +} + +export async function createToReleaseLoop(src, avPlayer, done) { + for(var i = 0;i < 1000; i++){ + let surfaceID = globalThis.value; + console.info(`case createToReleaseLoop Initialized in, surfaceID is ${surfaceID}`); + avPlayer = await idle(src, avPlayer) + // url -> prepare -> play -> reset loop 1000 times + await setSource(avPlayer, src); + console.info('createToReleaseLoop setSource'); + await sleep(20) + avPlayer.surfaceId = surfaceID; + await avPlayer.prepare().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('createToReleaseLoop avPlayer state is prepared') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + + await avPlayer.play().then(() => { + console.info('createToReleaseLoop play success'); + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + }, (err) => { + console.error('createToReleaseLoop play filed,error message is :' + err.message) + }) + await avPlayer.release().then(() => { + console.info('createToReleaseLoop avPlayer from stop to release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + + console.info(`case createToReleaseLoop loop is ${i}`); + } + await avPlayer.release().then(() => { + console.info('createToReleaseLoop avPlayer from stop to release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); +} + +let createLoopTime = 0; +let createTotalTime = 0; +let createStart; +export async function createTimeWithCallback(src, avPlayer, done) { + avPlayer = await idle(src, avPlayer) + createStart = Date.now(); + console.info(`createTimeWithCallback createStart time is : ${createStart}`) + createTimeWithCallback(src, avPlayer, done) +} + +function createTimeCallback(src, avPlayer, done){ + let end; + let execution; + avPlayer.on('stateChange', async (state, reason) => { + console.info(`createTimeCallback stateChange called, state is ${state}, reason is ${reason}`); + console.info(`createTimeCallback state is ${state}`); + switch (state) { + case AV_PLAYER_STATE.IDLE: + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.IDLE); + end = Date.now(); + console.info(`createTimeCallback end time is : ${end}`) + execution = parseInt(end - createStart) + createTotalTime = createTotalTime + execution; + console.info("createTimeCallback execution time is :" + execution) + createLoopTime++; + avPlayer.release() + case AV_PLAYER_STATE.RELEASED: + console.info('createTimeCallback play state is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + if(createLoopTime == 10){ + let avg = createTotalTime/10; + console.info("createTimeCallback avg time is :" + avg) + createLoopTime = 0; + createTotalTime = 0; + done(); + }else{ + avPlayer = null; + createTimeWithCallback(src, avPlayer, done) + } + break; + default: + break; + } + }); +} + +export async function createTimeWithoutCallback(src, avPlayer, done) { + let totalTime = 0; + for(var i = 0;i < 10;i++){ + let start = Date.now(); + console.info(`createTimeWithoutCallback start time is : ${start}`) + avPlayer = await idle(src, avPlayer) + let end = Date.now() + let execution = parseInt(end - start) + console.info("createTimeWithoutCallback execution time is :" + execution) + totalTime = totalTime + execution; + await avPlayer.release().then(() => { + console.info('createTimeWithoutCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + } + let avg = totalTime/10; + console.info("createTimeWithoutCallback avg time is :" + avg) + done(); +} + +export async function prepareTimeWithoutCallback(src, avPlayer, done) { + let totalTime = 0; + let surfaceID = globalThis.value; + for(var i = 0;i < 10;i++){ + avPlayer = await idle(src, avPlayer) + await setSource(avPlayer, src); + console.info('prepareTimeWithoutCallback setSource'); + await sleep(20) + avPlayer.surfaceId = surfaceID; + let start = Date.now(); + console.info(`prepareTimeWithoutCallback start time is : ${start}`) + let end; + await avPlayer.prepare().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('prepareTimeWithoutCallback avPlayer state is prepared') + end = Date.now() + console.info(`prepareTimeWithoutCallback end time is : ${end}`) + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + let execution = parseInt(end - start) + console.info("prepareTimeWithoutCallback execution time is :" + execution) + totalTime = totalTime + execution; + await avPlayer.release().then(() => { + console.info('prepareTimeWithoutCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + } + let avg = totalTime/10; + console.info("prepareTimeWithoutCallback avg time is :" + avg) + done(); +} + +export async function prepareTimeWithCallback(src, avPlayer, done) { + avPlayer = await idle(src, avPlayer) + prepareTimeCallback(src, avPlayer, done) + await setSource(avPlayer, src); +} + +async function prepareTimeCallback(src, avPlayer, done) { + let surfaceID = globalThis.value; + let start; + let end; + let execution; + let loopTime = 0; + let totalTime = 0; + console.info(`case setCallback in, surfaceID is ${surfaceID}`); + avPlayer.on('stateChange', async (state, reason) => { + console.info(`case stateChange called, state is ${state}, reason is ${reason}`); + console.info(`case state is ${state}`); + switch (state) { + case AV_PLAYER_STATE.IDLE: + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.IDLE); + if(loopTime == 10){ + avPlayer.release().then(() => { + console.info('prepareTimeWithCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + avPlayer = null; + let avg = totalTime/10; + console.info("prepareTimeWithCallback avg time is :" + avg) + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + }else{ + setSource(avPlayer, src) + } + case AV_PLAYER_STATE.INITIALIZED: + avPlayer.surfaceId = surfaceID; + console.info('prepareTimeWithCallback play state is INITIALIZED') + // step 1: initialized -> prepared + start = Date.now(); + console.info(`prepareTimeWithCallback start time is : ${start}`) + avPlayer.prepare() + break; + case AV_PLAYER_STATE.PREPARED: + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('prepareTimeWithCallback avPlayer state is prepared') + end = Date.now(); + console.info(`prepareTimeWithCallback end time is : ${end}`) + execution = parseInt(end - start) + console.info("prepareTimeWithCallback execution time is :" + execution) + totalTime = totalTime + execution; + loopTime++; + avPlayer.reset() + break; + default: + break; + } + }); +} + +export async function playTimeWithoutCallback(src, avPlayer, done) { + let totalTime = 0; + let surfaceID = globalThis.value; + for(var i = 0;i < 10;i++){ + avPlayer = await idle(src, avPlayer) + await setSource(avPlayer, src); + console.info('playTimeWithoutCallback setSource'); + await sleep(20) + avPlayer.surfaceId = surfaceID; + await avPlayer.prepare().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('playTimeWithoutCallback avPlayer state is prepared') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + let start = Date.now(); + let end; + console.info(`playTimeWithoutCallback start time is : ${start}`) + await avPlayer.play().then(() => { + end = Date.now(); + console.info(`playTimeWithoutCallback end time is : ${end}`) + console.info('playTimeWithoutCallback play success'); + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + }, (err) => { + console.error('playTimeWithoutCallback play filed,error message is :' + err.message) + }) + let execution = parseInt(end - start) + console.info("playTimeWithoutCallback execution time is :" + execution) + totalTime = totalTime + execution; + await avPlayer.release().then(() => { + console.info('playTimeWithoutCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + avPlayer = null; + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + } + let avg = totalTime/10; + console.info("playTimeWithoutCallback avg time is :" + avg) + done(); +} + +export async function playTimeWithCallback(src, avPlayer, done) { + avPlayer = await idle(src, avPlayer) + playTimeCallback(avPlayer, done) + await setSource(avPlayer, src); +} + +export function playTimeCallback(avPlayer, done) { + let surfaceID = globalThis.value; + let start; + let end; + let execution; + let loopTime = 0; + let totalTime = 0; + console.info(`case setCallback in, surfaceID is ${surfaceID}`); + avPlayer.on('stateChange', async (state, reason) => { + console.info(`case stateChange called, state is ${state}, reason is ${reason}`); + console.info(`case state is ${state}`); + switch (state) { + case AV_PLAYER_STATE.INITIALIZED: + avPlayer.surfaceId = surfaceID; + console.info('playTimeCallback play state is INITIALIZED') + // step 1: initialized -> prepared + avPlayer.prepare((err) => { + if (err != null) { + console.error(`case prepare error, errMessage is ${err.message}`); + expect().assertFail(); + done(); + } else { + console.info('playTimeCallback play state is prepared') + } + }); + await sleep(2000); + break; + case AV_PLAYER_STATE.PREPARED: + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('playTimeCallback avPlayer state is prepared') + start = Date.now(); + console.info(`playTimeCallback start time is : ${start}`) + // step 2: prapared -> play + avPlayer.play() + break; + case AV_PLAYER_STATE.PLAYING: + console.info('playTimeCallback play state is PLAYING') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + end = Date.now(); + console.info(`playTimeCallback end time is : ${end}`) + execution = parseInt(end - start) + console.info("playTimeCallback execution time is :" + execution) + totalTime = totalTime + execution; + loopTime++; + if(loopTime == 10){ + avPlayer.release().then(() => { + console.info('playTimeCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + avPlayer = null; + let avg = totalTime/10; + console.info("playTimeWithCallback avg time is :" + avg) + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + }else{ + avPlayer.pause() + } + break; + case AV_PLAYER_STATE.PAUSED: + console.info('playTimeWithCallback play state is PAUSED') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PAUSED); + start = Date.now(); + console.info(`playTimeCallback start time is : ${start}`) + // step 3: pause -> playing loop + avPlayer.play().then(() => { + console.info('playTimeWithCallback avPlayer from pause to play') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + break; + default: + break; + } + }); +} + +export async function pauseTimeWithoutCallback(src, avPlayer, done) { + let totalTime = 0; + let surfaceID = globalThis.value; + for(var i = 0;i < 10;i++){ + let execution; + let end; + avPlayer = await idle(src, avPlayer) + await setSource(avPlayer, src); + console.info('pauseTimeWithoutCallback setSource'); + await sleep(20) + avPlayer.surfaceId = surfaceID; + await avPlayer.prepare().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('pauseTimeWithoutCallback avPlayer state is prepared') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + await avPlayer.play().then(() => { + console.info('pauseTimeWithoutCallback play success'); + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + }, (err) => { + console.error('pauseTimeWithoutCallback play filed,error message is :' + err.message) + }) + let start = Date.now(); + + console.info(`pauseTimeWithoutCallback start time is : ${start}`) + await avPlayer.pause().then(() => { + console.info('pauseTimeWithoutCallback pause success'); + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PAUSED); + end = Date.now(); + console.info(`pauseTimeWithoutCallback end time is : ${end}`) + execution = parseInt(end - start) + console.info("pauseTimeWithoutCallback execution time is :" + execution) + }, (err) => { + console.error('pauseTimeWithoutCallback pause filed,error message is :' + err.message) + }) + totalTime = totalTime + execution; + await avPlayer.release().then(() => { + console.info('pauseTimeWithoutCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + } + let avg = totalTime/10; + console.info("pauseTimeWithoutCallback avg time is :" + avg) + done(); +} + +export async function pauseTimeWithCallback(src, avPlayer, done) { + avPlayer = await idle(src, avPlayer) + pauseTimeCallback(avPlayer, done) + await setSource(avPlayer, src); +} + +function pauseTimeCallback(avPlayer, done) { + let surfaceID = globalThis.value; + let start; + let end; + let execution; + let loopTime = 0; + let totalTime = 0; + console.info(`case setCallback in, surfaceID is ${surfaceID}`); + avPlayer.on('stateChange', async (state, reason) => { + console.info(`case stateChange called, state is ${state}, reason is ${reason}`); + console.info(`case state is ${state}`); + switch (state) { + case AV_PLAYER_STATE.INITIALIZED: + avPlayer.surfaceId = surfaceID; + console.info('pauseTimeCallback play state is INITIALIZED') + // step 1: initialized -> prepared + avPlayer.prepare((err) => { + if (err != null) { + console.error(`case prepare error, errMessage is ${err.message}`); + expect().assertFail(); + done(); + } else { + console.info('pauseTimeCallback play state is prepared') + } + }); + await sleep(2000); + break; + case AV_PLAYER_STATE.PREPARED: + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('pauseTimeCallback avPlayer state is prepared') + avPlayer.play() + break; + case AV_PLAYER_STATE.PLAYING: + console.info('pauseTimeCallback play state is PLAYING') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + start = Date.now(); + console.info(`pauseTimeCallback start time is : ${start}`) + avPlayer.pause(); + break; + case AV_PLAYER_STATE.PAUSED: + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PAUSED); + end = Date.now(); + console.info(`pauseTimeCallback end time is : ${end}`) + execution = parseInt(end - start) + console.info("pauseTimeCallback execution time is :" + execution) + totalTime = totalTime + execution; + loopTime++; + if(loopTime == 10){ + avPlayer.release().then(() => { + console.info('pauseTimeCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + avPlayer = null; + let avg = totalTime/10; + console.info("pauseTimeCallback avg time is :" + avg) + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + }else{ + avPlayer.play() + } + break; + default: + break; + } + }); +} + +export async function stopTimeWithoutCallback(src, avPlayer, done) { + let totalTime = 0; + let surfaceID = globalThis.value; + for(var i = 0;i < 10;i++){ + avPlayer = await idle(src, avPlayer) + await setSource(avPlayer, src); + console.info('stopTimeWithoutCallback setSource'); + await sleep(20) + avPlayer.surfaceId = surfaceID; + await avPlayer.prepare().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('stopTimeWithoutCallback avPlayer state is prepared') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + await avPlayer.play().then(() => { + console.info('stopTimeWithoutCallback play success'); + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + }, (err) => { + console.error('stopTimeWithoutCallback play filed,error message is :' + err.message) + }) + let start = Date.now(); + console.info(`stopTimeWithoutCallback start time is : ${start}`) + let end; + await avPlayer.stop().then(() => { + end = Date.now(); + console.info(`stopTimeWithoutCallback end time is : ${end}`) + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.STOPPED); + console.info('stopTimeWithoutCallback avPlayer state is stop') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + let execution = parseInt(end - start) + console.info("stopTimeWithoutCallback execution time is :" + execution) + totalTime = totalTime + execution; + await avPlayer.release().then(() => { + console.info('stopTimeWithoutCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + } + let avg = totalTime/10; + console.info("stopTimeWithoutCallback avg time is :" + avg) + done(); +} + +export async function stopTimeWithCallback(src, avPlayer, done) { + avPlayer = await idle(src, avPlayer) + stopTimeCallback(src, avPlayer, done) + await setSource(avPlayer, src); +} + +function stopTimeCallback(src, avPlayer, done) { + let surfaceID = globalThis.value; + let start; + let end; + let execution; + let loopTime = 0; + let totalTime = 0; + console.info(`case setCallback in, surfaceID is ${surfaceID}`); + avPlayer.on('stateChange', async (state, reason) => { + console.info(`case stateChange called, state is ${state}, reason is ${reason}`); + console.info(`case state is ${state}`); + switch (state) { + case AV_PLAYER_STATE.IDLE: + setSource(avPlayer, src); + break; + case AV_PLAYER_STATE.INITIALIZED: + avPlayer.surfaceId = surfaceID; + console.info('stopTimeCallback play state is INITIALIZED') + // step 1: initialized -> prepared + avPlayer.prepare((err) => { + if (err != null) { + console.error(`case prepare error, errMessage is ${err.message}`); + expect().assertFail(); + done(); + } else { + console.info('stopTimeCallback play state is prepared') + } + }); + await sleep(2000); + break; + case AV_PLAYER_STATE.PREPARED: + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('stopTimeCallback avPlayer state is prepared') + start = Date.now(); + console.info(`stopTimeCallback start time is : ${start}`) + loopTime++; + avPlayer.stop() + break; + case AV_PLAYER_STATE.STOPPED: + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.STOPPED); + end = Date.now(); + console.info(`stopTimeCallback end time is : ${end}`) + execution = parseInt(end - start) + console.info("stopTimeCallback execution time is :" + execution) + totalTime = totalTime + execution; + if(loopTime == 10){ + avPlayer.release().then(() => { + console.info('stopTimeCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + avPlayer = null; + let avg = totalTime/10; + console.info("stopTimeCallback avg time is :" + avg) + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + }else{ + avPlayer.reset() + } + break; + default: + break; + } + }); +} + +export async function resetTimeWithoutCallback(src, avPlayer, done) { + let totalTime = 0; + let surfaceID = globalThis.value; + for(var i = 0;i < 10;i++){ + avPlayer = await idle(src, avPlayer) + await setSource(avPlayer, src); + console.info('resetTimeWithoutCallback setSource'); + await sleep(20) + avPlayer.surfaceId = surfaceID; + await avPlayer.prepare().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('resetTimeWithoutCallback avPlayer state is prepared') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + let end; + await avPlayer.play().then(() => { + console.info('resetTimeWithoutCallback play success'); + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + }, (err) => { + console.error('resetTimeWithoutCallback play filed,error message is :' + err.message) + }) + let start = Date.now(); + console.info(`resetTimeWithoutCallback start time is : ${start}`) + await avPlayer.reset().then(() => { + end = Date.now(); + console.info(`resetTimeWithoutCallback end time is : ${end}`) + console.info('reset success'); + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.IDLE); + }, (err) => { + console.error('reset filed,error message is :' + err.message) + }) + let execution = parseInt(end - start) + console.info("resetTimeWithoutCallback execution time is :" + execution) + totalTime = totalTime + execution; + await avPlayer.release().then(() => { + console.info('resetTimeWithoutCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + } + let avg = totalTime/10; + console.info("resetTimeWithoutCallback avg time is :" + avg) + done(); +} + +export async function resetTimeWithCallback(src, avPlayer, done) { + avPlayer = await idle(src, avPlayer) + resetTimeCallback(src, avPlayer, done) + await setSource(avPlayer, src); +} + +function resetTimeCallback(src, avPlayer, done) { + let surfaceID = globalThis.value; + let start; + let end; + let execution; + let loopTime = 0; + let totalTime = 0; + console.info(`case setCallback in, surfaceID is ${surfaceID}`); + avPlayer.on('stateChange', async (state, reason) => { + console.info(`case stateChange called, state is ${state}, reason is ${reason}`); + console.info(`case state is ${state}`); + switch (state) { + case AV_PLAYER_STATE.IDLE: + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.IDLE); + end = Date.now(); + console.info(`resetTimeCallback end time is : ${end}`) + execution = parseInt(end - start) + console.info("resetTimeCallback execution time is :" + execution) + totalTime = totalTime + execution; + loopTime++; + if(loopTime == 10){ + avPlayer.release().then(() => { + console.info('resetTimeCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + avPlayer = null; + let avg = totalTime/10; + console.info("resetTimeCallback avg time is :" + avg) + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + }else{ + setSource(avPlayer, src) + } + break; + case AV_PLAYER_STATE.INITIALIZED: + avPlayer.surfaceId = surfaceID; + console.info('resetTimeCallback play state is INITIALIZED') + start = Date.now(); + console.info(`resetTimeCallback start time is : ${start}`) + avPlayer.reset().then(() => { + console.info('reset success'); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + break; + default: + break; + } + }); +} + +export async function releaseTimeWithoutCallback(src, avPlayer, done) { + let totalTime = 0; + let surfaceID = globalThis.value; + for(var i = 0;i < 10;i++){ + avPlayer = await idle(src, avPlayer) + await setSource(avPlayer, src); + console.info('releaseTimeWithoutCallback setSource'); + await sleep(20) + avPlayer.surfaceId = surfaceID; + let start = Date.now(); + console.info(`releaseTimeWithoutCallback start time is : ${start}`) + let end; + await avPlayer.release().then(() => { + console.info('releaseTimeWithoutCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + end = Date.now(); + console.info(`releaseTimeWithoutCallback end time is : ${end}`) + let execution = parseInt(end - start) + console.info("releaseTimeWithoutCallback execution time is :" + execution) + totalTime = totalTime + execution; + } + let avg = totalTime/10; + console.info("releaseTimeWithoutCallback avg time is :" + avg) + done(); +} + +let releaseTotalTime = 0; +let releaseLoop = 0; +export async function releaseTimeWithCallback(src, avPlayer, done) { + avPlayer = await idle(src, avPlayer) + releaseTimeCallback(src, avPlayer, done) + await setSource(avPlayer, src); +} + +function releaseTimeCallback(src, avPlayer, done) { + let surfaceID = globalThis.value; + let start; + let end; + let execution; + console.info(`case setCallback in, surfaceID is ${surfaceID}`); + avPlayer.on('stateChange', async (state, reason) => { + console.info(`case stateChange called, state is ${state}, reason is ${reason}`); + console.info(`case state is ${state}`); + switch (state) { + case AV_PLAYER_STATE.INITIALIZED: + avPlayer.surfaceId = surfaceID; + console.info('releaseTimeCallback play state is INITIALIZED') + start = Date.now(); + console.info(`releaseTimeCallback start time is : ${start}`) + avPlayer.release() + break; + case AV_PLAYER_STATE.RELEASED: + console.info('releaseTimeCallback play state is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + end = Date.now(); + console.info(`releaseTimeCallback end time is : ${end}`) + execution = parseInt(end - start) + console.info("releaseTimeCallback execution time is :" + execution) + releaseTotalTime = releaseTotalTime + execution; + releaseLoop++; + if(releaseLoop == 10){ + let avg = releaseTotalTime/10; + console.info("createTimeCallback avg time is :" + avg) + releaseTotalTime = 0; + releaseLoop = 0; + done(); + }else{ + avPlayer = null; + releaseTimeWithCallback(src, avPlayer, done) + } + break; + default: + break; + } + }); +} + +export function getTotalTime(releaseTotalTime){ + return releaseTotalTime; +} + +export async function seekTimeWithoutCallback(src, avPlayer, done) { + let totalTime = 0; + let surfaceID = globalThis.value; + for(var i = 0;i < 10;i++){ + avPlayer = await idle(src, avPlayer) + await setSource(avPlayer, src); + console.info('seekTimeWithoutCallback setSource'); + await sleep(20) + avPlayer.surfaceId = surfaceID; + await avPlayer.prepare().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('seekTimeWithoutCallback avPlayer state is prepared') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + let end; + await avPlayer.play().then(() => { + console.info('seekTimeWithoutCallback play success'); + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + }, (err) => { + console.error('seekTimeWithoutCallback play filed,error message is :' + err.message) + }) + let start = Date.now(); + console.info(`seekTimeWithoutCallback start time is : ${start}`) + await avPlayer.seek(100) + end = Date.now(); + console.info(`seekTimeWithoutCallback end time is : ${end}`) + let execution = parseInt(end - start) + console.info("seekTimeWithoutCallback execution time is :" + execution) + totalTime = totalTime + execution; + await avPlayer.release().then(() => { + console.info('seekTimeWithoutCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + } + let avg = totalTime/10; + console.info("seekTimeWithoutCallback avg time is :" + avg) + done(); +} + +export async function seekTimeWithCallback(src, avPlayer, done) { + avPlayer = await idle(src, avPlayer) + seekTimeCallback(avPlayer, done) + await setSource(avPlayer, src); +} + +function seekTimeCallback(avPlayer, done) { + let surfaceID = globalThis.value; + let start; + let end; + let execution; + let loopTime = 0; + let totalTime = 0; + console.info(`case setCallback in, surfaceID is ${surfaceID}`); + avPlayer.on('stateChange', async (state, reason) => { + console.info(`case stateChange called, state is ${state}, reason is ${reason}`); + console.info(`case state is ${state}`); + switch (state) { + case AV_PLAYER_STATE.INITIALIZED: + avPlayer.surfaceId = surfaceID; + console.info('seekTimeCallback play state is INITIALIZED') + avPlayer.prepare((err) => { + if (err != null) { + console.error(`case prepare error, errMessage is ${err.message}`); + expect().assertFail(); + done(); + } else { + console.info('seekTimeCallback play state is prepared') + } + }); + await sleep(2000); + break; + case AV_PLAYER_STATE.PREPARED: + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('seekTimeCallback avPlayer state is prepared') + avPlayer.play() + break; + case AV_PLAYER_STATE.PLAYING: + console.info('seekTimeCallback play state is PLAYING') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + start = Date.now(); + console.info(`seekTimeCallback start time is : ${start}`) + loopTime+=20; + if(loopTime == 220){ + avPlayer.release().then(() => { + console.info('seekTimeCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + avPlayer = null; + let avg = totalTime/10; + console.info("seekTimeCallback avg time is :" + avg) + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + }else{ + avPlayer.seek(loopTime) + } + break; + case AV_PLAYER_STATE.PAUSED: + console.info('seekTimeCallback play state is PAUSED') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PAUSED); + avPlayer.play().then(() => { + console.info('seekTimeCallback avPlayer from pause to play') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + break; + default: + break; + } + }); + avPlayer.on('seekDone', async (seekDoneTime) => { + end = Date.now(); + console.info(`seekTimeCallback end time is : ${end}`) + execution = parseInt(end - start) + console.info("seekTimeCallback execution time is :" + execution) + totalTime = totalTime + execution; + console.info(`case seekDone called seekDoneTime is ${seekDoneTime}`); + avPlayer.pause() + }); +} + +export async function getTrackDescriptionTimeWithoutCallback(src, avPlayer, done) { + let totalTime = 0; + let surfaceID = globalThis.value; + for(var i = 0;i < 10;i++){ + avPlayer = await idle(src, avPlayer) + await setSource(avPlayer, src); + console.info('getTrackDescriptionTimeWithoutCallback setSource'); + await sleep(20) + avPlayer.surfaceId = surfaceID; + await avPlayer.prepare().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('getTrackDescriptionTimeWithoutCallback avPlayer state is prepared') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + await avPlayer.play().then(() => { + console.info('getTrackDescriptionTimeWithoutCallback play success'); + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + }, (err) => { + console.error('getTrackDescriptionTimeWithoutCallback play filed,error message is :' + err.message) + }) + let arrayDescription; + let start = Date.now(); + console.info(`getTrackDescriptionTimeWithoutCallback start time is : ${start}`) + let end; + await avPlayer.getTrackDescription().then((arrList) => { + if (arrList != null) { + arrayDescription = arrList; + } else { + console.log('video getTrackDescription fail'); + } + }).catch((error) => { + console.info(`video catchCallback, error:${error}`); + }); + end = Date.now(); + console.info(`getTrackDescriptionTimeWithoutCallback end time is : ${end}`) + let execution = parseInt(end - start) + console.info("getTrackDescriptionTimeWithoutCallback execution time is :" + execution) + totalTime = totalTime + execution; + await avPlayer.release().then(() => { + console.info('getTrackDescriptionTimeWithoutCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + } + let avg = totalTime/10; + console.info("getTrackDescriptionTimeWithoutCallback avg time is :" + avg) + done(); +} + +export async function getTrackDescriptionTimeWithCallback(src, avPlayer, done) { + avPlayer = await idle(src, avPlayer) + getTrackDescriptionTimeCallback(avPlayer, done) + await setSource(avPlayer, src); +} + +function getTrackDescriptionTimeCallback(avPlayer, done) { + let surfaceID = globalThis.value; + let start; + let end; + let execution; + let loopTime = 0; + let totalTime = 0; + let arrayDescription; + console.info(`case setCallback in, surfaceID is ${surfaceID}`); + avPlayer.on('stateChange', async (state, reason) => { + console.info(`case stateChange called, state is ${state}, reason is ${reason}`); + console.info(`case state is ${state}`); + switch (state) { + case AV_PLAYER_STATE.INITIALIZED: + avPlayer.surfaceId = surfaceID; + console.info('getTrackDescriptionTimeCallback play state is INITIALIZED') + avPlayer.prepare((err) => { + if (err != null) { + console.error(`case prepare error, errMessage is ${err.message}`); + expect().assertFail(); + done(); + } else { + console.info('getTrackDescriptionTimeCallback play state is prepared') + } + }); + await sleep(2000); + break; + case AV_PLAYER_STATE.PREPARED: + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('getTrackDescriptionTimeCallback avPlayer state is prepared') + avPlayer.play() + break; + case AV_PLAYER_STATE.PLAYING: + console.info('getTrackDescriptionTimeCallback play state is PLAYING') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + start = Date.now(); + console.info(`getTrackDescriptionTimeCallback start time is : ${start}`) + if(loopTime == 10){ + avPlayer.release().then(() => { + console.info('getTrackDescriptionTimeCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + avPlayer = null; + let avg = totalTime/10; + console.info("getTrackDescriptionTimeCallback avg time is :" + avg) + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + }else{ + loopTime++; + avPlayer.getTrackDescription().then((arrList) => { + if (arrList != null) { + arrayDescription = arrList; + end = Date.now(); + console.info(`getTrackDescriptionTimeCallback end time is : ${end}`) + execution = parseInt(end - start) + console.info("getTrackDescriptionTimeCallback execution time is :" + execution) + totalTime = totalTime + execution; + + } else { + console.log('video getTrackDescription fail'); + } + }).catch((error) => { + console.info(`video catchCallback, error:${error}`); + }); + avPlayer.pause() + } + break; + case AV_PLAYER_STATE.PAUSED: + console.info('getTrackDescriptionTimeCallback play state is PAUSED') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PAUSED); + avPlayer.play().then(() => { + console.info('getTrackDescriptionTimeCallback avPlayer from pause to play') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + break; + default: + break; + } + }); +} + +export async function setSpeedTimeWithoutCallback(src, avPlayer, done) { + let totalTime = 0; + let surfaceID = globalThis.value; + for(var i = 0;i < 10;i++){ + avPlayer = await idle(src, avPlayer) + await setSource(avPlayer, src); + console.info('setSpeedTimeWithoutCallback setSource'); + await sleep(20) + avPlayer.surfaceId = surfaceID; + await avPlayer.prepare().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('setSpeedTimeWithoutCallback avPlayer state is prepared') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + let start = Date.now(); + console.info(`setSpeedTimeWithoutCallback start time is : ${start}`) + await avPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_1_00_X); + let end = Date.now(); + console.info(`setSpeedTimeWithoutCallback end time is : ${end}`) + let execution = parseInt(end - start) + console.info("setSpeedTimeWithoutCallback execution time is :" + execution) + totalTime = totalTime + execution; + await avPlayer.release().then(() => { + console.info('setSpeedTimeWithoutCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + } + let avg = totalTime/10; + console.info("setSpeedTimeWithoutCallback avg time is :" + avg) + done(); +} + +export async function setSpeedTimeWithCallback(src, avPlayer, done) { + avPlayer = await idle(src, avPlayer) + setSpeedTimeCallback(avPlayer, done) + await setSource(avPlayer, src); +} + +function setSpeedTimeCallback(avPlayer, done) { + let surfaceID = globalThis.value; + let start; + let end; + let execution; + let loopTime = 0; + let totalTime = 0; + console.info(`case setCallback in, surfaceID is ${surfaceID}`); + avPlayer.on('stateChange', async (state, reason) => { + console.info(`case stateChange called, state is ${state}, reason is ${reason}`); + console.info(`case state is ${state}`); + switch (state) { + case AV_PLAYER_STATE.INITIALIZED: + avPlayer.surfaceId = surfaceID; + console.info('setSpeedTimeCallback play state is INITIALIZED') + // step 1: initialized -> prepared + avPlayer.prepare((err) => { + if (err != null) { + console.error(`case prepare error, errMessage is ${err.message}`); + expect().assertFail(); + done(); + } else { + console.info('setSpeedTimeCallback play state is prepared') + } + }); + await sleep(2000); + break; + case AV_PLAYER_STATE.PREPARED: + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('setSpeedTimeCallback avPlayer state is prepared') + avPlayer.play() + break; + case AV_PLAYER_STATE.PLAYING: + console.info('setSpeedTimeCallback play state is PLAYING') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + if(loopTime == 10){ + avPlayer.release().then(() => { + offCallback(avPlayer, ['stateChange', 'error']); + console.info('setSpeedTimeCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + let avg = totalTime/10; + console.info("setSpeedTimeCallback avg time is :" + avg) + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + }else{ + start = Date.now(); + console.info(`setSpeedTimeCallback start time is : ${start}`) + loopTime++ + avPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_1_00_X); + } + break; + case AV_PLAYER_STATE.PAUSED: + console.info('setSpeedTimeCallback play state is PAUSED') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PAUSED); + avPlayer.play().then(() => { + console.info('setSpeedTimeCallback avPlayer from pause to play') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + break; + default: + break; + } + }); + avPlayer.on('speedDone', (speed) => { + end = Date.now(); + console.info(`setSpeedTimeCallback end time is : ${end}`) + execution = parseInt(end - start) + console.info("setSpeedTimeCallback execution time is :" + execution) + totalTime = totalTime + execution; + console.info('speedDone success,and speed value is:' + speed) + avPlayer.pause() + }); +} + +export async function setBitrateTimeWithoutCallback(src, avPlayer, done) { + let totalTime = 0; + let surfaceID = globalThis.value; + for(var i = 0;i < 10;i++){ + avPlayer = await idle(src, avPlayer) + await setSource(avPlayer, src); + console.info('setBitrateTimeWithoutCallback setSource'); + await sleep(20) + avPlayer.surfaceId = surfaceID; + await avPlayer.prepare().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('setBitrateTimeWithoutCallback avPlayer state is prepared') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + let start = Date.now(); + console.info(`setBitrateTimeWithoutCallback start time is : ${start}`) + let bitrate = 96000 + await avPlayer.setBitrate(bitrate) + let end = Date.now(); + console.info(`setBitrateTimeWithoutCallback end time is : ${end}`) + let execution = parseInt(end - start) + console.info("setBitrateTimeWithoutCallback execution time is :" + execution) + totalTime = totalTime + execution; + await avPlayer.release().then(() => { + console.info('setBitrateTimeWithoutCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + } + let avg = totalTime/10; + console.info("setBitrateTimeWithoutCallback avg time is :" + avg) + done(); +} + +export async function setBitrateTimeWithCallback(src, avPlayer, done) { + avPlayer = await idle(src, avPlayer) + playTimeCallback(avPlayer, done) + await setSource(avPlayer, src); +} + +function setBitrateTimeCallback(avPlayer, done) { + let surfaceID = globalThis.value; + let start; + let end; + let execution; + let loopTime = 0; + let totalTime = 0; + console.info(`case setCallback in, surfaceID is ${surfaceID}`); + avPlayer.on('stateChange', async (state, reason) => { + console.info(`case stateChange called, state is ${state}, reason is ${reason}`); + console.info(`case state is ${state}`); + switch (state) { + case AV_PLAYER_STATE.INITIALIZED: + avPlayer.surfaceId = surfaceID; + console.info('setBitrateTimeCallback play state is INITIALIZED') + // step 1: initialized -> prepared + avPlayer.prepare((err) => { + if (err != null) { + console.error(`case prepare error, errMessage is ${err.message}`); + expect().assertFail(); + done(); + } else { + console.info('setBitrateTimeCallback play state is prepared') + } + }); + await sleep(2000); + break; + case AV_PLAYER_STATE.PREPARED: + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('setBitrateTimeCallback avPlayer state is prepared') + avPlayer.play() + break; + case AV_PLAYER_STATE.PLAYING: + console.info('setBitrateTimeCallback play state is PLAYING') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + if(loopTime == 10){ + avPlayer.release().then(() => { + offCallback(avPlayer, ['stateChange', 'error']); + console.info('setBitrateTimeCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + let avg = totalTime/10; + console.info("setBitrateTimeCallback avg time is :" + avg) + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + }else{ + start = Date.now(); + console.info(`setBitrateTimeCallback start time is : ${start}`) + loopTime++ + let bitrate = 96000 + avPlayer.setBitrate(bitrate) + } + break; + case AV_PLAYER_STATE.PAUSED: + console.info('setBitrateTimeCallback play state is PAUSED') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PAUSED); + avPlayer.play().then(() => { + console.info('setBitrateTimeCallback avPlayer from pause to play') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + break; + default: + break; + } + }); + avPlayer.on('bitrateDone', (bitrate) => { + end = Date.now(); + console.info(`setBitrateTimeCallback end time is : ${end}`) + execution = parseInt(end - start) + console.info("setBitrateTimeCallback execution time is :" + execution) + totalTime = totalTime + execution; + console.info('bitrate success,and speed value is:' + bitrate) + avPlayer.pause() + }); +} + +export async function setVolumeTimeWithoutCallback(src, avPlayer, done) { + let totalTime = 0; + let surfaceID = globalThis.value; + for(var i = 0;i < 10;i++){ + avPlayer = await idle(src, avPlayer) + await setSource(avPlayer, src); + console.info('setVolumeTimeWithoutCallback setSource'); + await sleep(20) + avPlayer.surfaceId = surfaceID; + await avPlayer.prepare().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('setVolumeTimeWithoutCallback avPlayer state is prepared') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + let start = Date.now(); + console.info(`setVolumeTimeWithoutCallback start time is : ${start}`) + let volume = 1.0 + avPlayer.setVolume(volume) + let end = Date.now(); + console.info(`setVolumeTimeWithoutCallback end time is : ${end}`) + let execution = parseInt(end - start) + console.info("setVolumeTimeWithoutCallback execution time is :" + execution) + totalTime = totalTime + execution; + await avPlayer.release().then(() => { + console.info('setVolumeTimeWithoutCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + } + let avg = totalTime/10; + console.info("setVolumeTimeWithoutCallback avg time is :" + avg) + done(); +} + +export async function setVolumeTimeWithCallback(src, avPlayer, done) { + avPlayer = await idle(src, avPlayer) + playTimeCallback(avPlayer, done) + await setSource(avPlayer, src); +} + +function setVolumeTimeCallback(avPlayer, done) { + let surfaceID = globalThis.value; + let start; + let end; + let execution; + let loopTime = 0; + let totalTime = 0; + console.info(`case setCallback in, surfaceID is ${surfaceID}`); + avPlayer.on('stateChange', async (state, reason) => { + console.info(`case stateChange called, state is ${state}, reason is ${reason}`); + console.info(`case state is ${state}`); + switch (state) { + case AV_PLAYER_STATE.INITIALIZED: + avPlayer.surfaceId = surfaceID; + console.info('setVolumeTimeCallback play state is INITIALIZED') + // step 1: initialized -> prepared + avPlayer.prepare((err) => { + if (err != null) { + console.error(`case prepare error, errMessage is ${err.message}`); + expect().assertFail(); + done(); + } else { + console.info('setVolumeTimeCallback play state is prepared') + } + }); + await sleep(2000); + break; + case AV_PLAYER_STATE.PREPARED: + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('setVolumeTimeCallback avPlayer state is prepared') + avPlayer.play() + break; + case AV_PLAYER_STATE.PLAYING: + console.info('setVolumeTimeCallback play state is PLAYING') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + if(loopTime == 10){ + avPlayer.release().then(() => { + offCallback(avPlayer, ['stateChange', 'error']); + console.info('setVolumeTimeCallback avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + let avg = totalTime/10; + console.info("setVolumeTimeCallback avg time is :" + avg) + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + }else{ + start = Date.now(); + console.info(`setVolumeTimeCallback start time is : ${start}`) + loopTime++ + let volume = 1.0 + avPlayer.setVolume(volume) + } + break; + case AV_PLAYER_STATE.PAUSED: + console.info('setVolumeTimeCallback play state is PAUSED') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PAUSED); + avPlayer.play().then(() => { + console.info('setVolumeTimeCallback avPlayer from pause to play') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + break; + default: + break; + } + }); + avPlayer.on('volumeChange', (vol) => { + end = Date.now(); + console.info(`setVolumeTimeCallback end time is : ${end}`) + execution = parseInt(end - start) + console.info("setVolumeTimeCallback execution time is :" + execution) + totalTime = totalTime + execution; + console.info('volumeChange success,and new volume is :' + vol) + avPlayer.pause() + }); +} + +export async function firstFrameTime(src, avPlayer, done) { + let surfaceID = globalThis.value; + let start; + avPlayer = await idle(src, avPlayer) + await setSource(avPlayer, src); + console.info('firstFrameTime setSource'); + await sleep(20) + avPlayer.surfaceId = surfaceID; + await avPlayer.prepare().then(() => { + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PREPARED); + console.info('firstFrameTime avPlayer state is prepared') + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + await avPlayer.on('startRenderFrame', () => { + console.info('startRenderFrame success') + let end = Date.now(); + console.info(`firstFrameTime end time is : ${end}`) + let execution = parseInt(end - start) + console.info("firstFrameTime execution time is :" + execution) + sleep(100) + avPlayer.release().then(() => { + offCallback(avPlayer, ['stateChange','startRenderFrame']); + console.info('firstFrameTime avPlayer is release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + avPlayer = null; + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + }) + start = Date.now(); + console.info(`firstFrameTime start time is : ${start}`) + await avPlayer.play().then(() => { + console.info('firstFrameTime play success'); + }, (err) => { + console.error('firstFrameTime play filed,error message is :' + err.message) + }) +} + +export async function avPlayerWithoutCallBack(src, avPlayer, done) { + let surfaceID = globalThis.value; + console.info(`case avPlayerWithoutCallBack Initialized in, surfaceID is ${surfaceID}`); + avPlayer = await idle(src, avPlayer) + setSource(avPlayer, src); + console.info('avPlayerWithoutCallBack setSource'); + if(avPlayer.state == AV_PLAYER_STATE.INITIALIZED) { + avPlayer.surfaceId = surfaceID; + preparePromise(avPlayer); + await sleep(2000); + } + if(avPlayer.state == AV_PLAYER_STATE.PREPARED){ + console.info('avPlayerWithoutCallBack avPlayer from PREPARED to play') + // play to pause loop 1000 times + for(var i = 0;i < 1000; i++){ + await playToPauseLoop(avPlayer) + console.info(`case avPlayerWithoutCallBack playToPauseLoop is ${i}`); + } + } + await avPlayer.stop().then(() => { + console.info('avPlayerWithoutCallBack avPlayer from play to stop') + avPlayer.release().then(() => { + console.info('avPlayerWithoutCallBack avPlayer from stop to release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + done(); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); +} + +function setAVPlayerPlay(src, avPlayer, done) { + let surfaceID = globalThis.value; + console.info(`case setAVPlayerPlay in, surfaceID is ${surfaceID}`); + avPlayer.on('stateChange', async (state, reason) => { + console.info(`case stateChange called, state is ${state}, reason is ${reason}`); + console.info(`case state is ${state}`); + switch (state) { + case AV_PLAYER_STATE.INITIALIZED: + avPlayer.surfaceId = surfaceID; + console.info('setAVPlayerPlay play state is INITIALIZED') + // step 1: initialized -> prepared -> play + preparePromise(avPlayer) + await sleep(3000); + avPlayer.play() + break; + case AV_PLAYER_STATE.PLAYING: + console.info('setAVPlayerPlay play state is PLAYING') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.PLAYING); + break; + case AV_PLAYER_STATE.COMPLETED: + expect(avPlayer.currentTime).assertEqual(avPlayer.duration); + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.COMPLETED); + avPlayer.release().then(() => { + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + break; + case AV_PLAYER_STATE.RELEASED: + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + offCallback(avPlayer, ['stateChange', 'error']); + avPlayer = null; + done(); + break; + case AV_PLAYER_STATE.ERROR: + expect().assertFail(); + avPlayer.release().then(() => { + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + break; + default: + break; + } + }); + avPlayer.on('error', async (err) => { + console.error(`case error called, errMessage is ${err.message}`); + expect().assertFail(); + await avPlayer.release().then(() => { + avPlayer = null; + done(); + }); + }); +} + +export async function avPlayerPlay(src, avPlayer, done) { + avPlayer = await idle(src, avPlayer) + setAVPlayerPlay(src, avPlayer, done); + await setSource(avPlayer, src); +} + export async function testAVPlayerFun(src, avPlayer, playTest, playTime, done) { console.info(`case media source: ${src}`) await media.createAVPlayer().then((video) => { diff --git a/multimedia/media/media_js_standard/avPlayer/Test.json b/multimedia/media/media_js_standard/avPlayer/Test.json index c4567e73a0de200229413e95091bc6b58b295978..7d452df46b09bc0a02817ff377c07e45d33cc298 100644 --- a/multimedia/media/media_js_standard/avPlayer/Test.json +++ b/multimedia/media/media_js_standard/avPlayer/Test.json @@ -5,8 +5,8 @@ "test-timeout": "180000", "bundle-name": "ohos.acts.multimedia.avplayer", "module-name": "phone", - "shell-timeout": "1000000", - "testcase-timeout": 300000 + "shell-timeout": "5000000", + "testcase-timeout": 800000 }, "kits": [ { @@ -20,14 +20,59 @@ "type": "ShellKit", "run-command": [ "remount", - "mkdir /data/test" + "mkdir /data/test", + "mkdir -p /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files", + "chmod 777 -R /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone" ] }, { "type": "PushKit", "push": [ - "ActsAVPlayerTest.hap->/data/ActsAVPlayerTest.hap", - "./resource/audio/H264_AAC.mp4 -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/" + "ActsAVPlayerTest.hap->/data/test/ActsAVPlayerTest.hap", + "./resource/audio/H264_AAC.mp4 -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/videoplayer/mp4/h264_mp3_128x96_30r.mp4 -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/h263_aac.mp4 -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/h263_mp3.mp4 -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/MPEG2_AAC.mp4 -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/MPEG2_MP3.mp4 -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/h264_1280x720_30.mp4 -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/H263.mp4 -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/MPEG2.mp4 -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/videoplayer/mpeg_ts/h264_aac_480p_25r.ts -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/videoplayer/mpeg_ts/h264_mp3_480p_25r.ts -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/H263_AAC.ts -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/H263_MP3.ts -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/videoplayer/mpeg_ts/mpeg2_aac_720p_30r.ts -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/videoplayer/mpeg_ts/mpeg2_mp3_480p_25r.ts -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/videoplayer/mpeg_ts/mpeg4_aac_720p_30r.ts -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/videoplayer/mpeg_ts/mpeg4_mp3_480p_25r.ts -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/h264_320x240_60.ts -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/h263_1408x1152_30.ts -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/MPEG2.ts -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/mpeg4_320x240_60.ts -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/videoplayer/webm/vp8_vorbis_480p_25r.webm -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/vp8_720x480_60.webm -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/H264_AAC.mkv -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/H264_MP3.mkv -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/videoplayer/mkv/h263_aac_640x480_30r.mkv -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/videoplayer/mkv/h263_mp3_176x144_25r.mkv -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/MPEG2_AAC.mkv -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/MPEG2_MP3.mkv -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/videoplayer/mkv/mpeg4_aac_720p_30r.mkv -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/MPEG4_MP3.mkv -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/h264_320x240_30.mkv -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/h263_1408x1152_60.mkv -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/MPEG2.mkv -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/mpeg4_320x240_60.mkv -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AAC_48000_32_1.aac -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/audio/01.mp3 -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/audio/56.m4a -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/OGG_48000_1.ogg -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/vorbis_48000_32_1.wav -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/audioplayer/flac/flac_48ksr_16kbr_1ch.flac -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/hevc_320x240_60.mp4 -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/H264_MP3_1s.mp4 -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/", + "./resource/media/AVPlayer/h264_aac_3840_2160.mp4 -> /data/app/el2/100/base/ohos.acts.multimedia.avplayer/haps/phone/files/" ] }, { @@ -35,7 +80,8 @@ "run-command": [ "chmod 644 /data/test/*.hap", "scanner", - "param set persist.ace.testmode.enabled 1" + "param set persist.ace.testmode.enabled 1", + "setenforce 0" ] } ] diff --git a/multimedia/media/media_js_standard/avPlayer/entry/src/main/ets/MainAbility/MainAbility.ts b/multimedia/media/media_js_standard/avPlayer/entry/src/main/ets/MainAbility/MainAbility.ts index 974a9fd2680f285a9d28e024020968fefaa12873..f38c165f135a4d9b2077da44b8c11a03adc01dd8 100644 --- a/multimedia/media/media_js_standard/avPlayer/entry/src/main/ets/MainAbility/MainAbility.ts +++ b/multimedia/media/media_js_standard/avPlayer/entry/src/main/ets/MainAbility/MainAbility.ts @@ -19,6 +19,7 @@ export default class MainAbility extends Ability { // Ability is creating, initialize resources for this ability console.log("[Demo] MainAbility onCreate") globalThis.abilityWant = want; + globalThis.context = this.context; } onDestroy() { diff --git a/multimedia/media/media_js_standard/avPlayer/entry/src/main/ets/test/AVPlayerStabilityTest.test.js b/multimedia/media/media_js_standard/avPlayer/entry/src/main/ets/test/AVPlayerStabilityTest.test.js index 5478ce63b0e80885332b9c9a9620ea3d0aed92cf..d7921c202f34b1ee91920900372716359901ece9 100644 --- a/multimedia/media/media_js_standard/avPlayer/entry/src/main/ets/test/AVPlayerStabilityTest.test.js +++ b/multimedia/media/media_js_standard/avPlayer/entry/src/main/ets/test/AVPlayerStabilityTest.test.js @@ -14,52 +14,102 @@ */ import media from '@ohos.multimedia.media' +import fileio from '@ohos.fileio' import * as mediaTestBase from '../../../../../../MediaTestBase'; import * as AVPlayerTestBase from '../../../../../../AVPlayerTestBase.js'; -import { testAVPlayerFun, AV_PLAYER_STATE, setSource, avPlayerWithCallBack, avPlayerWithoutCallBack, - sleep } from '../../../../../../AVPlayerTestBase.js'; import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; export default function AVPlayerStabilityTest() { describe('AVPlayerStabilityTest', function () { - const VIDEO_SOURCE = 'H264_AAC.mp4'; - const AUDIO_SOURCE = '01.mp3'; - const VIDEO_NOAUDIO = 'H264_NONE.mp4' + const VIDEO_SOURCES = [ + 'H264_AAC.mp4', + 'h264_mp3_128x96_30r.mp4', + 'h263_aac.mp4', + 'h263_mp3.mp4', + 'MPEG2_AAC.mp4', + 'MPEG2_MP3.mp4', + 'h264_1280x720_30.mp4', + 'H263.mp4', + 'MPEG2.mp4', + 'h264_aac_480p_25r.ts', + 'h264_mp3_480p_25r.ts', + 'H263_AAC.ts', + 'H263_MP3.ts', + 'mpeg2_aac_720p_30r.ts', + 'mpeg2_mp3_480p_25r.ts', + 'mpeg4_aac_720p_30r.ts', + 'mpeg4_mp3_480p_25r.ts', + 'h264_320x240_60.ts', + 'h263_1408x1152_30.ts', + 'MPEG2.ts', + 'mpeg4_320x240_60.ts', + 'vp8_vorbis_480p_25r.webm', + 'vp8_720x480_60.webm', + 'H264_AAC.mkv', + 'H264_MP3.mkv', + 'h263_aac_640x480_30r.mkv', + 'h263_mp3_176x144_25r.mkv', + 'MPEG2_AAC.mkv', + 'MPEG2_MP3.mkv', + 'mpeg4_aac_720p_30r.mkv', + 'MPEG4_MP3.mkv', + 'h264_320x240_30.mkv', + 'h263_1408x1152_60.mkv', + 'MPEG2.mkv', + 'mpeg4_320x240_60.mkv', + 'AAC_48000_32_1.aac', + '01.mp3', + '56.m4a', + 'OGG_48000_1.ogg', + 'vorbis_48000_32_1.wav', + 'flac_48ksr_16kbr_1ch.flac', + 'hevc_320x240_60.mp4', + 'H264_MP3_1s.mp4', + 'h264_aac_3840_2160.mp4' + ] + let videos = []; let TAG = "[AVPlayerStabilityTest] "; let callBackSet = 0; - const PLAY_TIME = 2; let avPlayer = null; let fileDescriptor = null; - let fileDescriptor2 = null; - let fileDescriptor3 = null; - let avPlayTest1 = { - width: 0, - height: 0, - duration: -1, - }; - let avPlayTest2 = { - width: 0, - height: 0, - duration: -1, - }; - - beforeAll(async function() { + let fdHead = 'fd://'; + let fdPath = ''; + let fdNumber = 0; + let fdNumbers = [] + const PLAY_TIME = 2; + + beforeAll(async function () { console.info('beforeAll case'); - await mediaTestBase.getStageFileDescriptor(VIDEO_SOURCE).then((res) => { - fileDescriptor = res; - }); - await mediaTestBase.getStageFileDescriptor(AUDIO_SOURCE).then((res) => { - fileDescriptor2 = res; - }); - await mediaTestBase.getStageFileDescriptor(VIDEO_NOAUDIO).then((res) => { - fileDescriptor3 = res; - }); + for(var i = 0;i < VIDEO_SOURCES.length; i++){ + await getStageFdRead(VIDEO_SOURCES[i]).then((testNumber) => { + fdNumber = testNumber; + console.info(TAG + 'this fdNumber is :' + fdNumber) + fdPath = fdHead + '' + fdNumber; + fdNumbers.push(fdNumber) + videos.push(fdPath) + }) + } }) + async function getStageFdRead(pathName) { + let fdReturn; + let contextStage = globalThis.context; + let fileDir = contextStage.filesDir + console.info("case file dir is" + JSON.stringify(fileDir)); + pathName = fileDir + '/' + pathName; + console.info("case pathName is" + pathName); + await fileio.open(pathName).then((fdNumber) => { + fdReturn = fdNumber; + console.info('[fileio]case open fd success, fd is ' + fdReturn); + }) + return fdReturn; + } + + beforeEach(async function() { console.info('beforeEach case'); - await sleep(3000); + await AVPlayerTestBase.sleep(1000); }) afterEach(async function() { @@ -69,14 +119,14 @@ export default function AVPlayerStabilityTest() { }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); } console.info('afterEach case'); - await sleep(3000); + await AVPlayerTestBase.sleep(1000); }) afterAll(async function() { console.info('afterAll case'); - await mediaTestBase.closeFileDescriptor(VIDEO_SOURCE); - await mediaTestBase.closeFileDescriptor(AUDIO_SOURCE); - await mediaTestBase.closeFileDescriptor(VIDEO_NOAUDIO); + for(var i = 0;i < fdNumbers.length; i++){ + await mediaTestBase.closeFdNumber(fdNumbers[i]); + } }) /* * @@ -89,8 +139,7 @@ export default function AVPlayerStabilityTest() { */ it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_0100', 0, async function (done) { console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_0100 start') - avPlayTest1 = { width: 720, height: 480, duration: 10034 }; - avPlayerWithCallBack(fileDescriptor, avPlayer, avPlayTest1, PLAY_TIME, done); + AVPlayerTestBase.avPlayerWithCallBack(videos[0], avPlayer, PLAY_TIME, done); console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_0100 end') }) @@ -104,9 +153,1089 @@ export default function AVPlayerStabilityTest() { */ it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_0200', 0, async function (done) { console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_0200 start') - avPlayTest2 = { width: 720, height: 480, duration: 10034 }; - avPlayerWithoutCallBack(fileDescriptor, avPlayer, avPlayTest2, done); + AVPlayerTestBase.avPlayerWithoutCallBack(videos[0], avPlayer, done); console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_0200 end') }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0100 + * @tc.name : 001.test play source mp4(H264_AAC) + * @tc.desc : Local Video play source (H264_AAC) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0100 start') + AVPlayerTestBase.avPlayerPlay(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0100 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0200 + * @tc.name : 001.test play source (H264_MP3) + * @tc.desc : Local Video play source (H264_MP3) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0200', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0200 start') + AVPlayerTestBase.avPlayerPlay(videos[1], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0200 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0300 + * @tc.name : 001.test play source mp4 (H263_AAC) + * @tc.desc : Local Video play source (H263_AAC) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0300', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0300 start') + AVPlayerTestBase.avPlayerPlay(videos[2], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0300 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0400 + * @tc.name : 001.test play source (H263_MP3) + * @tc.desc : Local Video play source (H263_MP3) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0400', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0400 start') + AVPlayerTestBase.avPlayerPlay(videos[3], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0400 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0500 + * @tc.name : 001.test play source (MPEG2_AAC) + * @tc.desc : Local Video play source (MPEG2_AAC) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0500', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0500 start') + AVPlayerTestBase.avPlayerPlay(videos[4], avPlayer,done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0500 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0600 + * @tc.name : 001.test play source (MPEG2_MP3) + * @tc.desc : Local Video play source (MPEG2_MP3) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0600', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0600 start') + AVPlayerTestBase.avPlayerPlay(videos[5], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0600 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0700 + * @tc.name : 001.test play source (MPEG2_MP3) + * @tc.desc : Local Video play source (MPEG2_MP3) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0700', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0700 start') + AVPlayerTestBase.avPlayerPlay(videos[6], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0700 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0800 + * @tc.name : 001.test play source (h263.mov) + * @tc.desc : Local Video play source (h263.mov) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0800', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0800 start') + AVPlayerTestBase.avPlayerPlay(videos[7], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0800 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0900 + * @tc.name : 001.test play source (mpeg2.mkv) + * @tc.desc : Local Video play source (mpeg2.mkv) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0900', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0900 start') + AVPlayerTestBase.avPlayerPlay(videos[8], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP4_0900 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0100 + * @tc.name : 001.test play source (h264_aac.ts) + * @tc.desc : Local Video play source (h264_aac.ts) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0100 start') + AVPlayerTestBase.avPlayerPlay(videos[9], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0100 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0200 + * @tc.name : 001.test play source (h264_mp3.ts) + * @tc.desc : Local Video play source (h264_mp3.ts) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0200', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0200 start') + AVPlayerTestBase.avPlayerPlay(videos[10], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0200 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0300 + * @tc.name : 001.test play source (h263_aac.ts) + * @tc.desc : Local Video play source (h263_aac.ts) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0300', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0300 start') + AVPlayerTestBase.avPlayerPlay(videos[11], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0300 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0400 + * @tc.name : 001.test play source (h263_mp3.ts) + * @tc.desc : Local Video play source (h263_mp3.ts) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0400', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0400 start') + AVPlayerTestBase.avPlayerPlay(videos[12], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0400 end') + }) + + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0500 + * @tc.name : 001.test play source (mpeg2_aac.ts) + * @tc.desc : Local Video play source (mpeg2_aac.ts) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0500', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0500 start') + AVPlayerTestBase.avPlayerPlay(videos[13], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0500 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0600 + * @tc.name : 001.test play source (mpeg2_mp3.ts) + * @tc.desc : Local Video play source (mpeg2_mp3.ts) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0600', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0600 start') + AVPlayerTestBase.avPlayerPlay(videos[14], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0600 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0700 + * @tc.name : 001.test play source (mpeg4_aac.ts) + * @tc.desc : Local Video play source (mpeg4_aac.ts) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0700', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0700 start') + AVPlayerTestBase.avPlayerPlay(videos[15], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0700 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0800 + * @tc.name : 001.test play source (mpeg4_mp3.ts) + * @tc.desc : Local Video play source (mpeg4_mp3.ts) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0800', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0800 start') + AVPlayerTestBase.avPlayerPlay(videos[16], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0800 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0900 + * @tc.name : 001.test play source (h264.ts) + * @tc.desc : Local Video play source (h264.ts) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0900', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0900 start') + AVPlayerTestBase.avPlayerPlay(videos[17], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_0900 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_1000 + * @tc.name : 001.test play source (h263.ts) + * @tc.desc : Local Video play source (h263.ts) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_1000', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_1000 start') + AVPlayerTestBase.avPlayerPlay(videos[18], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_1000 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_1100 + * @tc.name : 001.test play source (mpeg2.ts) + * @tc.desc : Local Video play source (mpeg2.ts) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_1100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_1100 start') + AVPlayerTestBase.avPlayerPlay(videos[19], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_1100 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_1200 + * @tc.name : 001.test play source (mpeg4.ts) + * @tc.desc : Local Video play source (mpeg4.ts) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_1200', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_1200 start') + AVPlayerTestBase.avPlayerPlay(videos[20], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_TS_1200 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_WEBM_0100 + * @tc.name : 001.test play source (vp8_vorbis.webm) + * @tc.desc : Local Video play source (vp8_vorbis.webm) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_WEBM_0100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_WEBM_0100 start') + AVPlayerTestBase.avPlayerPlay(videos[21], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_WEBM_0100 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_WEBM_0200 + * @tc.name : 001.test play source (vp8.webm) + * @tc.desc : Local Video play source (vp8.webm) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_WEBM_0200', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_WEBM_0200 start') + AVPlayerTestBase.avPlayerPlay(videos[22], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_WEBM_0200 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0100 + * @tc.name : 001.test play source (H264_AAC.mkv) + * @tc.desc : Local Video play source (H264_AAC.mkv) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0100 start') + AVPlayerTestBase.avPlayerPlay(videos[23], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0100 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0200 + * @tc.name : 001.test play source (H264_MP3.mkv) + * @tc.desc : Local Video play source (H264_MP3.mkv) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0200', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0200 start') + AVPlayerTestBase.avPlayerPlay(videos[24], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0200 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0300 + * @tc.name : 001.test play source (H263_AAC.mkv) + * @tc.desc : Local Video play source (H263_AAC.mkv) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0300', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0300 start') + AVPlayerTestBase.avPlayerPlay(videos[25], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0300 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0400 + * @tc.name : 001.test play source (H263_MP3.mkv) + * @tc.desc : Local Video play source (H263_MP3.mkv) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0400', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0400 start') + AVPlayerTestBase.avPlayerPlay(videos[26], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0400 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0500 + * @tc.name : 001.test play source (MPEG2_AAC.mkv) + * @tc.desc : Local Video play source (MPEG2_AAC.mkv) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0500', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0500 start') + AVPlayerTestBase.avPlayerPlay(videos[27], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0500 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0600 + * @tc.name : 001.test play source (mpeg2_mp3.mkv) + * @tc.desc : Local Video play source (mpeg2_mp3.mkv) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0600', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0600 start') + AVPlayerTestBase.avPlayerPlay(videos[28], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0600 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0700 + * @tc.name : 001.test play source (mpeg4_aac.mkv) + * @tc.desc : Local Video play source (mpeg4_aac.mkv) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0700', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0700 start') + AVPlayerTestBase.avPlayerPlay(videos[29], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0700 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0800 + * @tc.name : 001.test play source (MPEG4_MP3.mkv) + * @tc.desc : Local Video play source (MPEG4_MP3.mkv) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0800', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0800 start') + AVPlayerTestBase.avPlayerPlay(videos[30], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0800 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0900 + * @tc.name : 001.test play source (h264.mkv) + * @tc.desc : Local Video play source (h264.mkv) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0900', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0900 start') + AVPlayerTestBase.avPlayerPlay(videos[31], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_0900 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_1000 + * @tc.name : 001.test play source (h263.mkv) + * @tc.desc : Local Video play source (h263.mkv) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_1000', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_1000 start') + AVPlayerTestBase.avPlayerPlay(videos[32], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_1000 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_1100 + * @tc.name : 001.test play source (MPEG2.mkv) + * @tc.desc : Local Video play source (MPEG2.mkv) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_1100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_1100 start') + AVPlayerTestBase.avPlayerPlay(videos[33], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_1100 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_1200 + * @tc.name : 001.test play source (mpeg4.mkv) + * @tc.desc : Local Video play source (mpeg4.mkv) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_1200', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_1200 start') + AVPlayerTestBase.avPlayerPlay(videos[34], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MKV_1200 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_AAC_0100 + * @tc.name : 001.test play source (aac_audio.aac) + * @tc.desc : Local Video play source (aac_audio.aac) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_AAC_0100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_AAC_0100 start') + AVPlayerTestBase.avPlayerPlay(videos[35], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_AAC_0100 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP3_0100 + * @tc.name : 001.test play source (MP3_AUDIO.mp3) + * @tc.desc : Local Video play source (MP3_AUDIO.mp3) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP3_0100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP3_0100 start') + AVPlayerTestBase.avPlayerPlay(videos[36], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_MP3_0100 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_M4A_0100 + * @tc.name : 001.test play source (m4a_audio.m4a) + * @tc.desc : Local Video play source (m4a_audio.m4a) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_M4A_0100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_M4A_0100 start') + AVPlayerTestBase.avPlayerPlay(videos[37], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_M4A_0100 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_OGG_0100 + * @tc.name : 001.test play source (ogg_audio.ogg) + * @tc.desc : Local Video play source (ogg_audio.ogg) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_OGG_0100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_OGG_0100 start') + AVPlayerTestBase.avPlayerPlay(videos[38], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_OGG_0100 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_WAV_0100 + * @tc.name : 001.test play source (wav_audio.wav) + * @tc.desc : Local Video play source (wav_audio.wav) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_WAV_0100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_WAV_0100 start') + AVPlayerTestBase.avPlayerPlay(videos[39], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_WAV_0100 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_FLAC_0100 + * @tc.name : 001.test play source (flac_audio.flac) + * @tc.desc : Local Video play source (flac_audio.flac) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_FLAC_0100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_FLAC_0100 start') + AVPlayerTestBase.avPlayerPlay(videos[40], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_FLAC_0100 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_SOURCE_0100 + * @tc.name : 001.test play source 60fps + * @tc.desc : Local Video play source + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_SOURCE_0100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_SOURCE_0100 start') + AVPlayerTestBase.avPlayerPlay(videos[41], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_SOURCE_0100 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_SOURCE_0200 + * @tc.name : 001.test play short source 1s + * @tc.desc : Local Video play short source + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_SOURCE_0200', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_SOURCE_0200 start') + AVPlayerTestBase.avPlayerPlay(videos[42], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_SOURCE_0200 end') + }) + + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_SOURCE_0300 + * @tc.name : 001.test play source 4k + * @tc.desc : Local Video play source + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level2 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_SOURCE_0300', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_SOURCE_0300 start') + AVPlayerTestBase.avPlayerPlay(videos[43], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_FORMAT_SOURCE_0300 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0100 + * @tc.name : 001.test create->release (1000 times) + * @tc.desc : Local Video play create->release (1000 times) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0100 start') + AVPlayerTestBase.createToRelease(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0100 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0200 + * @tc.name : 001.test play pause loop 1000 + * @tc.desc : Local Video play to pause 1000 times + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0200', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0200 start') + AVPlayerTestBase.avPlayerWithCallBack(videos[0], avPlayer, PLAY_TIME, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0200 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0300 + * @tc.name : 001.test complete->play->seek duration (1000 times) + * @tc.desc : Local Video complete->play->seek duration (1000 times) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0300', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0300 start') + AVPlayerTestBase.playToCompleted(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0300 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0400 + * @tc.name : 001.test play->seek (1000 times wait callBack) + * @tc.desc : Local Video play->seek (1000 times) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0400', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0400 start') + AVPlayerTestBase.seekLoop(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0400 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0500 + * @tc.name : 001.test play->seek (1000 times do not wait callBack) + * @tc.desc : Local Video play->seek (1000 times) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0500', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0500 start') + AVPlayerTestBase.seekLoopWithoutCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0500 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0600 + * @tc.name : 001.test stop -> prepare (1000 times) + * @tc.desc : Local Video test stop -> prepare (1000 times) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0600', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0600 start') + AVPlayerTestBase.prepareToStopLoop(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0600 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0700 + * @tc.name : 001.test reset -> url -> preapre -> play -> reset (1000 times) + * @tc.desc : Local Video test reset -> url -> preapre -> play -> reset (1000 times) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0700', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0700 start') + AVPlayerTestBase.prepareToResetLoop(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0700 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0800 + * @tc.name : 001.test release -> create-> url -> prepare -> play -> release (1000 times) + * @tc.desc : Local Video test release -> create-> url -> prepare -> play -> release (1000 times) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0800', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0800 start') + AVPlayerTestBase.createToReleaseLoop(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_STABILITY_01_0800 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0100 + * @tc.name : 001.test create time (wait callback) + * @tc.desc : Local Video test create time (wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ +// it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0100', 0, async function (done) { +// console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0100 start') +// AVPlayerTestBase.createTimeWithCallback(videos[0], avPlayer, done); +// console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0100 end') +// }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0110 + * @tc.name : 001.test create time (not wait callback) + * @tc.desc : Local Video test create time (not wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0110', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0110 start') + AVPlayerTestBase.createTimeWithoutCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0110 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0200 + * @tc.name : 001.test prepare time (not wait callback) + * @tc.desc : Local Video test prepare time (not wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0200', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0200 start') + AVPlayerTestBase.prepareTimeWithoutCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0200 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0210 + * @tc.name : 001.test prepare time (not wait callback) + * @tc.desc : Local Video test prepare time (not wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0210', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0210 start') + AVPlayerTestBase.prepareTimeWithCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0210 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0300 + * @tc.name : 001.test play time (wait callback) + * @tc.desc : Local Video test play time (wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0300', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0300 start') + AVPlayerTestBase.playTimeWithCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0300 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0310 + * @tc.name : 001.test play time (not wait callback) + * @tc.desc : Local Video play prepare time (not wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0310', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0310 start') + AVPlayerTestBase.playTimeWithoutCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0310 end') + }) + + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0300 + * @tc.name : 001.test pause time (wait callback) + * @tc.desc : Local Video test pause time (wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0400', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0400 start') + AVPlayerTestBase.pauseTimeWithCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0400 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0410 + * @tc.name : 001.test pause time (not wait callback) + * @tc.desc : Local Video pause prepare time (not wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0410', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0410 start') + AVPlayerTestBase.pauseTimeWithoutCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0410 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0500 + * @tc.name : 001.test stop time (wait callback) + * @tc.desc : Local Video test stop time (wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0500', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0500 start') + AVPlayerTestBase.stopTimeWithCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0500 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0510 + * @tc.name : 001.test stop time (not wait callback) + * @tc.desc : Local Video stop prepare time (not wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0510', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0510 start') + AVPlayerTestBase.stopTimeWithoutCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0510 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0600 + * @tc.name : 001.test reset time (wait callback) + * @tc.desc : Local Video test reset time (wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0600', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0600 start') + AVPlayerTestBase.resetTimeWithCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0600 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0610 + * @tc.name : 001.test reset time (not wait callback) + * @tc.desc : Local Video reset prepare time (not wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0610', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0610 start') + AVPlayerTestBase.resetTimeWithoutCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0610 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0700 + * @tc.name : 001.test release time (wait callback) + * @tc.desc : Local Video test release time (wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0700', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0700 start') + AVPlayerTestBase.releaseTimeWithCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0700 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0710 + * @tc.name : 001.test release time (not wait callback) + * @tc.desc : Local Video release prepare time (not wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0710', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0710 start') + AVPlayerTestBase.releaseTimeWithoutCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0710 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0800 + * @tc.name : 001.test seek time (wait callback) + * @tc.desc : Local Video test seek time (wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0800', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0800 start') + AVPlayerTestBase.seekTimeWithCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0800 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0810 + * @tc.name : 001.test seek time (not wait callback) + * @tc.desc : Local Video seek prepare time (not wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0810', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0810 start') + AVPlayerTestBase.seekTimeWithoutCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0810 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0900 + * @tc.name : 001.test getTrackDescription time (wait callback) + * @tc.desc : Local Video test getTrackDescription time (wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0900', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0900 start') + AVPlayerTestBase.getTrackDescriptionTimeWithCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0900 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0910 + * @tc.name : 001.test getTrackDescription time (not wait callback) + * @tc.desc : Local Video test getTrackDescription time (not wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0910', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0910 start') + AVPlayerTestBase.getTrackDescriptionTimeWithoutCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_0910 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1000 + * @tc.name : 001.test setSpeed time (wait callback) + * @tc.desc : Local Video test setSpeed time (wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1000', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1000 start') + AVPlayerTestBase.setSpeedTimeWithCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1000 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1010 + * @tc.name : 001.test setSpeed time (not wait callback) + * @tc.desc : Local Video test setSpeed time (not wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1010', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1010 start') + AVPlayerTestBase.setSpeedTimeWithoutCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1010 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1100 + * @tc.name : 001.test setBitrate time (wait callback) + * @tc.desc : Local Video test setBitrate time (wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1100 start') + AVPlayerTestBase.setBitrateTimeWithCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1100 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1110 + * @tc.name : 001.test setBitrate time (not wait callback) + * @tc.desc : Local Video test setBitrate time (not wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1110', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1110 start') + AVPlayerTestBase.setBitrateTimeWithoutCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1110 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1200 + * @tc.name : 001.test setVolume time (wait callback) + * @tc.desc : Local Video test setVolume time (wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1200', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1200 start') + AVPlayerTestBase.setVolumeTimeWithCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1200 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1210 + * @tc.name : 001.test setVolume time (not wait callback) + * @tc.desc : Local Video test setVolume time (not wait callback) + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1210', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1210 start') + AVPlayerTestBase.setVolumeTimeWithoutCallback(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_01_1210 end') + }) + + /* * + * @tc.number : SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_02_0100 + * @tc.name : 001.test firstFrame time + * @tc.desc : Local Video test firstFrame time + * @tc.size : MediumTest + * @tc.type : Function test + * @tc.level : Level3 + */ + it('SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_02_0100', 0, async function (done) { + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_02_0100 start') + AVPlayerTestBase.firstFrameTime(videos[0], avPlayer, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVPLAYER_PERFORMANCE_02_0100 end') + }) }) } \ No newline at end of file diff --git a/time/timeTest/entry/src/main/ets/test/List.test.ets b/time/timeTest/entry/src/main/ets/test/List.test.ets index c7910c1747476814eb7569b1ea9bca8eaa6f323c..37b99442f5f03e091cfbdfa2f64f6bcea7fb6cfc 100644 --- a/time/timeTest/entry/src/main/ets/test/List.test.ets +++ b/time/timeTest/entry/src/main/ets/test/List.test.ets @@ -13,7 +13,9 @@ * limitations under the License. */ import systemTimeJsunit from './systemTimeTest'; +import systemTimeCommonEventTest from './systemTimeCommonEvent.test' export default function testsuite() { systemTimeJsunit(); + systemTimeCommonEventTest(); } \ No newline at end of file diff --git a/time/timeTest/entry/src/main/ets/test/systemTimeCommonEvent.test.ets b/time/timeTest/entry/src/main/ets/test/systemTimeCommonEvent.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..aa783923019fb192367bf938570a1934f71dc467 --- /dev/null +++ b/time/timeTest/entry/src/main/ets/test/systemTimeCommonEvent.test.ets @@ -0,0 +1,162 @@ +/* + * 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 { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; +import systemTime from "@ohos.systemTime"; +import commonEvent from '@ohos.commonEvent' + +export default function systemTimeCommonEventTest() { + describe('systemTimeCommonEventTest', function () { + console.info('====>---------------systemTimeCommonEventTest start-----------------------'); + + /** + * @tc.number SUB_systemTime_commonEnevt_timeChanged_0010 + * @tc.name + * @tc.desc + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 3 + */ + it('SUB_systemTime_commonEvent_timeChanged_0010', 0, async function (done) { + function unSubscriberCallback (err){ + console.debug("====>SUB_systemTime_commonEvent_timeChanged_0010 unSubscriberCallback start"); + if (err){ + console.debug("====>SUB_systemTime_commonEvent_timeChanged_0010 unSubscriberCallback failed:" + + JSON.stringify(err)); + } else { + console.debug("====>SUB_systemTime_commonEvent_timeChanged_0010 unSubscriberCallback finish") + } + } + + function subscriberCallback (err, data){ + console.debug("====>SUB_systemTime_commonEvent_timeChanged_0010 subscriberCallback data:" + + JSON.stringify(data)); + commonEvent.unsubscribe(subscriber, unSubscriberCallback); + expect(data.event).assertEqual('usual.event.TIME_CHANGED'); + console.debug("====>SUB_systemTime_commonEvent_timeChanged_0010 end") + done(); + } + + var commonEventSubscribeInfo = { + events: ['usual.event.TIME_CHANGED'] + } + var subscriber; + commonEvent.createSubscriber(commonEventSubscribeInfo).then((data)=>{ + subscriber = data; + console.debug("====>SUB_systemTime_commonEvent_timeChanged_0010 subscriber data:" + JSON.stringify(data)) + commonEvent.subscribe(subscriber, subscriberCallback); + console.debug("====>SUB_systemTime_commonEvent_timeChanged_0010 subscriber finish") + let t = setTimeout(async ()=>{ + let currentTime= new Date().getTime() + 1500 + await systemTime.setTime(currentTime) + clearTimeout(t) + }, 500) + }) + }); + + /** + * @tc.number SUB_systemTime_commonEvent_timeTick_0010 + * @tc.name + * @tc.desc + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 3 + */ + it('SUB_systemTime_commonEvent_timeTick_0010', 0, async function (done) { + function unSubscriberCallback (err){ + console.debug("====>SUB_systemTime_commonEvent_timeTick_0010 unSubscriberCallback start"); + if (err){ + console.debug("====>SUB_systemTime_commonEvent_timeTick_0010 unSubscriberCallback failed:" + + JSON.stringify(err)); + } else { + console.debug("====>SUB_systemTime_commonEvent_timeTick_0010 unSubscriberCallback finish") + } + } + + function subscriberCallback (err, data){ + console.debug("====>SUB_systemTime_commonEvent_timeTick_0010 subscriberCallback data:" + + JSON.stringify(data)); + commonEvent.unsubscribe(subscriber, unSubscriberCallback); + expect(data.event).assertEqual('usual.event.TIME_TICK'); + console.debug("====>SUB_systemTime_commonEnevt_timeTick_0010 end") + done(); + } + + var commonEventSubscribeInfo = { + events: ['usual.event.TIME_TICK'] + } + var subscriber; + commonEvent.createSubscriber(commonEventSubscribeInfo).then((data)=>{ + subscriber = data; + console.debug("====>SUB_systemTime_commonEvent_timeTick_0010 subscriber data:" + JSON.stringify(data)) + commonEvent.subscribe(subscriber, subscriberCallback); + console.debug("====>SUB_systemTime_commonEvent_timeTick_0010 subscriber finish") + let t = setTimeout(async ()=>{ + let currentTime= new Date().getTime() + currentTime = currentTime + (58000- (currentTime % 60000)) + await systemTime.setTime(currentTime) + clearTimeout(t) + }, 500) + }) + }); + + + /** + * @tc.number SUB_systemTime_commonEvent_timezoneChanged_0010 + * @tc.name + * @tc.desc + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 3 + */ + it('SUB_systemTime_commonEvent_timezoneChanged_0010', 0, async function (done) { + function unSubscriberCallback (err){ + console.debug("====>SUB_systemTime_commonEvent_timezoneChanged_0010 unSubscriberCallback start"); + if (err){ + console.debug("====>SUB_systemTime_commonEvent_timezoneChanged_0010 unSubscriberCallback failed:" + + JSON.stringify(err)); + } else { + console.debug("====>SUB_systemTime_commonEvent_timezoneChanged_0010 unSubscriberCallback finish") + } + } + + function subscriberCallback (err, data){ + console.debug("====>SUB_systemTime_commonEvent_timezoneChanged_0010 subscriberCallback data:" + + JSON.stringify(data)); + commonEvent.unsubscribe(subscriber, unSubscriberCallback); + expect(data.event).assertEqual('usual.event.TIMEZONE_CHANGED'); + console.debug("====>SUB_systemTime_commonEvent_timezoneChanged_0010 end") + done(); + } + + var commonEventSubscribeInfo = { + events: ['usual.event.TIMEZONE_CHANGED'] + } + var subscriber; + commonEvent.createSubscriber(commonEventSubscribeInfo).then((data)=>{ + subscriber = data; + console.debug("====>SUB_systemTime_commonEvent_timezoneChanged_0010 subscriber data:" + JSON.stringify(data)) + commonEvent.subscribe(subscriber, subscriberCallback); + console.debug("====>SUB_systemTime_commonEvent_timezoneChanged_0010 subscriber finish") + let t = setTimeout(async ()=>{ + await systemTime.setTimezone('Europe/Moscow') + clearTimeout(t) + }, 500) + }) + }); + + + }); +}; diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/ArkUI_index.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/ArkUI_index.ets index 80abc99161879e737f481087c1783603904076f1..d0f6405fe02eaa4d09a72973a2fcd43edb9c13cc 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/ArkUI_index.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/ArkUI_index.ets @@ -51,9 +51,9 @@ struct IndexPage { {title:'CanvasStrokeStyle',uri:'pages/ArkUI/CanvasStrokeStyle'}, {title:'CanvasLineCap',uri:'pages/ArkUI/CanvasLineCap'}, {title:'CanvasLineJoin',uri:'pages/ArkUI/CanvasLineJoin'}, - {title:'CanvasMiterLimit',uri:'pages/ArkUI/CanvasMiterLimit'}, {title:'CanvasFont',uri:'pages/ArkUI/CanvasFont'}, {title:'CanvasTextAlign',uri:'pages/ArkUI/CanvasTextAlign'}, + {title:'CanvasTextBaseline',uri:'pages/ArkUI/CanvasTextBaseline'}, {title:'CanvasGlobalAlpha',uri:'pages/ArkUI/CanvasGlobalAlpha'}, {title:'CanvasLineDashOffset',uri:'pages/ArkUI/CanvasLineDashOffset'}, {title:'CanvasGlobalCompositeOperation',uri:'pages/ArkUI/CanvasGlobalCompositeOperation'}, @@ -291,30 +291,29 @@ struct IndexPage { } let TestNum = FailNum + PassNum; let testNum = (TestNum).toString(); - let ignoreNum = (24-TestNum).toString(); let arrayBuffer = new ArrayBuffer(40960); let bufView = new DataView(arrayBuffer); let serializer = new xml.XmlSerializer(bufView); serializer.setDeclaration(); serializer.startElement("testsuite"); serializer.setAttributes("name","ActsArkUITest"); - serializer.setAttributes("time", ""); + serializer.setAttributes("time", "*"); serializer.setAttributes("errors", "0"); serializer.setAttributes("disabled", "0"); serializer.setAttributes("failures", failNum); serializer.setAttributes("ignored", "0"); serializer.setAttributes("tests", testNum); - serializer.setAttributes("message", ""); + serializer.setAttributes("message", "*"); serializer.setAttributes("modulename", "ActsArkUITest"); for (let i = 0; i < title.length; i++) { serializer.startElement("testcase"); serializer.setAttributes("name", String(title[i])); - serializer.setAttributes("status", ""); - serializer.setAttributes("time", ""); - serializer.setAttributes("classname", ""); + serializer.setAttributes("status", "*"); + serializer.setAttributes("time", "*"); + serializer.setAttributes("classname", "*"); serializer.setAttributes("result", String(result[i])); - serializer.setAttributes("level", ""); - serializer.setAttributes("message", ""); + serializer.setAttributes("level", "*"); + serializer.setAttributes("message", "*"); serializer.endElement(); } serializer.endElement(); diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasFillStyle.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasFillStyle.ets index ca007f54c7c4f3fc9fecf5e5605bf336dda5fc5d..2ab01f65c0cb48dac41f87b7561424d77355ad75 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasFillStyle.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasFillStyle.ets @@ -23,6 +23,9 @@ struct SetCircle { @State name: string = 'CanvasFillStyle'; @State StepTips: string = '操作步骤:点击不同的颜色控件'+'\n'+'预期结果:原本默认黑色的填色区域会随点击变化'; @State Vue: boolean = false; + @State num1: number = 0; + @State num2: number = 0; + @State num3: number = 0; async aboutToAppear(){ await FirstDialog.ChooseDialog(this.StepTips,this.name); } @@ -36,7 +39,10 @@ struct SetCircle { this.FillColor = '#FFFF0000'; this.context.fillStyle = this.FillColor; this.context.fillRect(100, 160, 150, 100); - this.Vue = true; + this.num1 = 1; + if ( this.num1 == this.num3 && this.num2 == 1 ){ + this.Vue = true; + } }) Text('Yellow').fontSize(16).border({width:2}).size({width:'25%',height:'20%'}) .onClick(()=>{ @@ -44,7 +50,10 @@ struct SetCircle { this.FillColor = '#fffffc3c'; this.context.fillStyle = this.FillColor; this.context.fillRect(100, 160, 150, 100); - this.Vue = true; + this.num2 = 1; + if ( this.num1 == 1 && this.num3 == this.num2 ){ + this.Vue = true; + } }) Text('Green').fontSize(16).border({width:2}).size({width:'25%',height:'20%'}) .onClick(()=>{ @@ -52,7 +61,10 @@ struct SetCircle { this.FillColor = '#ff19fa00'; this.context.fillStyle = this.FillColor; this.context.fillRect(100, 160, 150, 100); - this.Vue = true; + this.num3 = 1; + if ( this.num1 == 1 && this.num3 == this.num2 ){ + this.Vue = true; + } }) }.width('70%').height('30%') Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasFont.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasFont.ets index 9e27e60f9788d731fe04690d2d3ce91f779bc1b8..772bf259276f67918e3585c7eb005db4f3a18ce6 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasFont.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasFont.ets @@ -23,6 +23,28 @@ struct SetCircle { @State name: string = 'CanvasFont'; @State StepTips: string = '操作步骤:点击不同的字体控件'+'\n'+'预期结果:原本默认字体会改变'; @State Vue: boolean = false; + @State num1: number = 0; + @State num2: number = 0; + @State num3: number = 0; + @State num4: number = 0; + @State num5: number = 0; + @State num6: number = 0; + @State num7: number = 0; + @State num8: number = 0; + @State num9: number = 0; + @State num10: number = 0; + @State num11: number = 0; + @State num12: number = 0; + @State num13: number = 0; + @State num14: number = 0; + @State num15: number = 0; + @State num16: number = 0; + @State num17: number = 0; + @State num18: number = 0; + @State num19: number = 0; + @State num20: number = 0; + @State num21: number = 0; + @State num22: number = 0; async aboutToAppear(){ await FirstDialog.ChooseDialog(this.StepTips,this.name); } @@ -36,168 +58,322 @@ struct SetCircle { Text('font-style').fontSize(13).border({width:0}).size({width:'24%',height:'18%'}) Text('normal').fontSize(13).border({width:2}).size({width:'24%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal normal 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num1 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('italic').fontSize(13).border({width:2}).size({width:'24%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'italic normal 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num2 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) } Row({space:8}) { Text('font-weight').fontSize(13).border({ width: 0 }).size({ width: '24%', height: '18%' }) Text('normal').fontSize(13).border({ width: 2 }).size({ width: '16%', height: '18%' }) .onClick(() => { - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal normal 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num3 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('bold').fontSize(13).border({width:2}).size({width:'16%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal bold 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num4 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('bolder').fontSize(13).border({width:2}).size({width:'16%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal bolder 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num5 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('lighter').fontSize(13).border({width:2}).size({width:'16%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal lighter 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num6 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) } Row({space:5}) { Text('100').fontSize(13).border({ width: 2 }).size({ width: '10%', height: '18%' }) .onClick(() => { - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal 100 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num7 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('200').fontSize(13).border({width:2}).size({width:'10%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal 200 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num8 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('300').fontSize(13).border({width:2}).size({width:'10%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal 300 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num9 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('400').fontSize(13).border({width:2}).size({width:'10%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal 400 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num10 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('500').fontSize(13).border({width:2}).size({width:'10%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal 500 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num11 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('600').fontSize(13).border({width:2}).size({width:'10%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal 600 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num12 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('700').fontSize(13).border({width:2}).size({width:'10%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal 700 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num13 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('800').fontSize(13).border({width:2}).size({width:'10%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal 800 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num14 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('900').fontSize(13).border({width:2}).size({width:'10%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal 900 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num15 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) } Row({space:10}){ Text('font-family').fontSize(13).border({width:0}).size({width:'24%',height:'18%'}) Text('sans-serif').fontSize(13).border({width:2}).size({width:'24%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal normal 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num16 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('serif').fontSize(13).border({width:2}).size({width:'24%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal normal 120px serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num17 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('monospace').fontSize(13).border({width:2}).size({width:'24%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal normal 120px monospace'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num18 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) } Row({space:10}) { Text('font-size').fontSize(13).border({ width: 0 }).size({ width: '18%', height: '18%' }) Text('small').fontSize(13).border({ width: 2 }).size({ width: '18%', height: '18%' }) .onClick(() => { - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal normal 10px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num19 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('medium').fontSize(13).border({width:2}).size({width:'18%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal normal 50px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num20 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('large').fontSize(13).border({width:2}).size({width:'18%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal normal 80px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num21 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) Text('extra').fontSize(13).border({width:2}).size({width:'18%',height:'18%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 600, 600); this.context.font = 'normal normal 120px sans-serif'; this.context.fillText("Hello World", 80, 120); - this.Vue = true; + this.num22 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 && this.num12 == 1 && this.num13 == 1 && this.num14 == 1 && this.num15 == 1 + && this.num16 == 1 && this.num17 == 1 && this.num18 == 1 && this.num19 == 1 && this.num20 == 1 + && this.num21 == 1 && this.num22 == 1 ){ + this.Vue = true; + } }) } }.width('90%').height('30%') diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasGlobalAlpha.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasGlobalAlpha.ets index 3dd5606c6f51679d3171a1370c222c583cab4007..eb297955fbd2e1e2f614c492377ac6a3a5313b9e 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasGlobalAlpha.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasGlobalAlpha.ets @@ -47,8 +47,11 @@ struct SetCircle { console.info('Pan end'); }) ) + + }.width('70%').height('25%') + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }){ Text('透明度: ' + (this.X)*0.005 ) - }.width('70%').height('30%') + }.width('100%').height('20%') Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) .width('100%') @@ -61,7 +64,7 @@ struct SetCircle { this.context.fillStyle = 'rgb(0,0,255)'; this.context.fillRect(200, 200, 50, 50); }) - }.width('100%').height('70%') + }.width('100%').height('55%') }.width('100%').height('80%').backgroundColor(Color.White) } build() { diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasGlobalCompositeOperation.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasGlobalCompositeOperation.ets index 54bda6405a7631235819ccb099363e1519234846..acbba6ebab28548878e3eee0bbb24c27ede739ed 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasGlobalCompositeOperation.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasGlobalCompositeOperation.ets @@ -23,6 +23,17 @@ struct SetCircle { @State name: string = 'CanvasGlobalCompositeOperation'; @State StepTips: string = '操作步骤:点击不同的合成操作的方式'+'\n'+'预期结果:原本默认合成方式会随点击变化'; @State Vue: boolean = false; + @State num1: number = 0; + @State num2: number = 0; + @State num3: number = 0; + @State num4: number = 0; + @State num5: number = 0; + @State num6: number = 0; + @State num7: number = 0; + @State num8: number = 0; + @State num9: number = 0; + @State num10: number = 0; + @State num11: number = 0; async aboutToAppear(){ await FirstDialog.ChooseDialog(this.StepTips,this.name); } @@ -41,7 +52,12 @@ struct SetCircle { this.context.globalCompositeOperation = 'source-over'; this.context.fillStyle = 'rgb(0,0,255)'; this.context.fillRect(180, 180, 50, 50); - this.Vue = true; + this.num1 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 ){ + this.Vue = true; + } }) Text('s-atop').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=>{ @@ -51,7 +67,12 @@ struct SetCircle { this.context.globalCompositeOperation = 'source-atop'; this.context.fillStyle = 'rgb(0,0,255)'; this.context.fillRect(180, 180, 50, 50); - this.Vue = true; + this.num2 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 ){ + this.Vue = true; + } }) Text('s-in').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=>{ @@ -61,7 +82,12 @@ struct SetCircle { this.context.globalCompositeOperation = 'source-in'; this.context.fillStyle = 'rgb(0,0,255)'; this.context.fillRect(180, 180, 50, 50); - this.Vue = true; + this.num3 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 ){ + this.Vue = true; + } }) Text('s-out').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=>{ @@ -71,7 +97,12 @@ struct SetCircle { this.context.globalCompositeOperation = 'source-out'; this.context.fillStyle = 'rgb(0,0,255)'; this.context.fillRect(180, 180, 50, 50); - this.Vue = true; + this.num4 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 ){ + this.Vue = true; + } }) } Row({space:10}){ @@ -83,7 +114,12 @@ struct SetCircle { this.context.globalCompositeOperation = 'destination-over'; this.context.fillStyle = 'rgb(0,0,255)'; this.context.fillRect(180, 180, 50, 50); - this.Vue = true; + this.num5 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 ){ + this.Vue = true; + } }) Text('d-atop').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=> { @@ -93,7 +129,12 @@ struct SetCircle { this.context.globalCompositeOperation = 'destination-atop'; this.context.fillStyle = 'rgb(0,0,255)'; this.context.fillRect(180, 180, 50, 50); - this.Vue = true; + this.num6 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 ){ + this.Vue = true; + } }) Text('d-in').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=> { @@ -103,7 +144,12 @@ struct SetCircle { this.context.globalCompositeOperation = 'destination-in'; this.context.fillStyle = 'rgb(0,0,255)'; this.context.fillRect(180, 180, 50, 50); - this.Vue = true; + this.num7 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 ){ + this.Vue = true; + } }) Text('d-out').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=> { @@ -113,7 +159,12 @@ struct SetCircle { this.context.globalCompositeOperation = 'destination-out'; this.context.fillStyle = 'rgb(0,0,255)'; this.context.fillRect(180, 180, 50, 50); - this.Vue = true; + this.num8 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 ){ + this.Vue = true; + } }) } Row({space:10}){ @@ -125,7 +176,12 @@ struct SetCircle { this.context.globalCompositeOperation = 'lighter'; this.context.fillStyle = 'rgb(0,0,255)'; this.context.fillRect(180, 180, 50, 50); - this.Vue = true; + this.num9 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 ){ + this.Vue = true; + } }) Text('copy').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=> { @@ -135,7 +191,12 @@ struct SetCircle { this.context.globalCompositeOperation = 'copy'; this.context.fillStyle = 'rgb(0,0,255)'; this.context.fillRect(180, 180, 50, 50); - this.Vue = true; + this.num10 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 ){ + this.Vue = true; + } }) Text('xor').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=> { @@ -145,7 +206,12 @@ struct SetCircle { this.context.globalCompositeOperation = 'xor'; this.context.fillStyle = 'rgb(0,0,255)'; this.context.fillRect(180, 180, 50, 50); - this.Vue = true; + this.num11 = 1; + if( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 + && this.num6 == 1 && this.num7 == 1 && this.num8 == 1 && this.num9 == 1 && this.num10 == 1 + && this.num11 == 1 ){ + this.Vue = true; + } }) Text('').fontSize(0).border({width:0}).size({width:'18%',height:'20%'}) } diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineCap.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineCap.ets index dba750ab69f1e254ac8dd3e55bf4acd5c3cd56ae..8e8aebf5e45c046258db0f5761ec0aff6afb7a1e 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineCap.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineCap.ets @@ -23,6 +23,9 @@ struct SetCircle { @State name: string = 'CanvasLineCap'; @State StepTips: string = '操作步骤:点击不同的端点样式控件'+'\n'+'预期结果:原本默认端点样式会随点击变化'; @State Vue: boolean = false; + @State num1: number = 0; + @State num2: number = 0; + @State num3: number = 0; async aboutToAppear(){ await FirstDialog.ChooseDialog(this.StepTips,this.name); } @@ -38,7 +41,10 @@ struct SetCircle { this.context.moveTo(100, 100); this.context.lineTo(250, 100); this.context.stroke(); - this.Vue = true; + this.num1 = 1; + if ( this.num1 == this.num3 && this.num2 == 1 ){ + this.Vue = true; + } }) Text('round').fontSize(16).border({width:2}).size({width:'25%',height:'20%'}) .onClick(()=>{ @@ -49,7 +55,10 @@ struct SetCircle { this.context.moveTo(100, 100); this.context.lineTo(250, 100); this.context.stroke(); - this.Vue = true; + this.num2 = 1; + if ( this.num1 == 1 && this.num3 == this.num2 ){ + this.Vue = true; + } }) Text('square').fontSize(16).border({width:2}).size({width:'25%',height:'20%'}) .onClick(()=>{ @@ -60,7 +69,10 @@ struct SetCircle { this.context.moveTo(100, 100); this.context.lineTo(250, 100); this.context.stroke(); - this.Vue = true; + this.num3 = 1; + if ( this.num1 == 1 && this.num3 == this.num2 ){ + this.Vue = true; + } }) }.width('70%').height('30%') Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineDashOffset.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineDashOffset.ets index 0a286640f9a1a5fc70c0ba42edd338348ea40d4c..5cadd1f0e8adb55d66cce5ad5304024bfabc70a1 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineDashOffset.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineDashOffset.ets @@ -46,8 +46,10 @@ struct SetCircle { console.info('Pan end'); }) ) + }.width('70%').height('25%') + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Text('虚线偏移量: ' + (this.X)*0.1 ) - }.width('70%').height('30%') + }.width('100%').height('20%') Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) .width('100%') @@ -59,7 +61,7 @@ struct SetCircle { this.context.lineDashOffset = (this.X)*0.1; this.context.stroke(); }) - }.width('100%').height('70%') + }.width('100%').height('55%') }.width('100%').height('80%').backgroundColor(Color.White) } build() { diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineJoin.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineJoin.ets index 8747420cd2fbb8a6e3c3b938adba7096d0c9b502..2f4c2339f7cb428e7b8098c633cb8c990e298eb3 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineJoin.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineJoin.ets @@ -23,6 +23,9 @@ struct SetCircle { @State name: string = 'CanvasLineJoin'; @State StepTips: string = '操作步骤:点击不同的交点样式控件'+'\n'+'预期结果:原本默认交点样式会随点击变化'; @State Vue: boolean = false; + @State num1: number = 0; + @State num2: number = 0; + @State num3: number = 0; async aboutToAppear(){ await FirstDialog.ChooseDialog(this.StepTips,this.name); } @@ -39,7 +42,10 @@ struct SetCircle { this.context.lineTo(210, 130); this.context.lineTo(120, 180); this.context.stroke(); - this.Vue = true; + this.num1 = 1; + if ( this.num1 == this.num3 && this.num2 == 1 ){ + this.Vue = true; + } }) Text('bevel').fontSize(16).border({width:2}).size({width:'25%',height:'20%'}) .onClick(()=>{ @@ -51,7 +57,10 @@ struct SetCircle { this.context.lineTo(210, 130); this.context.lineTo(120, 180); this.context.stroke(); - this.Vue = true; + this.num2 = 1; + if ( this.num1 == 1 && this.num3 == this.num2 ){ + this.Vue = true; + } }) Text('miter').fontSize(16).border({width:2}).size({width:'25%',height:'20%'}) .onClick(()=>{ @@ -63,7 +72,10 @@ struct SetCircle { this.context.lineTo(210, 130); this.context.lineTo(120, 180); this.context.stroke(); - this.Vue = true; + this.num3 = 1; + if ( this.num1 == 1 && this.num3 == this.num2 ){ + this.Vue = true; + } }) }.width('70%').height('30%') Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineWidth.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineWidth.ets index 9f081ccbf5d41517da860e3672afbcff06ba05de..b0e228da739748f5d79fd0d6d1b2b3dad34172bc 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineWidth.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasLineWidth.ets @@ -46,8 +46,11 @@ struct SetCircle { console.info('Pan end'); }) ) - Text('边框粗细: ' + (this.X)*0.05 ) + }.width('70%').height('30%') + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Text('边框粗细: ' + (this.X)*0.05 ) + }.width('100%').height('20%') Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) .width('100%') @@ -57,7 +60,7 @@ struct SetCircle { this.context.lineWidth = (this.X)*0.05; this.context.strokeRect(120, 120, 120, 120); }) - }.width('100%').height('70%') + }.width('100%').height('50%') }.width('100%').height('80%').backgroundColor(Color.White) } build() { diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasMiterLimit.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasMiterLimit.ets deleted file mode 100644 index 2b813b80242616e45baac3e19a1995298b385125..0000000000000000000000000000000000000000 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasMiterLimit.ets +++ /dev/null @@ -1,82 +0,0 @@ -/* - * 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 {CustomContainer} from '../common/CanvasCustomContainer2'; -import FirstDialog from '../model/FirstDialog'; -@Entry -@Component -struct SetCircle { - private settings: RenderingContextSettings = new RenderingContextSettings(true); - private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings); - @State FillColor: string = '#FF000000'; - @State X: number = 0; - @State name: string = 'CanvasMiterLimit'; - @State StepTips: string = '操作步骤:向右拖动MiterLimit按键'+'\n'+'预期结果:斜接面限制值会随拖动距离变化,并显示限制值大小'; - @State Vue: boolean = false; - async aboutToAppear(){ - await FirstDialog.ChooseDialog(this.StepTips,this.name); - } - @Builder specificNoParam() { - Column() { - Flex({ direction: FlexDirection.Row, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }){ - Text('MiterLimit').fontSize(18).border({width:2}).size({width:'40%',height:'30%'}) - .translate({ x: this.X, y: 20, z: 5 }) - .gesture( - PanGesture({}) - .onActionStart((event: GestureEvent) => { - this.context.clearRect(100, 100, 250, 200); - console.info('Pan start'); - this.Vue = true; - }) - .onActionUpdate((event: GestureEvent) => { - this.X = event.offsetX; - }) - .onActionEnd(() => { - console.info('Pan end'); - }) - ) - Text('边框粗细: ' + (this.X)*0.05 ) - }.width('70%').height('30%') - Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { - Canvas(this.context) - .width('100%') - .height('100%') - .backgroundColor('#ffffffff') - .onReady(() =>{ - this.context.lineWidth = 8; - this.context.lineJoin = 'miter'; - this.context.miterLimit = (this.X)*0.05; - this.context.moveTo(160, 100); - this.context.lineTo(190, 105); - this.context.lineTo(160, 107); - this.context.stroke(); - }) - }.width('100%').height('70%') - }.width('100%').height('80%').backgroundColor(Color.White) - } - build() { - Column() { - CustomContainer({ - title: this.name, - Url: 'pages/ArkUI/ArkUI_index', - StepTips: this.StepTips, - content: this.specificNoParam, - FillColor: $FillColor, - X: $X, - name: $name, - Vue: $Vue, - }) - }.width('100%').height('100%').backgroundColor(Color.Black) - } -} \ No newline at end of file diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowBlur.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowBlur.ets index 0e705b03fb39e4259c28d6485b12c8d6ac804fcd..88703c8a0eb86464292c543aac249ad711f1564b 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowBlur.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowBlur.ets @@ -35,7 +35,7 @@ struct SetCircle { .gesture( PanGesture({}) .onActionStart((event: GestureEvent) => { - this.context.clearRect(10, 50, 400, 300); + this.context.clearRect(0, 0, 600, 500); this.context.fillStyle = 'rgb(255,0,0)'; this.context.fillRect(150, 150, 100, 100); console.info('Pan start'); @@ -48,8 +48,10 @@ struct SetCircle { console.info('Pan end'); }) ) + }.width('70%').height('25%') + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Text('阴影模糊: ' + this.X ) - }.width('70%').height('30%') + }.width('100%').height('20%') Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) .width('100%') @@ -61,7 +63,7 @@ struct SetCircle { this.context.fillStyle = 'rgb(255,0,0)'; this.context.fillRect(150, 150, 100, 100); }) - }.width('100%').height('70%') + }.width('100%').height('55%') }.width('100%').height('80%').backgroundColor(Color.White) } build() { diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowColor.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowColor.ets index 56de4cc14b0a450524480be48573249c98ae640c..0fc9539bca072b9d7d45e52e548fc00f0c698196 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowColor.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowColor.ets @@ -24,6 +24,9 @@ struct SetCircle { @State name: string = 'CanvasShadowColor'; @State StepTips: string = '操作步骤:点击不同的颜色控件'+'\n'+'预期结果:原本默认蓝色的阴影会随点击变化'; @State Vue: boolean = false; + @State num1: number = 0; + @State num2: number = 0; + @State num3: number = 0; async aboutToAppear(){ await FirstDialog.ChooseDialog(this.StepTips,this.name); } @@ -37,7 +40,10 @@ struct SetCircle { this.context.shadowColor = 'rgb(0,0,255)'; this.context.fillStyle = 'rgb(255,0,0)'; this.context.fillRect(150, 150, 100, 100); - this.Vue = true; + this.num1 = 1; + if ( this.num1 == 1 && this.num3 == 1 && this.num2 == 1 ){ + this.Vue = true; + } }) Text('Yellow').fontSize(16).border({width:2}).size({width:'25%',height:'20%'}) .onClick(()=>{ @@ -46,7 +52,10 @@ struct SetCircle { this.context.shadowColor = '#fffffc3c'; this.context.fillStyle = 'rgb(255,0,0)'; this.context.fillRect(150, 150, 100, 100); - this.Vue = true; + this.num2 = 1; + if ( this.num1 == 1 && this.num3 == 1 && this.num2 == 1 ){ + this.Vue = true; + } }) Text('Green').fontSize(16).border({width:2}).size({width:'25%',height:'20%'}) .onClick(()=>{ @@ -55,7 +64,10 @@ struct SetCircle { this.context.shadowColor = '#ff19fa00'; this.context.fillStyle = 'rgb(255,0,0)'; this.context.fillRect(150, 150, 100, 100); - this.Vue = true; + this.num3 = 1; + if ( this.num1 == 1 && this.num3 == 1 && this.num2 == 1 ){ + this.Vue = true; + } }) }.width('70%').height('30%') Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowOffsetX.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowOffsetX.ets index 13c9432ac63489b4affb1c0004297403950d364a..0c322407dff34defc081007b88c8dcb548d02d0a 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowOffsetX.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowOffsetX.ets @@ -49,8 +49,11 @@ struct SetCircle { console.info('Pan end'); }) ) + + }.width('70%').height('25%') + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }){ Text('阴影偏移: ' + (this.X)*0.05 ) - }.width('70%').height('30%') + }.width('100%').height('20%') Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) .width('100%') @@ -63,7 +66,7 @@ struct SetCircle { this.context.fillStyle = 'rgb(255,0,0)'; this.context.fillRect(150, 150, 100, 100); }) - }.width('100%').height('70%') + }.width('100%').height('55%') }.width('100%').height('80%').backgroundColor(Color.White) } build() { diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowOffsetY.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowOffsetY.ets index 5269d427f8ab58207c8b6af312473296c1915b09..b9dd03218246039b849213d5312fb2fc91979ecc 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowOffsetY.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasShadowOffsetY.ets @@ -49,8 +49,10 @@ struct SetCircle { console.info('Pan end'); }) ) + }.width('70%').height('25%') + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }){ Text('阴影偏移: ' + (this.X)*0.05 ) - }.width('70%').height('30%') + }.width('100%').height('20%') Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) .width('100%') @@ -63,7 +65,7 @@ struct SetCircle { this.context.fillStyle = 'rgb(255,0,0)'; this.context.fillRect(150, 150, 100, 100); }) - }.width('100%').height('70%') + }.width('100%').height('55%') }.width('100%').height('80%').backgroundColor(Color.White) } build() { diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasStrokeStyle.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasStrokeStyle.ets index 083c2599b14b4453a5743b3294890cf7e8ef6341..6ce712dbf8cde501a8a5936b3adb73b951cb7b97 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasStrokeStyle.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasStrokeStyle.ets @@ -23,6 +23,9 @@ struct SetCircle { @State name: string = 'CanvasStrokeStyle'; @State StepTips: string = '操作步骤:点击不同的颜色控件'+'\n'+'预期结果:原本默认黑色的边框会随点击变化'; @State Vue: boolean = false; + @State num1: number = 0; + @State num2: number = 0; + @State num3: number = 0; async aboutToAppear(){ await FirstDialog.ChooseDialog(this.StepTips,this.name); } @@ -36,7 +39,10 @@ struct SetCircle { this.context.lineWidth = 10; this.context.strokeStyle = '#FFFF0000'; this.context.strokeRect(100, 160, 150, 100); - this.Vue = true; + this.num1 = 1; + if ( this.num1 == this.num3 && this.num2 == 1 ){ + this.Vue = true; + } }) Text('Yellow').fontSize(16).border({width:2}).size({width:'25%',height:'20%'}) .onClick(()=>{ @@ -45,7 +51,10 @@ struct SetCircle { this.context.lineWidth = 10; this.context.strokeStyle = '#fffffc3c'; this.context.strokeRect(100, 160, 150, 100); - this.Vue = true; + this.num2 = 1; + if ( this.num1 == 1 && this.num3 == this.num2 ){ + this.Vue = true; + } }) Text('Green').fontSize(16).border({width:2}).size({width:'25%',height:'20%'}) .onClick(()=>{ @@ -54,7 +63,10 @@ struct SetCircle { this.context.lineWidth = 10; this.context.strokeStyle = '#ff19fa00'; this.context.strokeRect(100, 160, 150, 100); - this.Vue = true; + this.num3 = 1; + if ( this.num1 == 1 && this.num3 == this.num2 ){ + this.Vue = true; + } }) }.width('70%').height('30%') Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasTextAlign.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasTextAlign.ets index bf686a91b8e378022e0568815be84aa51952411d..c9d152b41a19c7004fcc45db76c0d7ad31559410 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasTextAlign.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasTextAlign.ets @@ -23,6 +23,11 @@ struct SetCircle { @State name: string = 'CanvasTextAlign'; @State StepTips: string = '操作步骤:点击不同的文本对齐方式控件'+'\n'+'预期结果:原本默认的对齐方式会随点击变化'; @State Vue: boolean = false; + @State num1: number = 0; + @State num2: number = 0; + @State num3: number = 0; + @State num4: number = 0; + @State num5: number = 0; async aboutToAppear(){ await FirstDialog.ChooseDialog(this.StepTips,this.name); } @@ -31,58 +36,73 @@ struct SetCircle { Flex({ direction: FlexDirection.Row, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }){ Text('start').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 500, 500); this.context.lineWidth = 2; this.context.moveTo(180, 10); this.context.lineTo(180, 310); this.context.stroke(); this.context.textAlign = 'start'; this.context.fillText('textAlign=start', 180, 160); - this.Vue = true; + this.num1 = 1; + if ( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 ){ + this.Vue = true; + } }) Text('end').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 500, 500); this.context.lineWidth = 2; this.context.moveTo(180, 10); this.context.lineTo(180, 310); this.context.stroke(); this.context.textAlign = 'end'; this.context.fillText('textAlign=end', 180, 160); - this.Vue = true; + this.num2 = 1; + if ( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 ){ + this.Vue = true; + } }) Text('left').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 500, 500); this.context.lineWidth = 2; this.context.moveTo(180, 10); this.context.lineTo(180, 310); this.context.stroke(); this.context.textAlign = 'left'; this.context.fillText('textAlign=left', 180, 160); - this.Vue = true; + this.num3 = 1; + if ( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 ){ + this.Vue = true; + } }) Text('center').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 500, 500); this.context.lineWidth = 2; this.context.moveTo(180, 10); this.context.lineTo(180, 310); this.context.stroke(); this.context.textAlign = 'center'; this.context.fillText('textAlign=center', 180, 160); - this.Vue = true; + this.num4 = 1; + if ( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 ){ + this.Vue = true; + } }) Text('right').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=> { - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 500, 500); this.context.lineWidth = 2; this.context.moveTo(180, 10); this.context.lineTo(180, 310); this.context.stroke(); this.context.textAlign = 'right'; this.context.fillText('textAlign=right', 180, 160); - this.Vue = true; + this.num5 = 1; + if ( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 ){ + this.Vue = true; + } }) }.width('90%').height('30%') Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { diff --git a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasTextBaseline.ets b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasTextBaseline.ets index 2473a85a098100d1010fc3b3f6853432d0b6a403..f3af9399a820ea34443437a34da2e96b0dedda21 100644 --- a/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasTextBaseline.ets +++ b/validator/acts_validator/src/main/ets/pages/ArkUI/CanvasTextBaseline.ets @@ -23,6 +23,11 @@ struct SetCircle { @State name: string = 'CanvasTextBaseline'; @State StepTips: string = '操作步骤:点击不同的水平对齐方式'+'\n'+'预期结果:原本默认水平对齐方式会随点击变化'; @State Vue: boolean = false; + @State num1: number = 0; + @State num2: number = 0; + @State num3: number = 0; + @State num4: number = 0; + @State num5: number = 0; async aboutToAppear(){ await FirstDialog.ChooseDialog(this.StepTips,this.name); } @@ -31,7 +36,7 @@ struct SetCircle { Flex({ direction: FlexDirection.Row, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }){ Text('Top').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 500, 500); this.context.strokeStyle = '#0000ff'; this.context.lineWidth = 2; this.context.moveTo(0, 120); @@ -39,11 +44,14 @@ struct SetCircle { this.context.stroke(); this.context.textBaseline = 'top'; this.context.fillText('Top', 160, 120); - this.Vue = true; + this.num1 = 1; + if ( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 ){ + this.Vue = true; + } }) Text('Bottom').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 500, 500); this.context.strokeStyle = '#0000ff'; this.context.lineWidth = 2; this.context.moveTo(0, 120); @@ -51,11 +59,14 @@ struct SetCircle { this.context.stroke(); this.context.textBaseline = 'bottom'; this.context.fillText('Bottom', 160, 120); - this.Vue = true; + this.num2 = 1; + if ( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 ){ + this.Vue = true; + } }) Text('Middle').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 500, 500); this.context.strokeStyle = '#0000ff'; this.context.lineWidth = 2; this.context.moveTo(0, 120); @@ -63,11 +74,14 @@ struct SetCircle { this.context.stroke(); this.context.textBaseline = 'middle'; this.context.fillText('Middle', 160, 120); - this.Vue = true; + this.num3 = 1; + if ( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 ){ + this.Vue = true; + } }) Text('Alphabetic').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=>{ - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 500, 500); this.context.strokeStyle = '#0000ff'; this.context.lineWidth = 2; this.context.moveTo(0, 120); @@ -75,11 +89,14 @@ struct SetCircle { this.context.stroke(); this.context.textBaseline = 'alphabetic'; this.context.fillText('Alphabetic', 160, 120); - this.Vue = true; + this.num4 = 1; + if ( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 ){ + this.Vue = true; + } }) Text('Hanging').fontSize(13).border({width:2}).size({width:'18%',height:'20%'}) .onClick(()=> { - this.context.clearRect(0, 10, 350, 300); + this.context.clearRect(0, 10, 500, 500); this.context.strokeStyle = '#0000ff'; this.context.lineWidth = 2; this.context.moveTo(0, 120); @@ -87,7 +104,10 @@ struct SetCircle { this.context.stroke(); this.context.textBaseline = 'hanging'; this.context.fillText('Hanging', 160, 120); - this.Vue = true; + this.num5 = 1; + if ( this.num1 == 1 && this.num2 == 1 && this.num3 == 1 && this.num4 == 1 && this.num5 == 1 ){ + this.Vue = true; + } }) }.width('90%').height('30%') Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { diff --git a/validator/acts_validator/src/main/ets/pages/Audio/Audio_index.ets b/validator/acts_validator/src/main/ets/pages/Audio/Audio_index.ets index 02728690de4f18aa4fb7e6ef7e91ba6a5a8d31ae..51bb57324f531a401b8a5600368ea81f2717b799 100644 --- a/validator/acts_validator/src/main/ets/pages/Audio/Audio_index.ets +++ b/validator/acts_validator/src/main/ets/pages/Audio/Audio_index.ets @@ -270,30 +270,29 @@ struct IndexPage { } let TestNum = FailNum + PassNum; let testNum = (TestNum).toString(); - let ignoreNum = (24-TestNum).toString(); let arrayBuffer = new ArrayBuffer(40960); let bufView = new DataView(arrayBuffer); let serializer = new xml.XmlSerializer(bufView); serializer.setDeclaration(); serializer.startElement("testsuite"); serializer.setAttributes("name","ActsAudioTest"); - serializer.setAttributes("time", ""); + serializer.setAttributes("time", "*"); serializer.setAttributes("errors", "0"); serializer.setAttributes("disabled", "0"); serializer.setAttributes("failures", failNum); serializer.setAttributes("ignored", "0"); serializer.setAttributes("tests", testNum); - serializer.setAttributes("message", ""); + serializer.setAttributes("message", "*"); serializer.setAttributes("modulename", "ActsAudioTest"); for (let i = 0; i < title.length; i++) { serializer.startElement("testcase"); serializer.setAttributes("name", String(title[i])); - serializer.setAttributes("status", ""); - serializer.setAttributes("time", ""); - serializer.setAttributes("classname", ""); + serializer.setAttributes("status", "*"); + serializer.setAttributes("time", "*"); + serializer.setAttributes("classname", "*"); serializer.setAttributes("result", String(result[i])); - serializer.setAttributes("level", ""); - serializer.setAttributes("message", ""); + serializer.setAttributes("level", "*"); + serializer.setAttributes("message", "*"); serializer.endElement(); } serializer.endElement(); diff --git a/validator/acts_validator/src/main/ets/pages/Camera/CameraOrientation0.ets b/validator/acts_validator/src/main/ets/pages/Camera/CameraOrientation0.ets deleted file mode 100644 index e82fbd028e546e2e5fe2d1c2514b6e4fd3ee109c..0000000000000000000000000000000000000000 --- a/validator/acts_validator/src/main/ets/pages/Camera/CameraOrientation0.ets +++ /dev/null @@ -1,97 +0,0 @@ -/* - * 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 camera from '@ohos.multimedia.camera' -import Logger from '../model/Logger' -import CameraService from '../model/CameraService' -import {CustomContainer} from '../common/CameraOrientation'; -import FirstDialog from '../model/FirstDialog'; -const CameraMode = { - MODE_PHOTO: 0, // 拍照模式 - MODE_VIDEO: 1 // 录像模式 -} - -@Entry -@Component -struct SetCircle { - @State FillColor: string = '#FF000000'; - @State name: string = 'CameraOrientation0'; - @State StepTips: string = '测试目的:用于测试相机预览和拍照旋转能力\n-左侧显示给定旋转角度后的预览窗口\n-右侧显示拍照后的图片\n-对于前置摄像头会有镜像效果'+'\n'+'预期结果:拍照图片与预览窗口的画面一致'; - private tag: string = 'qlw' - private mXComponentController: XComponentController = new XComponentController() - @State surfaceId: number = 0; - @State curModel: number = CameraMode.MODE_PHOTO - @State cameraDeviceIndex: number = 0 - @State imageRotationValue: number = camera.ImageRotation.ROTATION_90 - @State qualityLevelValue: number = camera.QualityLevel.QUALITY_LEVEL_LOW - @State assetUri: string = undefined - @State Vue: boolean = false - async aboutToAppear(){ - await FirstDialog.ChooseDialog(this.StepTips,this.name); - } - handleTakePicture = (assetUri: string) => { - this.assetUri = assetUri - Logger.info(this.tag, `takePicture end, assetUri: ${this.assetUri}`) - } - - @Builder specificNoParam() { - Column() { - } - } - build() { - Column() { - CustomContainer({ - title: this.name, - Url:'pages/Camera/Camera_index', - StepTips:this.StepTips, - content: this.specificNoParam, - FillColor:$FillColor, - name: $name, - Vue: $Vue - }).height('30%').width('100%') - Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { - XComponent({ - id: 'componentId', - type: 'surface', - controller: this.mXComponentController - }) - .onLoad(async () => { - Logger.info(this.tag, 'onLoad is called') - // @ts-ignore - this.mXComponentController.setXComponentSurfaceSize({ surfaceWidth: 10, surfaceHeight: 10 }) - // @ts-ignore - this.surfaceId = this.mXComponentController.getXComponentSurfaceId() - Logger.info(this.tag, `onLoad surfaceId: ${this.surfaceId}`) - this.curModel = CameraMode.MODE_PHOTO - CameraService.initCamera(this.surfaceId, this.cameraDeviceIndex) - }) - .height('40%') - .width('40%') - Text('Camera Preview').fontSize('20fp') - Image(this.assetUri || $r('app.media.img')) - .width('40%').height('40%').border({ width: 1 }).objectFit(ImageFit.Contain) - Text('Oriented Photo').fontSize('20fp') - Button('拍照', { - type: ButtonType.Normal, - stateEffect: true - }).borderRadius(8).backgroundColor(0x317aff).width('20%').onClick(() => { - CameraService.takePicture(this.imageRotationValue, this.qualityLevelValue) - CameraService.setTakePictureCallback(this.handleTakePicture.bind(this)) - this.Vue = true - }) - }.width('100%').height('70%').backgroundColor(Color.White) - }.width('100%').height('100%').backgroundColor(Color.Black) - } -} \ No newline at end of file diff --git a/validator/acts_validator/src/main/ets/pages/Camera/CameraOrientation180.ets b/validator/acts_validator/src/main/ets/pages/Camera/CameraOrientation180.ets deleted file mode 100644 index a94a383d0d14071b3d91a3480bd55485a3c0a0f9..0000000000000000000000000000000000000000 --- a/validator/acts_validator/src/main/ets/pages/Camera/CameraOrientation180.ets +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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 camera from '@ohos.multimedia.camera' -import Logger from '../model/Logger' -import CameraService from '../model/CameraService' -import {CustomContainer} from '../common/CameraOrientation'; -import FirstDialog from '../model/FirstDialog'; -const CameraMode = { - MODE_PHOTO: 0, // 拍照模式 - MODE_VIDEO: 1 // 录像模式 -} -@Entry -@Component -struct SetCircle { - @State FillColor: string = '#FF000000'; - @State name: string = 'CameraOrientation180'; - @State StepTips: string = '测试目的:用于测试相机预览和拍照旋转能力\n-左侧显示给定旋转角度后的预览窗口\n-右侧显示拍照后的图片\n-对于前置摄像头会有镜像效果'+'\n'+'预期结果:拍照图片与预览窗口的画面一致'; - private tag: string = 'qlw' - private mXComponentController: XComponentController = new XComponentController() - @State surfaceId: number = 0; - @State curModel: number = CameraMode.MODE_PHOTO - @State cameraDeviceIndex: number = 0 - @State imageRotationValue: number = camera.ImageRotation.ROTATION_180 - @State qualityLevelValue: number = camera.QualityLevel.QUALITY_LEVEL_LOW - @State assetUri: string = undefined - @State Vue: boolean = false - async aboutToAppear(){ - await FirstDialog.ChooseDialog(this.StepTips,this.name); - } - handleTakePicture = (assetUri: string) => { - this.assetUri = assetUri - Logger.info(this.tag, `takePicture end, assetUri: ${this.assetUri}`) - } - - @Builder specificNoParam() { - Column() { - } - } - build() { - Column() { - CustomContainer({ - title: this.name, - Url:'pages/Camera/Camera_index', - StepTips:this.StepTips, - content: this.specificNoParam, - FillColor:$FillColor, - name:$name, - Vue: $Vue, - }).height('30%').width('100%') - Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { - XComponent({ - id: 'componentId', - type: 'surface', - controller: this.mXComponentController - }) - .onLoad(async () => { - Logger.info(this.tag, 'onLoad is called') - // @ts-ignore - this.mXComponentController.setXComponentSurfaceSize({ surfaceWidth: 10, surfaceHeight: 10 }) - // @ts-ignore - this.surfaceId = this.mXComponentController.getXComponentSurfaceId() - Logger.info(this.tag, `onLoad surfaceId: ${this.surfaceId}`) - this.curModel = CameraMode.MODE_PHOTO - CameraService.initCamera(this.surfaceId, this.cameraDeviceIndex) - }) - .height('40%') - .width('40%') - Text('Camera Preview').fontSize('20fp') - Image(this.assetUri || $r('app.media.img')) - .width('40%').height('40%').border({ width: 1 }).objectFit(ImageFit.Contain) - Text('Oriented Photo').fontSize('20fp') - Button('拍照', { - type: ButtonType.Normal, - stateEffect: true - }).borderRadius(8).backgroundColor(0x317aff).width('20%').onClick(() => { - CameraService.takePicture(this.imageRotationValue, this.qualityLevelValue) - CameraService.setTakePictureCallback(this.handleTakePicture.bind(this)) - this.Vue = true - }) - }.width('100%').height('70%').backgroundColor(Color.White) - }.width('100%').height('100%').backgroundColor(Color.Black) - } -} \ No newline at end of file diff --git a/validator/acts_validator/src/main/ets/pages/Camera/CameraOrientation270.ets b/validator/acts_validator/src/main/ets/pages/Camera/CameraOrientation270.ets deleted file mode 100644 index b751b107eb89aeb6f8a39e060e2cf070ac6eb00d..0000000000000000000000000000000000000000 --- a/validator/acts_validator/src/main/ets/pages/Camera/CameraOrientation270.ets +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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 camera from '@ohos.multimedia.camera' -import Logger from '../model/Logger' -import CameraService from '../model/CameraService' -import {CustomContainer} from '../common/CameraOrientation'; -import FirstDialog from '../model/FirstDialog'; -const CameraMode = { - MODE_PHOTO: 0, // 拍照模式 - MODE_VIDEO: 1 // 录像模式 -} -@Entry -@Component -struct SetCircle { - @State FillColor: string = '#FF000000'; - @State name: string = 'CameraOrientation270'; - @State StepTips: string = '测试目的:用于测试相机预览和拍照旋转能力\n-左侧显示给定旋转角度后的预览窗口\n-右侧显示拍照后的图片\n-对于前置摄像头会有镜像效果'+'\n'+'预期结果:拍照图片与预览窗口的画面一致'; - private tag: string = 'qlw' - private mXComponentController: XComponentController = new XComponentController() - @State surfaceId: number = 0; - @State curModel: number = CameraMode.MODE_PHOTO - @State cameraDeviceIndex: number = 0 - @State imageRotationValue: number = camera.ImageRotation.ROTATION_270 - @State qualityLevelValue: number = camera.QualityLevel.QUALITY_LEVEL_LOW - @State assetUri: string = undefined - @State Vue: boolean = false - async aboutToAppear(){ - await FirstDialog.ChooseDialog(this.StepTips,this.name); - } - handleTakePicture = (assetUri: string) => { - this.assetUri = assetUri - Logger.info(this.tag, `takePicture end, assetUri: ${this.assetUri}`) - } - - @Builder specificNoParam() { - Column() { - } - } - build() { - Column() { - CustomContainer({ - title: this.name, - Url:'pages/Camera/Camera_index', - StepTips:this.StepTips, - content: this.specificNoParam, - FillColor:$FillColor, - name:$name, - Vue: $Vue - }).height('30%').width('100%') - Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { - XComponent({ - id: 'componentId', - type: 'surface', - controller: this.mXComponentController - }) - .onLoad(async () => { - Logger.info(this.tag, 'onLoad is called') - // @ts-ignore - this.mXComponentController.setXComponentSurfaceSize({ surfaceWidth: 10, surfaceHeight: 10 }) - // @ts-ignore - this.surfaceId = this.mXComponentController.getXComponentSurfaceId() - Logger.info(this.tag, `onLoad surfaceId: ${this.surfaceId}`) - this.curModel = CameraMode.MODE_PHOTO - CameraService.initCamera(this.surfaceId, this.cameraDeviceIndex) - }) - .height('40%') - .width('40%') - Text('Camera Preview').fontSize('20fp') - Image(this.assetUri || $r('app.media.img')) - .width('40%').height('40%').border({ width: 1 }).objectFit(ImageFit.Contain) - Text('Oriented Photo').fontSize('20fp') - Button('拍照', { - type: ButtonType.Normal, - stateEffect: true - }).borderRadius(8).backgroundColor(0x317aff).width('20%').onClick(() => { - CameraService.takePicture(this.imageRotationValue, this.qualityLevelValue) - CameraService.setTakePictureCallback(this.handleTakePicture.bind(this)) - this.Vue = true - }) - }.width('100%').height('70%').backgroundColor(Color.White) - }.width('100%').height('100%').backgroundColor(Color.Black) - } -} \ No newline at end of file diff --git a/validator/acts_validator/src/main/ets/pages/Camera/CameraOrientation90.ets b/validator/acts_validator/src/main/ets/pages/Camera/CameraOrientation90.ets deleted file mode 100644 index 9fdef81064c5a4a9c9f6b9a67125cd249e50baaa..0000000000000000000000000000000000000000 --- a/validator/acts_validator/src/main/ets/pages/Camera/CameraOrientation90.ets +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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 camera from '@ohos.multimedia.camera' -import Logger from '../model/Logger' -import CameraService from '../model/CameraService' -import {CustomContainer} from '../common/CameraOrientation'; -import FirstDialog from '../model/FirstDialog'; -const CameraMode = { - MODE_PHOTO: 0, // 拍照模式 - MODE_VIDEO: 1 // 录像模式 -} -@Entry -@Component -struct SetCircle { - @State FillColor: string = '#FF000000'; - @State name: string = 'CameraOrientation90'; - @State StepTips: string = '测试目的:用于测试相机预览和拍照旋转能力\n-左侧显示给定旋转角度后的预览窗口\n-右侧显示拍照后的图片\n-对于前置摄像头会有镜像效果'+'\n'+'预期结果:拍照图片与预览窗口的画面一致'; - private tag: string = 'qlw' - private mXComponentController: XComponentController = new XComponentController() - @State surfaceId: number = 0; - @State curModel: number = CameraMode.MODE_PHOTO - @State cameraDeviceIndex: number = 0 - @State imageRotationValue: number = camera.ImageRotation.ROTATION_0 - @State qualityLevelValue: number = camera.QualityLevel.QUALITY_LEVEL_LOW - @State assetUri: string = undefined - @State Vue: boolean = false - async aboutToAppear(){ - await FirstDialog.ChooseDialog(this.StepTips,this.name); - } - handleTakePicture = (assetUri: string) => { - this.assetUri = assetUri - Logger.info(this.tag, `takePicture end, assetUri: ${this.assetUri}`) - } - - @Builder specificNoParam() { - Column() { - } - } - build() { - Column() { - CustomContainer({ - title: this.name, - Url:'pages/Camera/Camera_index', - StepTips:this.StepTips, - content: this.specificNoParam, - FillColor:$FillColor, - name:$name, - Vue: $Vue - }).height('30%').width('100%') - Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { - XComponent({ - id: 'componentId', - type: 'surface', - controller: this.mXComponentController - }) - .onLoad(async () => { - Logger.info(this.tag, 'onLoad is called') - // @ts-ignore - this.mXComponentController.setXComponentSurfaceSize({ surfaceWidth: 10, surfaceHeight: 10 }) - // @ts-ignore - this.surfaceId = this.mXComponentController.getXComponentSurfaceId() - Logger.info(this.tag, `onLoad surfaceId: ${this.surfaceId}`) - this.curModel = CameraMode.MODE_PHOTO - CameraService.initCamera(this.surfaceId, this.cameraDeviceIndex) - }) - .height('40%') - .width('40%') - Text('Camera Preview').fontSize('20fp') - Image(this.assetUri || $r('app.media.img')) - .width('40%').height('40%').border({ width: 1 }).objectFit(ImageFit.Contain) - Text('Oriented Photo').fontSize('20fp') - Button('拍照', { - type: ButtonType.Normal, - stateEffect: true - }).borderRadius(8).backgroundColor(0x317aff).width('20%').onClick(() => { - CameraService.takePicture(this.imageRotationValue, this.qualityLevelValue) - CameraService.setTakePictureCallback(this.handleTakePicture.bind(this)) - this.Vue = true - }) - }.width('100%').height('70%').backgroundColor(Color.White) - }.width('100%').height('100%').backgroundColor(Color.Black) - } -} \ No newline at end of file diff --git a/validator/acts_validator/src/main/ets/pages/Camera/Camera_index.ets b/validator/acts_validator/src/main/ets/pages/Camera/Camera_index.ets index d496a102d98eef1498cf270b9d1317793f037613..e011a2aefd03d2f8b3dd88e69e223bd2efdf1ac5 100644 --- a/validator/acts_validator/src/main/ets/pages/Camera/Camera_index.ets +++ b/validator/acts_validator/src/main/ets/pages/Camera/Camera_index.ets @@ -39,12 +39,9 @@ struct IndexPage { @State result : string = ''; @State TEST : number = 0; private TestCaseList = [ - {title:'CameraOrientation0',uri:'pages/Camera/CameraOrientation0'}, - {title:'CameraOrientation90',uri:'pages/Camera/CameraOrientation90'}, - {title:'CameraOrientation180',uri:'pages/Camera/CameraOrientation180'}, - {title:'CameraOrientation270',uri:'pages/Camera/CameraOrientation270'}, - {title:'CameraFormat',uri:'pages/Camera/CameraFormat'}, - {title:'CameraVideo',uri:'pages/Camera/CameraVideo'}, + {title:'Camera Orientation',uri:'pages/Camera/CameraOrientation'}, + {title:'Camera Format',uri:'pages/Camera/CameraFormat'}, + {title:'Camera Video',uri:'pages/Camera/CameraVideo'}, ] @State ColorObject : string[] = VarColor; async onPageShow(){ @@ -275,30 +272,29 @@ struct IndexPage { } let TestNum = FailNum + PassNum; let testNum = (TestNum).toString(); - let ignoreNum = (4-TestNum).toString(); let arrayBuffer = new ArrayBuffer(40960); let bufView = new DataView(arrayBuffer); let serializer = new xml.XmlSerializer(bufView); serializer.setDeclaration(); serializer.startElement("testsuite"); serializer.setAttributes("name", "ActsCameraTest"); - serializer.setAttributes("time", ""); + serializer.setAttributes("time", "*"); serializer.setAttributes("errors", "0"); serializer.setAttributes("disabled", "0"); serializer.setAttributes("failures", failNum); serializer.setAttributes("ignored", "0"); serializer.setAttributes("tests", testNum); - serializer.setAttributes("message", ""); + serializer.setAttributes("message", "*"); serializer.setAttributes("modulename", "ActsCameraTest"); for (let i = 0; i < title.length; i++) { serializer.startElement("testcase"); serializer.setAttributes("name", String(title[i])); - serializer.setAttributes("status", ""); - serializer.setAttributes("time", ""); - serializer.setAttributes("classname", ""); + serializer.setAttributes("status", "*"); + serializer.setAttributes("time", "*"); + serializer.setAttributes("classname", "*"); serializer.setAttributes("result", String(result[i])); - serializer.setAttributes("level", ""); - serializer.setAttributes("message", ""); + serializer.setAttributes("level", "*"); + serializer.setAttributes("message", "*"); serializer.endElement(); } serializer.endElement(); diff --git a/validator/acts_validator/src/main/ets/pages/Experience/ColdStartTest.ets b/validator/acts_validator/src/main/ets/pages/Experience/ColdStartTest.ets new file mode 100644 index 0000000000000000000000000000000000000000..bbdfda38999c08107dfac7113c4a706cff793325 --- /dev/null +++ b/validator/acts_validator/src/main/ets/pages/Experience/ColdStartTest.ets @@ -0,0 +1,193 @@ +/* + * Copyright (c) 2022-2023 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 fileio from '@ohos.fileio'; +import {CustomContainer} from '../common/StartExperienceCustomContainer'; +import FirstDialog from '../model/FirstDialog'; +import context from '@ohos.app.ability.common'; + +let abilityContext = getContext(this) as context.UIAbilityContext; +let path = globalThis.dir; +let SettingsColdPath = path + '/ColdStartSetting.log'; +let PhotosColdPath = path + '/ColdStartPhotos.log'; +let MmsColdPath = path + '/ColdStartMms.log'; +let CameraColdPath = path + '/ColdStartCamera.log'; +let ContactsColdPath = path + '/ColdStartContacts.log'; +@Entry +@Component +struct CustomContainerUser { + @State name: string = 'ColdStart'; + @State StepTips: string = '操作步骤:根据操作提示运行脚本文件,启动应用'+'\n'+'预期结果:所有应用冷启动时延低于2000ms则测试通过'; + @State Vue: boolean = false; + @State StartEnable: boolean = true; + @State num: number = 0; + @State setNum: number = 0; + @State photosNum: number = 0; + @State mmsNum: number = 0; + @State cameraNum: number = 0; + @State contactsNum: number = 0; + async aboutToAppear(){ + await FirstDialog.ChooseDialog(this.StepTips,this.name); + this.Vue = false; + } + + @Builder specificNoParam() { + Column() { + Flex({direction:FlexDirection.Column,alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { + Column(){ + Row(){ + Text(`根据以下操作步骤完成测试`+ '\n' + '\n' ) + .fontColor(Color.White).fontSize('24fp') + } + Row(){ + Text(`测试步骤:`+ '\n' + '\n' + `1.点击开始键进入系统桌面`+ '\n' + '\n' + `2.清空后台应用`+ '\n' + '\n' + + `3.双击执行.bat选择冷启动测试输入待测应用编号`+ '\n' + '\n' +`4.依次测试完所有应用冷启动返回validator界面` + + '\n' + '\n' + '5.点击停止键观察测试结果' + '\n' + '\n' + `5.若所有冷启动测试均在规定时延内完成则通过测试` + + '\n' + '\n' ) + .fontColor(Color.White).fontSize('20fp') + } + Row(){ + Column(){ + Button(`开始`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(this.StartEnable) + .opacity(this.StartEnable? 1 : 0.4) + .onClick(async () => { + this.num = 0; + this.StartEnable = !this.StartEnable; + let str = { + bundleName:"com.ohos.launcher", + abilityName: "com.ohos.launcher.MainAbility", + } + abilityContext.startAbility(str).then((data) => { + + }).catch((error) => { + + }) + }) + } + Column(){ + Button(`结束`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(!this.StartEnable) + .opacity(!this.StartEnable? 1 : 0.4) + .onClick(() => { + this.StartEnable = !this.StartEnable + /* + settings + */ + let setFd = fileio.openSync(SettingsColdPath, 0o100 | 0o2002, 0o664); + let setBuf = new ArrayBuffer(4096); + fileio.readSync(setFd,setBuf); + let setReport = String.fromCharCode.apply(null,new Uint8Array(setBuf)); + let setHead = setReport.indexOf(':'); + let setTime = setReport.substring(setHead+1); + this.setNum = parseFloat(setTime); + if( this.setNum < 2000 ) { + this.num++ + } + /* + photos + */ + let photosFd = fileio.openSync(PhotosColdPath, 0o100 | 0o2002, 0o664); + let photosBuf = new ArrayBuffer(4096); + fileio.readSync(photosFd,photosBuf); + let photosReport = String.fromCharCode.apply(null,new Uint8Array(photosBuf)); + let photosHead = photosReport.indexOf(':'); + let photosTime = photosReport.substring(photosHead+1); + this.photosNum = parseFloat(photosTime); + if( this.photosNum < 2000 ) { + this.num++ + } + /* + mms + */ + let MmsFd = fileio.openSync(MmsColdPath, 0o100 | 0o2002, 0o664); + let MmsBuf = new ArrayBuffer(4096); + fileio.readSync(MmsFd,MmsBuf); + let MmsReport = String.fromCharCode.apply(null,new Uint8Array(MmsBuf)); + let MmsHead = MmsReport.indexOf(':'); + let MmsTime = MmsReport.substring(MmsHead+1); + this.mmsNum = parseFloat(MmsTime); + if( this.mmsNum < 2000 ) { + this.num++ + } + /* + camera + */ + let CameraFd = fileio.openSync(CameraColdPath, 0o100 | 0o2002, 0o664); + let CameraBuf = new ArrayBuffer(4096); + fileio.readSync(CameraFd,CameraBuf); + let CameraReport = String.fromCharCode.apply(null,new Uint8Array(CameraBuf)); + let CameraHead = CameraReport.indexOf(':'); + let CameraTime = CameraReport.substring(CameraHead+1); + this.cameraNum = parseFloat(CameraTime); + if( this.cameraNum < 2000 ) { + this.num++ + } + /* + mms + */ + let ContactsFd = fileio.openSync(ContactsColdPath, 0o100 | 0o2002, 0o664); + let ContactsBuf = new ArrayBuffer(4096); + fileio.readSync(ContactsFd,ContactsBuf); + let ContactsReport = String.fromCharCode.apply(null,new Uint8Array(ContactsBuf)); + let ContactsHead = ContactsReport.indexOf(':'); + let ContactsTime = ContactsReport.substring(ContactsHead+1); + this.contactsNum = parseFloat(ContactsTime); + if( this.contactsNum < 2000 ) { + this.num++ + } + if( this.num === 5 ) { + this.Vue = true; + } + }) + } + } + Row(){ + Text('\n' + '\n' + `测试结果:` + '\n' + '设置冷启动时延' + this.setNum + 'ms' + '\n' + '图库冷启动时延' + this.photosNum + + 'ms' + '\n'+ '信息冷启动时延' + this.mmsNum + 'ms' + '\n' + '相机冷启动时延' + this.cameraNum + 'ms' + '\n' + + '联系人冷启动时延' + this.contactsNum + 'ms' + '\n' + '通过冷启动测试项' + this.num + '个') + .fontColor(Color.White).fontSize('24fp') + } + } + + } + }.width('100%').height('80%').backgroundColor(Color.Black) + .justifyContent(FlexAlign.SpaceEvenly) + } + build() { + Column() { + CustomContainer({ + title: this.name, + Url:'pages/Experience/Experience_index', + StepTips:this.StepTips, + content: this.specificNoParam, + name:$name, + Vue: $Vue, + StartEnable: $StartEnable, + num: $num, + setNum: $setNum, + photosNum: $photosNum, + mmsNum: $mmsNum, + cameraNum: $cameraNum, + contactsNum: $contactsNum, + }) + }.width('100%').height('100%').backgroundColor(Color.Black) + } +} diff --git a/validator/acts_validator/src/main/ets/pages/Experience/DeskFps.ets b/validator/acts_validator/src/main/ets/pages/Experience/DeskFps.ets index 756c21e5e634851700c46e9ce35f3cf2d63abee1..781d4db210a704adefcd0a75646cffbc6429429f 100644 --- a/validator/acts_validator/src/main/ets/pages/Experience/DeskFps.ets +++ b/validator/acts_validator/src/main/ets/pages/Experience/DeskFps.ets @@ -44,7 +44,7 @@ struct CustomContainerUser { } Row(){ Text(`测试步骤:`+ '\n' + '\n' + `1.点击开始键进入系统桌面`+ '\n' + '\n' - + `2.双击执行DeskFps.bat`+ '\n' + '\n' +`3.左右滑动系统桌面连续10s以上` + '\n' + '\n' + + `2.双击执行.bat选择帧率>桌面`+ '\n' + '\n' +`3.左右滑动系统桌面连续10s以上` + '\n' + '\n' + '4.回到DeskFps测试项点击停止键' + '\n' + '\n' + `5.若测试最高帧率大于54帧则通过测试` + '\n' + '\n' + '\n' + '\n' + '\n' + '\n' + '\n' + '\n' ) .fontColor(Color.White).fontSize('20fp') @@ -83,11 +83,26 @@ struct CustomContainerUser { let buf = new ArrayBuffer(4096); fileio.readSync(fd,buf); let report = String.fromCharCode.apply(null,new Uint8Array(buf)); - let head = report.indexOf(':'); + let headList = new Array(); + let endList = new Array(); + let head = report.indexOf(":"); let end = report.indexOf('|'); - this.Fps = report.substring(head+1,end); - let num = Number(this.Fps) - if(num >= 54 ) { + let Fps = new Array(); + + while(head > -1){ + headList.push(head); + head = report.indexOf(":",head + 1); + } + while(end > -1){ + endList.push(end); + end = report.indexOf("|",end + 1); + } + for(let i = 0; i < headList.length; i++) { + Fps[i] = Number(report.substring(headList[i]+1,endList[i])); + } + let maxFps = Math.max(...Fps); + this.Fps = maxFps.toString(); + if(maxFps >= 54) { this.Vue = true; } }) diff --git a/validator/acts_validator/src/main/ets/pages/Experience/Experience_index.ets b/validator/acts_validator/src/main/ets/pages/Experience/Experience_index.ets index 82244242817ec4f537eeb496c3717ec5d47e39d4..55b4c8b2820b8ab8ed2452c946c4cea818e197dc 100644 --- a/validator/acts_validator/src/main/ets/pages/Experience/Experience_index.ets +++ b/validator/acts_validator/src/main/ets/pages/Experience/Experience_index.ets @@ -41,6 +41,15 @@ struct IndexPage { private TestCaseList = [ {title:'DeskFps',uri:'pages/Experience/DeskFps'}, {title:'PhotoFps',uri:'pages/Experience/PhotoFps'}, + {title:'ColdStart',uri:'pages/Experience/ColdStartTest'}, + {title:'HotStart',uri:'pages/Experience/HotStartTest'}, + {title:'ViewPhoto',uri:'pages/Experience/ViewPhotoTest'}, + {title:'KeyboardDisplay',uri:'pages/Experience/KeyboardDisplayTest'}, + {title:'StartTaskManager',uri:'pages/Experience/StartTaskManager'}, + {title:'StartBackgroundTask',uri:'pages/Experience/StartBackgroundTask'}, + {title:'StartNotification',uri:'pages/Experience/StartNotification'}, + {title:'ScrollPhotosList',uri:'pages/Experience/ScrollPhotosList'}, + {title:'KeyboardInput',uri:'pages/Experience/KeyboardInputTest'}, ] @State ColorObject : string[] = VarColor; async onPageShow(){ @@ -271,30 +280,29 @@ struct IndexPage { } let TestNum = FailNum + PassNum; let testNum = (TestNum).toString(); - let ignoreNum = (24-TestNum).toString(); let arrayBuffer = new ArrayBuffer(40960); let bufView = new DataView(arrayBuffer); let serializer = new xml.XmlSerializer(bufView); serializer.setDeclaration(); serializer.startElement("testsuite"); serializer.setAttributes("name","ActsExperienceTest"); - serializer.setAttributes("time", ""); + serializer.setAttributes("time", "*"); serializer.setAttributes("errors", "0"); serializer.setAttributes("disabled", "0"); serializer.setAttributes("failures", failNum); serializer.setAttributes("ignored", "0"); serializer.setAttributes("tests", testNum); - serializer.setAttributes("message", ""); + serializer.setAttributes("message", "*"); serializer.setAttributes("modulename", "ActsExperienceTest"); for (let i = 0; i < title.length; i++) { serializer.startElement("testcase"); serializer.setAttributes("name", String(title[i])); - serializer.setAttributes("status", ""); - serializer.setAttributes("time", ""); - serializer.setAttributes("classname", ""); + serializer.setAttributes("status", "*"); + serializer.setAttributes("time", "*"); + serializer.setAttributes("classname", "*"); serializer.setAttributes("result", String(result[i])); - serializer.setAttributes("level", ""); - serializer.setAttributes("message", ""); + serializer.setAttributes("level", "*"); + serializer.setAttributes("message", "*"); serializer.endElement(); } serializer.endElement(); diff --git a/validator/acts_validator/src/main/ets/pages/Experience/HotStartTest.ets b/validator/acts_validator/src/main/ets/pages/Experience/HotStartTest.ets new file mode 100644 index 0000000000000000000000000000000000000000..a5d14e027fa9c388e01a35ca3102e72348eada16 --- /dev/null +++ b/validator/acts_validator/src/main/ets/pages/Experience/HotStartTest.ets @@ -0,0 +1,179 @@ +/* + * Copyright (c) 2022-2023 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 fileio from '@ohos.fileio'; +import {CustomContainer} from '../common/StartExperienceCustomContainer'; +import FirstDialog from '../model/FirstDialog'; +import context from '@ohos.app.ability.common'; + +let abilityContext = getContext(this) as context.UIAbilityContext; +let path = globalThis.dir; +let SettingsColdPath = path + '/HotStartSetting.log'; +let PhotosColdPath = path + '/HotStartPhotos.log'; +let MmsColdPath = path + '/HotStartMms.log'; +let ContactsColdPath = path + '/HotStartContacts.log'; +@Entry +@Component +struct CustomContainerUser { + @State name: string = 'HotStart'; + @State StepTips: string = '操作步骤:根据操作提示运行脚本文件,启动应用'+'\n'+'预期结果:所有应用热启动时延低于1000ms则测试通过'; + @State Vue: boolean = false; + @State StartEnable: boolean = true; + @State num: number = 0; + @State setNum: number = 0; + @State photosNum: number = 0; + @State mmsNum: number = 0; + @State cameraNum: number = 0; + @State contactsNum: number = 0; + async aboutToAppear(){ + await FirstDialog.ChooseDialog(this.StepTips,this.name); + this.Vue = false; + } + + @Builder specificNoParam() { + Column() { + Flex({direction:FlexDirection.Column,alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { + Column(){ + Row(){ + Text(`根据以下操作步骤完成测试`+ '\n' + '\n' ) + .fontColor(Color.White).fontSize('24fp') + } + Row(){ + Text(`测试步骤:`+ '\n' + '\n' + `1.点击开始键进入系统桌面`+ '\n' + '\n' + `2.开启应用回退到桌面,保证此时后台应用存在`+ '\n' + '\n' + + `3.双击执行.bat选择热启动测试输入待测应用编号`+ '\n' + '\n' +`4.依次测试完所有应用热启动返回validator界面` + + '\n' + '\n' + '5.点击停止键观察测试结果' + '\n' + '\n' + `5.若所有热启动测试均在规定时延内完成则通过测试` + + '\n' + '\n' + '\n' + '\n' ) + .fontColor(Color.White).fontSize('20fp') + } + Row(){ + Column(){ + Button(`开始`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(this.StartEnable) + .opacity(this.StartEnable? 1 : 0.4) + .onClick(async () => { + this.num = 0; + this.StartEnable = !this.StartEnable; + let str = { + bundleName:"com.ohos.launcher", + abilityName: "com.ohos.launcher.MainAbility", + } + abilityContext.startAbility(str).then((data) => { + + }).catch((error) => { + + }) + }) + } + Column(){ + Button(`结束`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(!this.StartEnable) + .opacity(!this.StartEnable? 1 : 0.4) + .onClick(() => { + this.StartEnable = !this.StartEnable + /* + settings + */ + let setFd = fileio.openSync(SettingsColdPath, 0o100 | 0o2002, 0o664); + let setBuf = new ArrayBuffer(4096); + fileio.readSync(setFd,setBuf); + let setReport = String.fromCharCode.apply(null,new Uint8Array(setBuf)); + let setHead = setReport.indexOf(':'); + let setTime = setReport.substring(setHead+1); + this.setNum = parseFloat(setTime); + if( this.setNum < 1000 ) { + this.num++ + } + /* + photos + */ + let photosFd = fileio.openSync(PhotosColdPath, 0o100 | 0o2002, 0o664); + let photosBuf = new ArrayBuffer(4096); + fileio.readSync(photosFd,photosBuf); + let photosReport = String.fromCharCode.apply(null,new Uint8Array(photosBuf)); + let photosHead = photosReport.indexOf(':'); + let photosTime = photosReport.substring(photosHead+1); + this.photosNum = parseFloat(photosTime); + if( this.photosNum < 1000 ) { + this.num++ + } + /* + mms + */ + let MmsFd = fileio.openSync(MmsColdPath, 0o100 | 0o2002, 0o664); + let MmsBuf = new ArrayBuffer(4096); + fileio.readSync(MmsFd,MmsBuf); + let MmsReport = String.fromCharCode.apply(null,new Uint8Array(MmsBuf)); + let MmsHead = MmsReport.indexOf(':'); + let MmsTime = MmsReport.substring(MmsHead+1); + this.mmsNum = parseFloat(MmsTime); + if( this.mmsNum < 1000 ) { + this.num++ + } + /* + mms + */ + let ContactsFd = fileio.openSync(ContactsColdPath, 0o100 | 0o2002, 0o664); + let ContactsBuf = new ArrayBuffer(4096); + fileio.readSync(ContactsFd,ContactsBuf); + let ContactsReport = String.fromCharCode.apply(null,new Uint8Array(ContactsBuf)); + let ContactsHead = ContactsReport.indexOf(':'); + let ContactsTime = ContactsReport.substring(ContactsHead+1); + this.contactsNum = parseFloat(ContactsTime); + if( this.contactsNum < 1000 ) { + this.num++ + } + if( this.num === 4 ) { + this.Vue = true; + } + }) + } + } + Row(){ + Text('\n' + '\n' + '\n' + '\n' + `测试结果:` + '\n' + '设置热启动时延' + this.setNum + 'ms' + + '\n' + '图库热启动时延' + this.photosNum + 'ms' + '\n'+ '信息热启动时延' + this.mmsNum + 'ms' + '\n' + + '联系人热启动时延' + this.contactsNum + 'ms' + '\n' + '通过热启动测试项' + this.num + '个' ) + .fontColor(Color.White).fontSize('24fp') + } + } + + } + }.width('100%').height('80%').backgroundColor(Color.Black) + .justifyContent(FlexAlign.SpaceEvenly) + } + build() { + Column() { + CustomContainer({ + title: this.name, + Url:'pages/Experience/Experience_index', + StepTips:this.StepTips, + content: this.specificNoParam, + name:$name, + Vue: $Vue, + StartEnable: $StartEnable, + num: $num, + setNum: $setNum, + photosNum: $photosNum, + mmsNum: $mmsNum, + cameraNum: $cameraNum, + contactsNum: $contactsNum, + }) + }.width('100%').height('100%').backgroundColor(Color.Black) + } +} diff --git a/validator/acts_validator/src/main/ets/pages/Experience/KeyboardDisplayTest.ets b/validator/acts_validator/src/main/ets/pages/Experience/KeyboardDisplayTest.ets new file mode 100644 index 0000000000000000000000000000000000000000..41c3c97146ef1d721f91803f427b858054300822 --- /dev/null +++ b/validator/acts_validator/src/main/ets/pages/Experience/KeyboardDisplayTest.ets @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2022-2023 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 fileio from '@ohos.fileio'; +import {CustomContainer} from '../common/TimeExperienceCustomContainer'; +import FirstDialog from '../model/FirstDialog'; + +let path = globalThis.dir; +let Xpath = path + '/CompleteTimeKeyboard.log'; + +@Entry +@Component +struct CustomContainerUser { + @State name: string = 'KeyboardDisplay'; + @State StepTips: string = '操作步骤:根据操作提示点击输入框等待键盘加载'+'\n'+'预期结果:输入键盘弹出时延低于1000ms测试通过'; + @State Vue: boolean = false; + @State StartEnable: boolean = true; + @State time: string = '0'; + async aboutToAppear(){ + await FirstDialog.ChooseDialog(this.StepTips,this.name); + this.Vue = false; + } + + @Builder specificNoParam() { + Column() { + Flex({direction:FlexDirection.Column,alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { + Column(){ + Row(){ + Text(`根据以下操作步骤完成测试`+ '\n' + '\n' + '\n' + '\n'+ '\n' + '\n' + '\n' + '\n') + .fontColor(Color.White).fontSize('24fp') + } + Row(){ + Text(`测试步骤:`+ '\n' + '\n' + `1.点击开始键进入信息` + '\n' + '\n' +'2.新建一条信息显示输入框'+ '\n' + '\n' + + `3.双击执行.bat选择完成时延>键盘按键弹出`+ '\n' + '\n' +`4.点击输入框等待键盘弹出` + '\n' + '\n' + + '5.待脚本执行结束回到Validator点击停止键' + '\n' + '\n' + `6.若弹出键盘时延小于或等于1000ms则通过测试` + + '\n' + '\n' + '\n' + '\n' ) + .fontColor(Color.White).fontSize('20fp') + } + Row(){ + Column(){ + Button(`开始`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(this.StartEnable) + .opacity(this.StartEnable? 1 : 0.4) + .onClick(async () => { + this.StartEnable = !this.StartEnable; + let bundleName=new String("com.ohos.mms").toString(); + let abilityName=new String("com.ohos.mms.MainAbility").toString(); + let str = { + "bundleName": bundleName, + "abilityName": abilityName, + } + + globalThis.abilityContext.startAbility(str, (err, data) => { + if(err) { + return; + } + }) + }) + } + Column(){ + Button(`结束`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(!this.StartEnable) + .opacity(!this.StartEnable? 1 : 0.4) + .onClick(() => { + this.StartEnable = !this.StartEnable + let fd = fileio.openSync(Xpath, 0o100 | 0o2002, 0o664); + let buf = new ArrayBuffer(4096); + fileio.readSync(fd,buf); + let report = String.fromCharCode.apply(null,new Uint8Array(buf)); + let head = report.indexOf(":"); + this.time = report.substring(head+1); + let time = parseFloat(this.time) + if( time < 1000 ) { + this.Vue = true; + } + }) + } + } + Row(){ + Text('\n' + '\n' + '\n' + '\n'+ '\n' + '\n' + '\n' + '\n' + `输入键盘弹出时延:` + this.time + 'ms' ) + .fontColor(Color.White).fontSize('24fp') + } + } + + } + }.width('100%').height('80%').backgroundColor(Color.Black) + .justifyContent(FlexAlign.SpaceEvenly) + } + build() { + Column() { + CustomContainer({ + title: this.name, + Url:'pages/Experience/Experience_index', + StepTips:this.StepTips, + content: this.specificNoParam, + name:$name, + Vue: $Vue, + StartEnable: $StartEnable, + time: $time + }) + }.width('100%').height('100%').backgroundColor(Color.Black) + } +} \ No newline at end of file diff --git a/validator/acts_validator/src/main/ets/pages/Experience/KeyboardInputTest.ets b/validator/acts_validator/src/main/ets/pages/Experience/KeyboardInputTest.ets new file mode 100644 index 0000000000000000000000000000000000000000..4bd3e376e28546273d266fe4a441ab5de7dc7f84 --- /dev/null +++ b/validator/acts_validator/src/main/ets/pages/Experience/KeyboardInputTest.ets @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2022-2023 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 fileio from '@ohos.fileio'; +import {CustomContainer} from '../common/TimeExperienceCustomContainer'; +import FirstDialog from '../model/FirstDialog'; + +let path = globalThis.dir; +let Xpath = path + '/ResponseTimeKeyboard.log'; + +@Entry +@Component +struct CustomContainerUser { + @State name: string = 'KeyboardInput'; + @State StepTips: string = '操作步骤:根据操作提示点击键盘按键'+'\n'+'预期结果:键盘输入响应时延低于150ms测试通过'; + @State Vue: boolean = false; + @State StartEnable: boolean = true; + @State time: string = '0'; + async aboutToAppear(){ + await FirstDialog.ChooseDialog(this.StepTips,this.name); + this.Vue = false; + } + + @Builder specificNoParam() { + Column() { + Flex({direction:FlexDirection.Column,alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { + Column(){ + Row(){ + Text(`根据以下操作步骤完成测试`+ '\n' + '\n' + '\n' + '\n'+ '\n' + '\n' + '\n' + '\n') + .fontColor(Color.White).fontSize('24fp') + } + Row(){ + Text(`测试步骤:`+ '\n' + '\n' + `1.点击开始键进入信息` + '\n' + '\n' +'2.新建一条信息点击输入框打开键盘'+ '\n' + '\n' + + `3.双击执行.bat选择响应时延>键盘按键输入`+ '\n' + '\n' +`4.随意点击按键等待响应` + '\n' + '\n' + + '5.待脚本执行结束回到Validator点击停止键' + '\n' + '\n' + `6.若按键响应时延小于或等于150ms则通过测试` + + '\n' + '\n' + '\n' + '\n' ) + .fontColor(Color.White).fontSize('20fp') + } + Row(){ + Column(){ + Button(`开始`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(this.StartEnable) + .opacity(this.StartEnable? 1 : 0.4) + .onClick(async () => { + this.StartEnable = !this.StartEnable; + let bundleName=new String("com.ohos.mms").toString(); + let abilityName=new String("com.ohos.mms.MainAbility").toString(); + let str = { + "bundleName": bundleName, + "abilityName": abilityName, + } + + globalThis.abilityContext.startAbility(str, (err, data) => { + if(err) { + return; + } + }) + }) + } + Column(){ + Button(`结束`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(!this.StartEnable) + .opacity(!this.StartEnable? 1 : 0.4) + .onClick(() => { + this.StartEnable = !this.StartEnable + let fd = fileio.openSync(Xpath, 0o100 | 0o2002, 0o664); + let buf = new ArrayBuffer(4096); + fileio.readSync(fd,buf); + let report = String.fromCharCode.apply(null,new Uint8Array(buf)); + let head = report.indexOf(":"); + this.time = report.substring(head+1); + let time = parseFloat(this.time) + if( time < 150 ) { + this.Vue = true; + } + }) + } + } + Row(){ + Text('\n' + '\n' + '\n' + '\n'+ '\n' + '\n' + '\n' + '\n' + `按键响应时延:` + this.time + 'ms' ) + .fontColor(Color.White).fontSize('24fp') + } + } + + } + }.width('100%').height('80%').backgroundColor(Color.Black) + .justifyContent(FlexAlign.SpaceEvenly) + } + build() { + Column() { + CustomContainer({ + title: this.name, + Url:'pages/Experience/Experience_index', + StepTips:this.StepTips, + content: this.specificNoParam, + name:$name, + Vue: $Vue, + StartEnable: $StartEnable, + time: $time + }) + }.width('100%').height('100%').backgroundColor(Color.Black) + } +} \ No newline at end of file diff --git a/validator/acts_validator/src/main/ets/pages/Experience/PhotoFps.ets b/validator/acts_validator/src/main/ets/pages/Experience/PhotoFps.ets index f8ac4805d29251ee35ea039f6db0958ca3256b1a..76c18d9dbef1e2107ff0dfd57d0281a76f84eacf 100644 --- a/validator/acts_validator/src/main/ets/pages/Experience/PhotoFps.ets +++ b/validator/acts_validator/src/main/ets/pages/Experience/PhotoFps.ets @@ -12,7 +12,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - import fileio from '@ohos.fileio'; import {CustomContainer} from '../common/ExperienceCustomContainer'; import FirstDialog from '../model/FirstDialog'; @@ -43,7 +42,7 @@ struct CustomContainerUser { } Row(){ Text(`测试步骤:`+ '\n' + '\n' +`1.在图库中预置500张图片`+ '\n' + '\n' +`2.点击开始键进入图库`+ '\n' + '\n' - + `3.双击执行PhotoFps.bat`+ '\n' + '\n' +`4.滑动图库缩略图界面连续10s以上` + '\n' + '\n' + + `3.双击执行.bat选择帧率>图库`+ '\n' + '\n' +`4.滑动图库缩略图界面连续10s以上` + '\n' + '\n' + '5.回到PhotoFps测试项点击停止键' + '\n' + '\n' + `6.若测试最高帧率大于或等于54帧则通过测试` + '\n' + '\n' + '\n' + '\n' + '\n' + '\n' + '\n' + '\n' ) .fontColor(Color.White).fontSize('20fp') @@ -63,7 +62,6 @@ struct CustomContainerUser { let str = { "bundleName": bundleName, "abilityName": abilityName, - "parameters": "" } globalThis.abilityContext.startAbility(str, (err, data) => { @@ -86,11 +84,26 @@ struct CustomContainerUser { let buf = new ArrayBuffer(4096); fileio.readSync(fd,buf); let report = String.fromCharCode.apply(null,new Uint8Array(buf)); - let head = report.indexOf(':'); + let headList = new Array(); + let endList = new Array(); + let head = report.indexOf(":"); let end = report.indexOf('|'); - this.Fps = report.substring(head+1,end); - let num = Number(this.Fps) - if(num >= 54) { + let Fps = new Array(); + + while(head > -1){ + headList.push(head); + head = report.indexOf(":",head + 1); + } + while(end > -1){ + endList.push(end); + end = report.indexOf("|",end + 1); + } + for(let i = 0; i < headList.length; i++) { + Fps[i] = Number(report.substring(headList[i]+1,endList[i])); + } + let maxFps = Math.max(...Fps); + this.Fps = maxFps.toString(); + if(maxFps >= 54) { this.Vue = true; } }) diff --git a/validator/acts_validator/src/main/ets/pages/Experience/ScrollListTest.ets b/validator/acts_validator/src/main/ets/pages/Experience/ScrollListTest.ets deleted file mode 100644 index 63dcb6fe1788636dbd7a9e5570a1fc16d1e089c7..0000000000000000000000000000000000000000 --- a/validator/acts_validator/src/main/ets/pages/Experience/ScrollListTest.ets +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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 {CustomContainer} from '../common/CustomContainer'; -import FirstDialog from '../model/FirstDialog'; -@Entry -@Component -struct CustomContainerUser { - private listArr: number[] = Array.from(new Array(50).keys()); - @State name: string = 'ScrollingList'; - @State StepTips: string = '操作步骤:滑动列表观察是否能正常滑动'+'\n'+'预期结果:列表滑动正常'; - @State Vue: boolean = false; - async aboutToAppear(){ - await FirstDialog.ChooseDialog(this.StepTips,this.name); - this.Vue = true; - } - @Builder specificNoParam() { - Column() { - List() { - ForEach(this.listArr,(item:any,index:number) => { - ListItem() { - Text('Item #' + (index + 1)).width('100%').height(50).fontSize(16).fontColor(Color.White).margin({left:'10vp'}) - } - },index => index) - }.height('100%').width('100%').divider({strokeWidth:1,color:Color.Grey}) - }.height('83%').width('100%') - } - build() { - Column() { - CustomContainer({ - title: this.name, - Url: 'pages/Experience/Experience_index', - StepTips: this.StepTips, - content: this.specificNoParam.bind(this), - name: $name, - Vue: $Vue, - }) - }.width('100%').height('100%').backgroundColor(Color.Black) - } -} diff --git a/validator/acts_validator/src/main/ets/pages/Experience/ScrollPhotosList.ets b/validator/acts_validator/src/main/ets/pages/Experience/ScrollPhotosList.ets new file mode 100644 index 0000000000000000000000000000000000000000..ca5994863c3cf9e7cbc4d3ff88a947e313e64fd6 --- /dev/null +++ b/validator/acts_validator/src/main/ets/pages/Experience/ScrollPhotosList.ets @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2022-2023 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 fileio from '@ohos.fileio'; +import {CustomContainer} from '../common/TimeExperienceCustomContainer'; +import FirstDialog from '../model/FirstDialog'; + +let path = globalThis.dir; +let Xpath = path + '/ResponseTimePhotos.log'; + +@Entry +@Component +struct CustomContainerUser { + @State name: string = 'ScrollPhotosList'; + @State StepTips: string = '操作步骤:根据操作提示滑动图库缩略表'+'\n'+'预期结果:滑动响应时延低于150ms测试通过'; + @State Vue: boolean = false; + @State StartEnable: boolean = true; + @State time: string = '0'; + async aboutToAppear(){ + await FirstDialog.ChooseDialog(this.StepTips,this.name); + this.Vue = false; + } + + @Builder specificNoParam() { + Column() { + Flex({direction:FlexDirection.Column,alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { + Column(){ + Row(){ + Text(`根据以下操作步骤完成测试`+ '\n' + '\n' + '\n' + '\n'+ '\n' + '\n' + '\n' + '\n') + .fontColor(Color.White).fontSize('24fp') + } + Row(){ + Text(`测试步骤:`+ '\n' + '\n' +`1.在图库中预置500张图片`+ '\n' + '\n' +`2.点击开始键进入图库`+ '\n' + '\n' + + `3.双击执行.bat选择响应时延>图库缩略列表滑动`+ '\n' + '\n' +`4.滑动图库缩略列表等待响应` + '\n' + '\n' + + '5.待脚本执行结束回到Validator点击停止键' + '\n' + '\n' + `6.若滑动响应时延小于或等于150ms则通过测试` + + '\n' + '\n' + '\n' + '\n' ) + .fontColor(Color.White).fontSize('20fp') + } + Row(){ + Column(){ + Button(`开始`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(this.StartEnable) + .opacity(this.StartEnable? 1 : 0.4) + .onClick(async () => { + this.StartEnable = !this.StartEnable; + let bundleName=new String("com.ohos.photos").toString(); + let abilityName=new String("com.ohos.photos.MainAbility").toString(); + let str = { + "bundleName": bundleName, + "abilityName": abilityName, + } + + globalThis.abilityContext.startAbility(str, (err, data) => { + if(err) { + return; + } + }) + }) + } + Column(){ + Button(`结束`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(!this.StartEnable) + .opacity(!this.StartEnable? 1 : 0.4) + .onClick(() => { + this.StartEnable = !this.StartEnable + let fd = fileio.openSync(Xpath, 0o100 | 0o2002, 0o664); + let buf = new ArrayBuffer(4096); + fileio.readSync(fd,buf); + let report = String.fromCharCode.apply(null,new Uint8Array(buf)); + let head = report.indexOf(":"); + this.time = report.substring(head+1); + let time = parseFloat(this.time) + if( time < 150 ) { + this.Vue = true; + } + }) + } + } + Row(){ + Text('\n' + '\n' + '\n' + '\n'+ '\n' + '\n' + '\n' + '\n' + `滑动响应时延:` + this.time + 'ms' ) + .fontColor(Color.White).fontSize('24fp') + } + } + + } + }.width('100%').height('80%').backgroundColor(Color.Black) + .justifyContent(FlexAlign.SpaceEvenly) + } + build() { + Column() { + CustomContainer({ + title: this.name, + Url:'pages/Experience/Experience_index', + StepTips:this.StepTips, + content: this.specificNoParam, + name:$name, + Vue: $Vue, + StartEnable: $StartEnable, + time: $time + }) + }.width('100%').height('100%').backgroundColor(Color.Black) + } +} \ No newline at end of file diff --git a/validator/acts_validator/src/main/ets/pages/Experience/StartBackgroundTask.ets b/validator/acts_validator/src/main/ets/pages/Experience/StartBackgroundTask.ets new file mode 100644 index 0000000000000000000000000000000000000000..1af001ac7ac0a1eba1fa04dfa9921e70d3ffb4e7 --- /dev/null +++ b/validator/acts_validator/src/main/ets/pages/Experience/StartBackgroundTask.ets @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2022-2023 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 fileio from '@ohos.fileio'; +import {CustomContainer} from '../common/TimeExperienceCustomContainer'; +import FirstDialog from '../model/FirstDialog'; +import context from '@ohos.app.ability.common'; + +let abilityContext = getContext(this) as context.UIAbilityContext; +let path = globalThis.dir; +let Xpath = path + '/CompleteTimeLauncher.log'; + +@Entry +@Component +struct CustomContainerUser { + @State name: string = 'StartBackgroundTask'; + @State StepTips: string = '操作步骤:根据操作提示打开后台任务'+'\n'+'预期结果:打开后台任务时延低于600ms测试通过'; + @State Vue: boolean = false; + @State StartEnable: boolean = true; + @State time: string = '0'; + async aboutToAppear(){ + await FirstDialog.ChooseDialog(this.StepTips,this.name); + this.Vue = false; + } + + @Builder specificNoParam() { + Column() { + Flex({direction:FlexDirection.Column,alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { + Column(){ + Row(){ + Text(`根据以下操作步骤完成测试`+ '\n' + '\n' + '\n' + '\n'+ '\n' + '\n' + '\n' + '\n') + .fontColor(Color.White).fontSize('24fp') + } + Row(){ + Text(`测试步骤:`+ '\n' + '\n' +`1.点击开始键进入桌面开启任务管理器` + '\n' + '\n' + `2.双击执行.bat选择完成时延>后台任务切换`+ + '\n' + '\n' +`3.随意点开一个后台任务` + '\n' + '\n' + '4.待脚本执行结束回到Validator点击停止键' + + '\n' + '\n' + `5.若打开后台任务时延小于或等于600ms则通过测试` + '\n' + '\n' + '\n' + '\n' ) + .fontColor(Color.White).fontSize('20fp') + } + Row(){ + Column(){ + Button(`开始`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(this.StartEnable) + .opacity(this.StartEnable? 1 : 0.4) + .onClick(async () => { + this.StartEnable = !this.StartEnable; + let str = { + bundleName:"com.ohos.launcher", + abilityName: "com.ohos.launcher.MainAbility", + } + abilityContext.startAbility(str).then((data) => { + + }).catch((error) => { + + }) + }) + } + Column(){ + Button(`结束`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(!this.StartEnable) + .opacity(!this.StartEnable? 1 : 0.4) + .onClick(() => { + this.StartEnable = !this.StartEnable + let fd = fileio.openSync(Xpath, 0o100 | 0o2002, 0o664); + let buf = new ArrayBuffer(4096); + fileio.readSync(fd,buf); + let report = String.fromCharCode.apply(null,new Uint8Array(buf)); + let head = report.indexOf(":"); + this.time = report.substring(head+1); + let time = parseFloat(this.time) + if( time < 600 ) { + this.Vue = true; + } + }) + } + } + Row(){ + Text('\n' + '\n' + '\n' + '\n'+ '\n' + '\n' + '\n' + '\n' + `打开后台任务时延:` + this.time + 'ms' ) + .fontColor(Color.White).fontSize('24fp') + } + } + + } + }.width('100%').height('80%').backgroundColor(Color.Black) + .justifyContent(FlexAlign.SpaceEvenly) + } + build() { + Column() { + CustomContainer({ + title: this.name, + Url:'pages/Experience/Experience_index', + StepTips:this.StepTips, + content: this.specificNoParam, + name:$name, + Vue: $Vue, + StartEnable: $StartEnable, + time: $time + }) + }.width('100%').height('100%').backgroundColor(Color.Black) + } +} \ No newline at end of file diff --git a/validator/acts_validator/src/main/ets/pages/Experience/StartNotification.ets b/validator/acts_validator/src/main/ets/pages/Experience/StartNotification.ets new file mode 100644 index 0000000000000000000000000000000000000000..ae5d0a252b4a4381135596657856a4b3d5694e2a --- /dev/null +++ b/validator/acts_validator/src/main/ets/pages/Experience/StartNotification.ets @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2022-2023 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 fileio from '@ohos.fileio'; +import {CustomContainer} from '../common/TimeExperienceCustomContainer'; +import FirstDialog from '../model/FirstDialog'; +import context from '@ohos.app.ability.common'; + +let abilityContext = getContext(this) as context.UIAbilityContext; +let path = globalThis.dir; +let Xpath = path + '/ResponseTimeLauncher.log'; + +@Entry +@Component +struct CustomContainerUser { + @State name: string = 'StartNotification'; + @State StepTips: string = '操作步骤:根据操作提示下拉通知栏'+'\n'+'预期结果:下拉通知栏时延低于150ms测试通过'; + @State Vue: boolean = false; + @State StartEnable: boolean = true; + @State time: string = '0'; + async aboutToAppear(){ + await FirstDialog.ChooseDialog(this.StepTips,this.name); + this.Vue = false; + } + + @Builder specificNoParam() { + Column() { + Flex({direction:FlexDirection.Column,alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { + Column(){ + Row(){ + Text(`根据以下操作步骤完成测试`+ '\n' + '\n' + '\n' + '\n'+ '\n' + '\n' + '\n' + '\n') + .fontColor(Color.White).fontSize('24fp') + } + Row(){ + Text(`测试步骤:`+ '\n' + '\n' +`1.点击开始键进入桌面` + '\n' + '\n' + `2.双击执行.bat选择响应时延>下拉状态栏`+ + '\n' + '\n' +`3.从屏幕顶部滑动下拉通知栏` + '\n' + '\n' + '4.待脚本执行结束回到Validator点击停止键' + + '\n' + '\n' + `5.若下拉通知栏时延小于或等于150ms则通过测试` + '\n' + '\n' + '\n' + '\n' ) + .fontColor(Color.White).fontSize('20fp') + } + Row(){ + Column(){ + Button(`开始`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(this.StartEnable) + .opacity(this.StartEnable? 1 : 0.4) + .onClick(async () => { + this.StartEnable = !this.StartEnable; + let str = { + bundleName:"com.ohos.launcher", + abilityName: "com.ohos.launcher.MainAbility", + } + abilityContext.startAbility(str).then((data) => { + + }).catch((error) => { + + }) + }) + } + Column(){ + Button(`结束`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(!this.StartEnable) + .opacity(!this.StartEnable? 1 : 0.4) + .onClick(() => { + this.StartEnable = !this.StartEnable + let fd = fileio.openSync(Xpath, 0o100 | 0o2002, 0o664); + let buf = new ArrayBuffer(4096); + fileio.readSync(fd,buf); + let report = String.fromCharCode.apply(null,new Uint8Array(buf)); + let head = report.indexOf(":"); + this.time = report.substring(head+1); + let time = parseFloat(this.time) + if( time < 150 ) { + this.Vue = true; + } + }) + } + } + Row(){ + Text('\n' + '\n' + '\n' + '\n'+ '\n' + '\n' + '\n' + '\n' + `下拉通知栏时延:` + this.time + 'ms' ) + .fontColor(Color.White).fontSize('24fp') + } + } + + } + }.width('100%').height('80%').backgroundColor(Color.Black) + .justifyContent(FlexAlign.SpaceEvenly) + } + build() { + Column() { + CustomContainer({ + title: this.name, + Url:'pages/Experience/Experience_index', + StepTips:this.StepTips, + content: this.specificNoParam, + name:$name, + Vue: $Vue, + StartEnable: $StartEnable, + time: $time + }) + }.width('100%').height('100%').backgroundColor(Color.Black) + } +} \ No newline at end of file diff --git a/validator/acts_validator/src/main/ets/pages/Experience/StartTaskManager.ets b/validator/acts_validator/src/main/ets/pages/Experience/StartTaskManager.ets new file mode 100644 index 0000000000000000000000000000000000000000..15cf1838eba971b45ca40c933eb473383e67c6ae --- /dev/null +++ b/validator/acts_validator/src/main/ets/pages/Experience/StartTaskManager.ets @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2022-2023 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 fileio from '@ohos.fileio'; +import {CustomContainer} from '../common/TimeExperienceCustomContainer'; +import FirstDialog from '../model/FirstDialog'; +import context from '@ohos.app.ability.common'; + +let abilityContext = getContext(this) as context.UIAbilityContext; +let path = globalThis.dir; +let Xpath = path + '/CompleteTimeLauncher.log'; + +@Entry +@Component +struct CustomContainerUser { + @State name: string = 'StartTaskManager'; + @State StepTips: string = '操作步骤:根据操作提示打开任务管理器'+'\n'+'预期结果:打开任务管理器时延低于1000ms测试通过'; + @State Vue: boolean = false; + @State StartEnable: boolean = true; + @State time: string = '0'; + async aboutToAppear(){ + await FirstDialog.ChooseDialog(this.StepTips,this.name); + this.Vue = false; + } + + @Builder specificNoParam() { + Column() { + Flex({direction:FlexDirection.Column,alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { + Column(){ + Row(){ + Text(`根据以下操作步骤完成测试`+ '\n' + '\n' + '\n' + '\n'+ '\n' + '\n' + '\n' + '\n') + .fontColor(Color.White).fontSize('24fp') + } + Row(){ + Text(`测试步骤:`+ '\n' + '\n' +`1.点击开始键进入桌面` + '\n' + '\n' + `2.双击执行.bat选择完成时延>启动任务管理器`+ + '\n' + '\n' +`3.点击右下角方框开启任务管理器` + '\n' + '\n' + '4.待脚本执行结束回到Validator点击停止键' + + '\n' + '\n' + `5.若启动任务管理器时延小于或等于1000ms则通过测试` + '\n' + '\n' + '\n' + '\n' ) + .fontColor(Color.White).fontSize('20fp') + } + Row(){ + Column(){ + Button(`开始`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(this.StartEnable) + .opacity(this.StartEnable? 1 : 0.4) + .onClick(async () => { + this.StartEnable = !this.StartEnable; + let str = { + bundleName:"com.ohos.launcher", + abilityName: "com.ohos.launcher.MainAbility", + } + abilityContext.startAbility(str).then((data) => { + + }).catch((error) => { + + }) + }) + } + Column(){ + Button(`结束`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(!this.StartEnable) + .opacity(!this.StartEnable? 1 : 0.4) + .onClick(() => { + this.StartEnable = !this.StartEnable + let fd = fileio.openSync(Xpath, 0o100 | 0o2002, 0o664); + let buf = new ArrayBuffer(4096); + fileio.readSync(fd,buf); + let report = String.fromCharCode.apply(null,new Uint8Array(buf)); + let head = report.indexOf(":"); + this.time = report.substring(head+1); + let time = parseFloat(this.time) + if( time < 1000 ) { + this.Vue = true; + } + }) + } + } + Row(){ + Text('\n' + '\n' + '\n' + '\n'+ '\n' + '\n' + '\n' + '\n' + `启动任务管理器时延:` + this.time + 'ms' ) + .fontColor(Color.White).fontSize('24fp') + } + } + + } + }.width('100%').height('80%').backgroundColor(Color.Black) + .justifyContent(FlexAlign.SpaceEvenly) + } + build() { + Column() { + CustomContainer({ + title: this.name, + Url:'pages/Experience/Experience_index', + StepTips:this.StepTips, + content: this.specificNoParam, + name:$name, + Vue: $Vue, + StartEnable: $StartEnable, + time: $time + }) + }.width('100%').height('100%').backgroundColor(Color.Black) + } +} \ No newline at end of file diff --git a/validator/acts_validator/src/main/ets/pages/Experience/ViewPhotoTest.ets b/validator/acts_validator/src/main/ets/pages/Experience/ViewPhotoTest.ets new file mode 100644 index 0000000000000000000000000000000000000000..95ac2d5dc87863213c899db7640fcb1f2a1e4b09 --- /dev/null +++ b/validator/acts_validator/src/main/ets/pages/Experience/ViewPhotoTest.ets @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2022-2023 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 fileio from '@ohos.fileio'; +import {CustomContainer} from '../common/TimeExperienceCustomContainer'; +import FirstDialog from '../model/FirstDialog'; + +let path = globalThis.dir; +let Xpath = path + '/ResponseTimePhotos.log'; + +@Entry +@Component +struct CustomContainerUser { + @State name: string = 'ViewPhoto'; + @State StepTips: string = '操作步骤:根据操作提示点击图片等待加载'+'\n'+'预期结果:图片响应时延低于150ms测试通过'; + @State Vue: boolean = false; + @State StartEnable: boolean = true; + @State time: string = '0'; + async aboutToAppear(){ + await FirstDialog.ChooseDialog(this.StepTips,this.name); + this.Vue = false; + } + + @Builder specificNoParam() { + Column() { + Flex({direction:FlexDirection.Column,alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { + Column(){ + Row(){ + Text(`根据以下操作步骤完成测试`+ '\n' + '\n' + '\n' + '\n'+ '\n' + '\n' + '\n' + '\n') + .fontColor(Color.White).fontSize('24fp') + } + Row(){ + Text(`测试步骤:`+ '\n' + '\n' +`1.在图库中预置500张图片`+ '\n' + '\n' +`2.点击开始键进入图库`+ '\n' + '\n' + + `3.双击执行.bat选择响应时延>查看图片`+ '\n' + '\n' +`4.点击一张图库缩略图等待响应` + '\n' + '\n' + + '5.待脚本执行结束回到Validator点击停止键' + '\n' + '\n' + `6.若图片响应时延小于或等于150ms则通过测试` + + '\n' + '\n' + '\n' + '\n' ) + .fontColor(Color.White).fontSize('20fp') + } + Row(){ + Column(){ + Button(`开始`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(this.StartEnable) + .opacity(this.StartEnable? 1 : 0.4) + .onClick(async () => { + this.StartEnable = !this.StartEnable; + let bundleName=new String("com.ohos.photos").toString(); + let abilityName=new String("com.ohos.photos.MainAbility").toString(); + let str = { + "bundleName": bundleName, + "abilityName": abilityName, + } + + globalThis.abilityContext.startAbility(str, (err, data) => { + if(err) { + return; + } + }) + }) + } + Column(){ + Button(`结束`) + .borderRadius(8) + .backgroundColor(0x317aff) + .width('30%') + .enabled(!this.StartEnable) + .opacity(!this.StartEnable? 1 : 0.4) + .onClick(() => { + this.StartEnable = !this.StartEnable + let fd = fileio.openSync(Xpath, 0o100 | 0o2002, 0o664); + let buf = new ArrayBuffer(4096); + fileio.readSync(fd,buf); + let report = String.fromCharCode.apply(null,new Uint8Array(buf)); + let head = report.indexOf(":"); + this.time = report.substring(head+1); + let time = parseFloat(this.time) + if( time < 150 ) { + this.Vue = true; + } + }) + } + } + Row(){ + Text('\n' + '\n' + '\n' + '\n'+ '\n' + '\n' + '\n' + '\n' + `图片响应时延:` + this.time + 'ms' ) + .fontColor(Color.White).fontSize('24fp') + } + } + + } + }.width('100%').height('80%').backgroundColor(Color.Black) + .justifyContent(FlexAlign.SpaceEvenly) + } + build() { + Column() { + CustomContainer({ + title: this.name, + Url:'pages/Experience/Experience_index', + StepTips:this.StepTips, + content: this.specificNoParam, + name:$name, + Vue: $Vue, + StartEnable: $StartEnable, + time: $time + }) + }.width('100%').height('100%').backgroundColor(Color.Black) + } +} \ No newline at end of file diff --git a/validator/acts_validator/src/main/ets/pages/Player/Player_index.ets b/validator/acts_validator/src/main/ets/pages/Player/Player_index.ets index 16fbfcd652f200acd0fd96738a15a92636eced03..3763ad6686687ec78c337f04a9a88b9b20722602 100644 --- a/validator/acts_validator/src/main/ets/pages/Player/Player_index.ets +++ b/validator/acts_validator/src/main/ets/pages/Player/Player_index.ets @@ -270,30 +270,29 @@ struct IndexPage { } let TestNum = FailNum + PassNum; let testNum = (TestNum).toString(); - let ignoreNum = (24-TestNum).toString(); let arrayBuffer = new ArrayBuffer(40960); let bufView = new DataView(arrayBuffer); let serializer = new xml.XmlSerializer(bufView); serializer.setDeclaration(); serializer.startElement("testsuite"); serializer.setAttributes("name","ActsPlayerTest"); - serializer.setAttributes("time", ""); + serializer.setAttributes("time", "*"); serializer.setAttributes("errors", "0"); serializer.setAttributes("disabled", "0"); serializer.setAttributes("failures", failNum); serializer.setAttributes("ignored", "0"); serializer.setAttributes("tests", testNum); - serializer.setAttributes("message", ""); + serializer.setAttributes("message", "*"); serializer.setAttributes("modulename", "ActsPlayerTest"); for (let i = 0; i < title.length; i++) { serializer.startElement("testcase"); serializer.setAttributes("name", String(title[i])); - serializer.setAttributes("status", ""); - serializer.setAttributes("time", ""); - serializer.setAttributes("classname", ""); + serializer.setAttributes("status", "*"); + serializer.setAttributes("time", "*"); + serializer.setAttributes("classname", "*"); serializer.setAttributes("result", String(result[i])); - serializer.setAttributes("level", ""); - serializer.setAttributes("message", ""); + serializer.setAttributes("level", "*"); + serializer.setAttributes("message", "*"); serializer.endElement(); } serializer.endElement(); diff --git a/validator/acts_validator/src/main/ets/pages/common/CameraOrientation.ets b/validator/acts_validator/src/main/ets/pages/common/CameraOrientation.ets index 5139d40a5ae719fdc411c97a50f3ed476e3190b7..ebef726e687419b0c1874639b97fb57721bf1b10 100644 --- a/validator/acts_validator/src/main/ets/pages/common/CameraOrientation.ets +++ b/validator/acts_validator/src/main/ets/pages/common/CameraOrientation.ets @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 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 diff --git a/validator/acts_validator/src/main/ets/pages/common/ExperienceCustomContainer.ets b/validator/acts_validator/src/main/ets/pages/common/ExperienceCustomContainer.ets index 53650d231fddf5be156fcec1e056c460ebfefee5..b9eca1d48e01ec66b348543cc24b2def8f87c16c 100644 --- a/validator/acts_validator/src/main/ets/pages/common/ExperienceCustomContainer.ets +++ b/validator/acts_validator/src/main/ets/pages/common/ExperienceCustomContainer.ets @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 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 diff --git a/validator/acts_validator/src/main/ets/pages/common/StartExperienceCustomContainer.ets b/validator/acts_validator/src/main/ets/pages/common/StartExperienceCustomContainer.ets new file mode 100644 index 0000000000000000000000000000000000000000..46a89a3eeb9b1d44ec00a49a6f40bf969880ab8c --- /dev/null +++ b/validator/acts_validator/src/main/ets/pages/common/StartExperienceCustomContainer.ets @@ -0,0 +1,170 @@ +/* + * Copyright (c) 2022-2023 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 prompt from '@ohos.prompt'; +import fileio from '@ohos.fileio'; +import router from '@ohos.router'; +import screenshot from '@ohos.screenshot'; +import image from '@ohos.multimedia.image'; +import Logger from '../model/Logger'; +import mediaLibrary from '@ohos.multimedia.mediaLibrary'; + +let path = globalThis.dir; + +const TAG = '[Screenshot]'; +@Component +export struct CustomContainer { + @Link name : string; + title : string = ''; + StepTips: string = ''; + Url : string = ''; + @Link StartEnable : boolean + @Link Vue : boolean; + @Link num : number; + @Link setNum : number; + @Link photosNum : number; + @Link mmsNum : number; + @Link cameraNum : number; + @Link contactsNum : number; + @BuilderParam content: () => void; + @Builder + PassBtn(text: Resource, isFullScreen: boolean) { + if(this.Vue == false){ + Button({stateEffect:this.Vue}) { + Image($r('app.media.ic_public_pass')).width('20vp').height('20vp') + }.width('30%').height('30vp').backgroundColor(Color.Grey).opacity(0.4) + .onClick(()=>{ + + }) + } + else{ + Button({stateEffect:this.Vue}) { + Image($r('app.media.ic_public_pass')).width('20vp').height('20vp') + }.width('30%').height('30vp').backgroundColor(Color.Grey) + .onClick(()=>{ + router.back({ + url:this.Url, + params: {result : 'Pass', title : this.name, + } + }) + this.getScreen(isFullScreen); + prompt.showToast({ + message: '通过', duration: 1000 + }); + }) + } + } + @Builder + FailBtn(text: Resource, isFullScreen: boolean) { + Button(){ + Image($r('app.media.ic_public_fail')).width('20vp').height('20vp') + }.width('30%').height('30vp').backgroundColor(Color.Grey) + .onClick(()=>{ + router.back({ + url:this.Url, + params: {result : 'Fail',title : this.name, + } + }) + this.getScreen(isFullScreen); + prompt.showToast({ + message: '失败', duration: 1000 + }); + }) + } + build() { + Column() { + Row() { + Button(){ + Image($r('app.media.ic_public_back')).width('20vp').height('18vp').margin({left:'20vp'}) + }.backgroundColor(Color.Black) + .onClick(()=>{ + router.back({ + url:this.Url, + params: {result : 'None',} + }) + }) + Text(this.title).fontColor(Color.White).fontSize('18fp').margin({left:'-20vp'}) + Text('hello').fontColor(Color.White).visibility(Visibility.Hidden) + }.backgroundColor(Color.Black).height('10%').width('100%').justifyContent(FlexAlign.SpaceBetween) + this.content(); + Blank() + Row() { + this.PassBtn($r('app.string.btn_fullscreen'), true); + Button(){ + Image($r('app.media.ic_public_help')).width('20vp').height('20vp') + }.width('30%').height('30vp').backgroundColor(Color.Grey) + .onClick(() =>{ + AlertDialog.show({ + title:'操作提示', + message: this.StepTips, + confirm:{ + value:'OK', + action:()=>{ + } + } + }) + }) + this.FailBtn($r('app.string.btn_fullscreen'), true); + }.width('100%').justifyContent(FlexAlign.SpaceEvenly).backgroundColor(Color.Black) + }.height('98%').width('100%') + } + async savePicture(data: image.PixelMap, context: any) { + Logger.info(TAG, `savePicture`); + let packOpts: image.PackingOption = { + format: "image/jpeg", quality: 100 + }; + let info = { + prefix: 'IMG_', suffix: '.jpg', directory: mediaLibrary.DirectoryType.DIR_IMAGE + }; + let name = this.name; + let displayName = `${info.prefix}${name}${info.suffix}`; + let dirPath = path + '/screenshot' + '/' + displayName; + let imagePackerApi = image.createImagePacker(); + let arrayBuffer = await imagePackerApi.packing(data, packOpts); + let fd = fileio.openSync(dirPath,0o102,0o666); + imagePackerApi.release(); + try { + await fileio.write(fd, arrayBuffer); + } catch (err) { + Logger.error(`write failed, code is ${err.code}, message is ${err.message}`); + } + await fileio.close(fd); + Logger.info(TAG, `write done`); + + } + getScreen = (isFullScreen: boolean) => { + let screenshotOptions: screenshot.ScreenshotOptions = { + screenRect: { left: 0, top: 0, width: 400, height: 400 }, + imageSize: { width: 400, height: 400 }, + rotation: 0, + displayId: 0 + }; + if (isFullScreen) { + screenshotOptions = { + rotation: 0 + } + } + try { + screenshot.save(screenshotOptions, (err, data: image.PixelMap) => { + if (err) { + Logger.info(TAG, `Failed to save the screenshot. Error:${JSON.stringify(err)}`); + } + Logger.info(TAG, 'save callback'); + this.savePicture(data, getContext(this) as any); + }) + } catch (err) { + Logger.error(`save failed, code is ${err.code}, message is ${err.message}`); + } + } +} diff --git a/validator/acts_validator/src/main/ets/pages/common/TimeExperienceCustomContainer.ets b/validator/acts_validator/src/main/ets/pages/common/TimeExperienceCustomContainer.ets new file mode 100644 index 0000000000000000000000000000000000000000..6d4ba891ed31bfca2dc3a6fe360b72b71b92a75e --- /dev/null +++ b/validator/acts_validator/src/main/ets/pages/common/TimeExperienceCustomContainer.ets @@ -0,0 +1,165 @@ +/* + * Copyright (c) 2022-2023 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 prompt from '@ohos.prompt'; +import fileio from '@ohos.fileio'; +import router from '@ohos.router'; +import screenshot from '@ohos.screenshot'; +import image from '@ohos.multimedia.image'; +import Logger from '../model/Logger'; +import mediaLibrary from '@ohos.multimedia.mediaLibrary'; + +let path = globalThis.dir; + +const TAG = '[Screenshot]'; +@Component +export struct CustomContainer { + @Link name : string; + title : string = ''; + StepTips: string = ''; + Url : string = ''; + @Link StartEnable : boolean + @Link Vue : boolean; + @Link time : string; + @BuilderParam content: () => void; + @Builder + PassBtn(text: Resource, isFullScreen: boolean) { + if(this.Vue == false){ + Button({stateEffect:this.Vue}) { + Image($r('app.media.ic_public_pass')).width('20vp').height('20vp') + }.width('30%').height('30vp').backgroundColor(Color.Grey).opacity(0.4) + .onClick(()=>{ + + }) + } + else{ + Button({stateEffect:this.Vue}) { + Image($r('app.media.ic_public_pass')).width('20vp').height('20vp') + }.width('30%').height('30vp').backgroundColor(Color.Grey) + .onClick(()=>{ + router.back({ + url:this.Url, + params: {result : 'Pass', title : this.name, + } + }) + this.getScreen(isFullScreen); + prompt.showToast({ + message: '通过', duration: 1000 + }); + }) + } + } + @Builder + FailBtn(text: Resource, isFullScreen: boolean) { + Button(){ + Image($r('app.media.ic_public_fail')).width('20vp').height('20vp') + }.width('30%').height('30vp').backgroundColor(Color.Grey) + .onClick(()=>{ + router.back({ + url:this.Url, + params: {result : 'Fail',title : this.name, + } + }) + this.getScreen(isFullScreen); + prompt.showToast({ + message: '失败', duration: 1000 + }); + }) + } + build() { + Column() { + Row() { + Button(){ + Image($r('app.media.ic_public_back')).width('20vp').height('18vp').margin({left:'20vp'}) + }.backgroundColor(Color.Black) + .onClick(()=>{ + router.back({ + url:this.Url, + params: {result : 'None',} + }) + }) + Text(this.title).fontColor(Color.White).fontSize('18fp').margin({left:'-20vp'}) + Text('hello').fontColor(Color.White).visibility(Visibility.Hidden) + }.backgroundColor(Color.Black).height('10%').width('100%').justifyContent(FlexAlign.SpaceBetween) + this.content(); + Blank() + Row() { + this.PassBtn($r('app.string.btn_fullscreen'), true); + Button(){ + Image($r('app.media.ic_public_help')).width('20vp').height('20vp') + }.width('30%').height('30vp').backgroundColor(Color.Grey) + .onClick(() =>{ + AlertDialog.show({ + title:'操作提示', + message: this.StepTips, + confirm:{ + value:'OK', + action:()=>{ + } + } + }) + }) + this.FailBtn($r('app.string.btn_fullscreen'), true); + }.width('100%').justifyContent(FlexAlign.SpaceEvenly).backgroundColor(Color.Black) + }.height('98%').width('100%') + } + async savePicture(data: image.PixelMap, context: any) { + Logger.info(TAG, `savePicture`); + let packOpts: image.PackingOption = { + format: "image/jpeg", quality: 100 + }; + let info = { + prefix: 'IMG_', suffix: '.jpg', directory: mediaLibrary.DirectoryType.DIR_IMAGE + }; + let name = this.name; + let displayName = `${info.prefix}${name}${info.suffix}`; + let dirPath = path + '/screenshot' + '/' + displayName; + let imagePackerApi = image.createImagePacker(); + let arrayBuffer = await imagePackerApi.packing(data, packOpts); + let fd = fileio.openSync(dirPath,0o102,0o666); + imagePackerApi.release(); + try { + await fileio.write(fd, arrayBuffer); + } catch (err) { + Logger.error(`write failed, code is ${err.code}, message is ${err.message}`); + } + await fileio.close(fd); + Logger.info(TAG, `write done`); + + } + getScreen = (isFullScreen: boolean) => { + let screenshotOptions: screenshot.ScreenshotOptions = { + screenRect: { left: 0, top: 0, width: 400, height: 400 }, + imageSize: { width: 400, height: 400 }, + rotation: 0, + displayId: 0 + }; + if (isFullScreen) { + screenshotOptions = { + rotation: 0 + } + } + try { + screenshot.save(screenshotOptions, (err, data: image.PixelMap) => { + if (err) { + Logger.info(TAG, `Failed to save the screenshot. Error:${JSON.stringify(err)}`); + } + Logger.info(TAG, 'save callback'); + this.savePicture(data, getContext(this) as any); + }) + } catch (err) { + Logger.error(`save failed, code is ${err.code}, message is ${err.message}`); + } + } +} diff --git a/validator/acts_validator/src/main/ets/pages/index.ets b/validator/acts_validator/src/main/ets/pages/index.ets index 2faa930076f14c0c43f9130838b8034217df7ad8..34a6af180ce36cdbc84cece12b2524f949b5b3b8 100644 --- a/validator/acts_validator/src/main/ets/pages/index.ets +++ b/validator/acts_validator/src/main/ets/pages/index.ets @@ -323,7 +323,6 @@ struct IndexPage { } let TestNum = FailNum + PassNum; let testNum = (TestNum).toString(); - let ignoreNum = (54-TestNum).toString(); /* * ArkUI */ @@ -343,8 +342,7 @@ struct IndexPage { ArkUIPassIndex = ArkUIReport.indexOf('Pass',ArkUIPassIndex + 1); } let ArkUITestNum = ArkUIFailNum + ArkUIPassNum; - let ArkuiTestNum = (ArkUIPassNum).toString(); - let ArkUIIgnoreNum = (23-ArkUITestNum).toString(); + let ArkuiTestNum = (ArkUITestNum).toString(); /* * Audio */ @@ -364,8 +362,7 @@ struct IndexPage { AudioPassIndex = AudioReport.indexOf('Pass',AudioPassIndex + 1); } let AudioTestNum = AudioFailNum + AudioPassNum; - let audioTestNum = (AudioPassNum).toString(); - let AudioIgnoreNum = (28-AudioTestNum).toString(); + let audioTestNum = (AudioTestNum).toString(); /* * Camera */ @@ -385,8 +382,7 @@ struct IndexPage { CameraPassIndex = CameraReport.indexOf('Pass',CameraPassIndex + 1); } let CameraTestNum = CameraFailNum + CameraPassNum; - let cameraTestNum = (CameraPassNum).toString(); - let CameraIgnoreNum = (28-CameraTestNum).toString(); + let cameraTestNum = (CameraTestNum).toString(); /* * Player */ @@ -406,8 +402,7 @@ struct IndexPage { PlayerPassIndex = PlayerReport.indexOf('Pass',PlayerPassIndex + 1); } let PlayerTestNum = PlayerFailNum + PlayerPassNum; - let playerTestNum = (PlayerPassNum).toString(); - let PlayerIgnoreNum = (28-PlayerTestNum).toString(); + let playerTestNum = (PlayerTestNum).toString(); /* * Experience */ @@ -427,8 +422,7 @@ struct IndexPage { ExperiencePassIndex = ExperienceReport.indexOf('Pass',ExperiencePassIndex + 1); } let ExperienceTestNum = ExperienceFailNum + ExperiencePassNum; - let experienceTestNum = (ExperiencePassNum).toString(); - let ExperienceIgnoreNum = (28-ExperienceTestNum).toString(); + let experienceTestNum = (ExperienceTestNum).toString(); let arrayBuffer = new ArrayBuffer(40960); let bufView = new DataView(arrayBuffer); @@ -445,30 +439,30 @@ struct IndexPage { serializer.setAttributes("ignored", "0"); serializer.setAttributes("unavailable", "0"); serializer.setAttributes("productinfo", "{ }"); - serializer.setAttributes("modules", ""); - serializer.setAttributes("runmodules", ""); + serializer.setAttributes("modules", "*"); + serializer.setAttributes("runmodules", "*"); /* * ArkUI */ serializer.startElement("testsuite"); serializer.setAttributes("name", "ActsArkUITest"); - serializer.setAttributes("time", ""); + serializer.setAttributes("time", "*"); serializer.setAttributes("errors", "0"); serializer.setAttributes("disabled", "0"); serializer.setAttributes("failures", ArkuiFailNum); serializer.setAttributes("ignored", "0"); serializer.setAttributes("tests", ArkuiTestNum); - serializer.setAttributes("message", ""); + serializer.setAttributes("message", "*"); serializer.setAttributes("modulename", "ActsArkUITest"); for (let i = 0; i < title1.length; i++) { serializer.startElement("testcase"); serializer.setAttributes("name", String(title1[i])); - serializer.setAttributes("status", ""); - serializer.setAttributes("time", ""); - serializer.setAttributes("classname", ""); + serializer.setAttributes("status", "*"); + serializer.setAttributes("time", "*"); + serializer.setAttributes("classname", "*"); serializer.setAttributes("result", String(result1[i])); - serializer.setAttributes("level", ""); - serializer.setAttributes("message", ""); + serializer.setAttributes("level", "*"); + serializer.setAttributes("message", "*"); serializer.endElement(); } serializer.endElement(); @@ -477,23 +471,23 @@ struct IndexPage { */ serializer.startElement("testsuite"); serializer.setAttributes("name", "ActsAudioTest"); - serializer.setAttributes("time", ""); + serializer.setAttributes("time", "*"); serializer.setAttributes("errors", "0"); serializer.setAttributes("disabled", "0"); serializer.setAttributes("failures", audioFailNum); serializer.setAttributes("ignored", "0"); serializer.setAttributes("tests", audioTestNum); - serializer.setAttributes("message", ""); + serializer.setAttributes("message", "*"); serializer.setAttributes("modulename", "ActsAudioTest"); for (let i = 0; i < title2.length; i++) { serializer.startElement("testcase"); serializer.setAttributes("name", String(title2[i])); - serializer.setAttributes("status", ""); - serializer.setAttributes("time", ""); - serializer.setAttributes("classname", ""); + serializer.setAttributes("status", "*"); + serializer.setAttributes("time", "*"); + serializer.setAttributes("classname", "*"); serializer.setAttributes("result", String(result2[i])); - serializer.setAttributes("level", ""); - serializer.setAttributes("message", ""); + serializer.setAttributes("level", "*"); + serializer.setAttributes("message", "*"); serializer.endElement(); } serializer.endElement(); @@ -502,23 +496,23 @@ struct IndexPage { */ serializer.startElement("testsuite"); serializer.setAttributes("name", "ActsCameraTest"); - serializer.setAttributes("time", ""); + serializer.setAttributes("time", "*"); serializer.setAttributes("errors", "0"); serializer.setAttributes("disabled", "0"); serializer.setAttributes("failures", cameraFailNum); serializer.setAttributes("ignored", "0"); serializer.setAttributes("tests", cameraTestNum); - serializer.setAttributes("message", ""); + serializer.setAttributes("message", "*"); serializer.setAttributes("modulename", "ActsCameraTest"); for (let i = 0; i < title2.length; i++) { serializer.startElement("testcase"); serializer.setAttributes("name", String(title3[i])); - serializer.setAttributes("status", ""); - serializer.setAttributes("time", ""); - serializer.setAttributes("classname", ""); + serializer.setAttributes("status", "*"); + serializer.setAttributes("time", "*"); + serializer.setAttributes("classname", "*"); serializer.setAttributes("result", String(result3[i])); - serializer.setAttributes("level", ""); - serializer.setAttributes("message", ""); + serializer.setAttributes("level", "*"); + serializer.setAttributes("message", "*"); serializer.endElement(); } serializer.endElement(); @@ -527,23 +521,23 @@ struct IndexPage { */ serializer.startElement("testsuite"); serializer.setAttributes("name", "ActsPlayerTest"); - serializer.setAttributes("time", ""); + serializer.setAttributes("time", "*"); serializer.setAttributes("errors", "0"); serializer.setAttributes("disabled", "0"); serializer.setAttributes("failures", playerFailNum); serializer.setAttributes("ignored", "0"); serializer.setAttributes("tests", playerTestNum); - serializer.setAttributes("message", ""); + serializer.setAttributes("message", "*"); serializer.setAttributes("modulename", "ActsPlayerTest"); for (let i = 0; i < title2.length; i++) { serializer.startElement("testcase"); serializer.setAttributes("name", String(title4[i])); - serializer.setAttributes("status", ""); - serializer.setAttributes("time", ""); - serializer.setAttributes("classname", ""); + serializer.setAttributes("status", "*"); + serializer.setAttributes("time", "*"); + serializer.setAttributes("classname", "*"); serializer.setAttributes("result", String(result4[i])); - serializer.setAttributes("level", ""); - serializer.setAttributes("message", ""); + serializer.setAttributes("level", "*"); + serializer.setAttributes("message", "*"); serializer.endElement(); } serializer.endElement(); @@ -552,23 +546,23 @@ struct IndexPage { */ serializer.startElement("testsuite"); serializer.setAttributes("name", "ActsExperienceTest"); - serializer.setAttributes("time", ""); + serializer.setAttributes("time", "*"); serializer.setAttributes("errors", "0"); serializer.setAttributes("disabled", "0"); serializer.setAttributes("failures", experienceFailNum); serializer.setAttributes("ignored", "0"); serializer.setAttributes("tests", experienceTestNum); - serializer.setAttributes("message", ""); + serializer.setAttributes("message", "*"); serializer.setAttributes("modulename", "ActsExperienceTest"); for (let i = 0; i < title2.length; i++) { serializer.startElement("testcase"); serializer.setAttributes("name", String(title5[i])); - serializer.setAttributes("status", ""); - serializer.setAttributes("time", ""); - serializer.setAttributes("classname", ""); + serializer.setAttributes("status", "*"); + serializer.setAttributes("time", "*"); + serializer.setAttributes("classname", "*"); serializer.setAttributes("result", String(result5[i])); - serializer.setAttributes("level", ""); - serializer.setAttributes("message", ""); + serializer.setAttributes("level", "*"); + serializer.setAttributes("message", "*"); serializer.endElement(); } serializer.endElement(); diff --git a/validator/acts_validator/src/main/resources/base/profile/main_pages.json b/validator/acts_validator/src/main/resources/base/profile/main_pages.json index 75715250c0a1d97d65e4e7b229638d0ae2936f88..dc2ee2fc161441ac6643cd6ab6a7abacce50b35c 100644 --- a/validator/acts_validator/src/main/resources/base/profile/main_pages.json +++ b/validator/acts_validator/src/main/resources/base/profile/main_pages.json @@ -15,7 +15,6 @@ "pages/ArkUI/CanvasStrokeStyle", "pages/ArkUI/CanvasLineCap", "pages/ArkUI/CanvasLineJoin", - "pages/ArkUI/CanvasMiterLimit", "pages/ArkUI/CanvasFont", "pages/ArkUI/CanvasTextAlign", "pages/ArkUI/CanvasTextBaseline", @@ -27,10 +26,6 @@ "pages/ArkUI/CanvasLineDashOffset", "pages/ArkUI/CanvasShadowOffsetY", "pages/Camera/Camera_index", - "pages/Camera/CameraOrientation0", - "pages/Camera/CameraOrientation90", - "pages/Camera/CameraOrientation180", - "pages/Camera/CameraOrientation270", "pages/Camera/CameraFormat", "pages/Camera/CameraVideo", "pages/Audio/Audio_index", @@ -39,6 +34,15 @@ "pages/Player/ScrollListTest", "pages/Experience/Experience_index", "pages/Experience/PhotoFps", - "pages/Experience/DeskFps" + "pages/Experience/DeskFps", + "pages/Experience/ColdStartTest", + "pages/Experience/HotStartTest", + "pages/Experience/ViewPhotoTest", + "pages/Experience/KeyboardDisplayTest", + "pages/Experience/StartTaskManager", + "pages/Experience/StartBackgroundTask", + "pages/Experience/StartNotification", + "pages/Experience/ScrollPhotosList", + "pages/Experience/KeyboardInputTest" ] }