提交 845a12b7 编写于 作者: L lanyill

差值曲线XTS用例

Signed-off-by: Nlanyill <lanyi3@huawei.com>
Change-Id: Iedcdf20c247c00efd8c72b309c3c6c3f88e1beb9
上级 f7bf57ef
......@@ -25,6 +25,6 @@ group("arkui") {
"ace_napi_test:ActsAceNapiEtsTest",
"ace_standard:ace_standard_test",
"ace_standard_video:ace_standard_video_test",
"ace_ets_curves:AceEtsCurveTest",
"ace_ets_curves:ActsAceCurveTest",
]
}
......@@ -13,24 +13,24 @@
import("//test/xts/tools/build/suite.gni")
ohos_js_hap_suite("AceEtsCurveTest") {
ohos_js_hap_suite("ActsAceCurveTest") {
hap_profile = "./entry/src/main/config.json"
deps = [
":ace_ets_component_assets",
":ace_ets_component_resources",
":ace_ets_component_test_assets",
":ace_ets_curve_assets",
":ace_ets_curve_resources",
":ace_ets_curve_test_assets",
]
ets2abc = true
certificate_profile = "./signature/openharmony_sx.p7b"
hap_name = "AceEtsCurveTest"
hap_name = "ActsAceCurveTest"
}
ohos_js_assets("ace_ets_component_assets") {
ohos_js_assets("ace_ets_curve_assets") {
source_dir = "./entry/src/main/ets/MainAbility"
}
ohos_js_assets("ace_ets_component_test_assets") {
ohos_js_assets("ace_ets_curve_test_assets") {
source_dir = "./entry/src/main/ets/TestAbility"
}
ohos_resources("ace_ets_component_resources") {
ohos_resources("ace_ets_curve_resources") {
sources = [ "./entry/src/main/resources" ]
hap_profile = "./entry/src/main/config.json"
}
......@@ -2,15 +2,15 @@
"description": "Configuration for curve Tests",
"driver": {
"type": "OHJSUnitTest",
"test-timeout": "1200000",
"test-timeout": "600000",
"bundle-name": "com.open.harmony.acetestcurve",
"package-name": "com.open.harmony.acetestcurve",
"shell-timeout": "1200000"
"shell-timeout": "600000"
},
"kits": [
{
"test-file-name": [
"AceEtsCurveTest.hap"
"ActsAceCurveTest.hap"
],
"type": "AppInstallKit",
"cleanup-apps": true
......
......@@ -13,12 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import file from '@system.file';
import {Core, ExpectExtend, InstrumentLog, ReportExtend} from "deccjsunit/index.ets"
import testsuite from "../../test/List.test"
import Curves from '@ohos.curves'
import featureAbility from "@ohos.ability.featureAbility"
@Entry
@Component
......@@ -32,110 +27,103 @@ struct CurveExample {
@State widthSize3: number = 100
@State heightSize3: number = 100
onPageShow() {
console.info("LANYI curve start run testcase!!!!")
featureAbility.getWant()
.then((Want) => {
const core = Core.getInstance()
const expectExtend = new ExpectExtend({
'id': 'extend'
})
core.addService('expect', expectExtend)
const reportExtend = new ReportExtend(file)
core.addService('report', reportExtend)
core.init()
core.subscribeEvent('task', reportExtend)
const configService = core.getDefaultService('config')
const timeout = 10000
configService.setConfig(timeout)
console.info('LANYI parameters---->' + JSON.stringify(Want.parameters))
configService.setConfig(Want.parameters)
testsuite()
core.execute()
console.info('Operation successful. Data: ' + JSON.stringify(Want));
console.info('Operation successful. Data: ' + JSON.stringify(Want));
})
.catch((error) => {
console.error('Operation failed. Cause: ' + JSON.stringify(error));
})
var stateChangeEvent = {
eventId: 8,
priority: events_emitter.EventPriority.LOW
}
events_emitter.on(stateChangeEvent, this.stateChangCallBack);
console.info("curve start page run !!!!")
}
build() {
Column() {
Text()
.key('curve')
.margin({top:100})
.margin({ top: 100 })
.width(this.widthSize)
.height(this.heightSize)
.backgroundColor(Color.Red)
.onClick(()=> {
let curve = Curves.stepsCurve(9,true);
.onClick(() => {
let curve = Curves.stepsCurve(9, true);
this.widthSize = curve.interpolate(0.5) * this.widthSize;
globalThis.widthSize = this.widthSize;
this.heightSize = curve.interpolate(0.5) * this.heightSize;
globalThis.heightSize = this.heightSize;
console.info("LANYI"+this.heightSize);
console.info("LANYI"+globalThis.heightSize);
}).animation({ duration: 2000, curve: Curve.EaseIn, delay: 500, iterations: 1, playMode: PlayMode.Normal })
globalThis.heightSize = this.heightSize;
console.info("Curves heightSize" + this.heightSize);
console.info("Curves widthSize" + this.widthSize);
})
.animation({
duration: 2000,
curve: Curve.EaseIn,
delay: 500,
iterations: 1,
playMode: PlayMode.Normal
})
Text()
.key('curve1')
.margin({top:100})
.margin({ top: 100 })
.width(this.widthSize1)
.height(this.heightSize1)
.backgroundColor(Color.Red)
.onClick(()=> {
let curve = Curves.springCurve(10,1,28,3);
.onClick(() => {
let curve = Curves.springCurve(10, 1, 28, 3);
this.widthSize1 = curve.interpolate(0.5) * this.widthSize1;
globalThis.widthSize1 = this.widthSize1;
this.heightSize1 = curve.interpolate(0.5) * this.heightSize1;
globalThis.heightSize1 = this.heightSize1;
console.info("LANYI"+this.heightSize1);
console.info("LANYI"+globalThis.heightSize1);
}).animation({ duration: 2000, curve: Curve.EaseIn, delay: 500, iterations: 1, playMode: PlayMode.Normal })
globalThis.heightSize1 = this.heightSize1;
console.info("Curves heightSize1" + this.heightSize1);
console.info("Curves widthSize1" + this.widthSize1);
})
.animation({
duration: 2000,
curve: Curve.EaseIn,
delay: 500,
iterations: 1,
playMode: PlayMode.Normal
})
Text()
.key('curve2')
.margin({top:100})
.margin({ top: 100 })
.width(this.widthSize2)
.height(this.heightSize2)
.backgroundColor(Color.Red)
.onClick(()=> {
.onClick(() => {
let curve = Curves.initCurve();
this.widthSize2 = curve.interpolate(0.5) * this.widthSize2;
globalThis.widthSize2 = this.widthSize2;
this.heightSize2 = curve.interpolate(0.5) * this.heightSize2;
globalThis.heightSize2 = this.heightSize2;
console.info("LANYI"+this.heightSize2);
console.info("LANYI"+globalThis.heightSize2);
}).animation({ duration: 2000, curve: Curve.EaseIn, delay: 500, iterations: 1, playMode: PlayMode.Normal })
globalThis.heightSize2 = this.heightSize2;
console.info("Curves heightSize2" + this.heightSize2);
console.info("Curves widthSize2" + this.widthSize2);
})
.animation({
duration: 2000,
curve: Curve.EaseIn,
delay: 500,
iterations: 1,
playMode: PlayMode.Normal
})
Text()
.key('curve3')
.margin({top:100})
.margin({ top: 100 })
.width(this.widthSize3)
.height(this.heightSize3)
.backgroundColor(Color.Red)
.onClick(()=> {
let curve = Curves.cubicBezierCurve(0.1,1,0.1,1);
.onClick(() => {
let curve = Curves.cubicBezierCurve(0.1, 1, 0.1, 1);
this.widthSize3 = curve.interpolate(0.5) * this.widthSize3;
globalThis.widthSize3 = this.widthSize3;
this.heightSize3 = curve.interpolate(0.5) * this.heightSize3;
globalThis.heightSize3 = this.heightSize3;
console.info("LANYI"+this.heightSize3);
console.info("LANYI"+globalThis.heightSize3);
}).animation({ duration: 2000, curve: Curve.EaseIn, delay: 500, iterations: 1, playMode: PlayMode.Normal })
globalThis.heightSize3 = this.heightSize3;
console.info("Curves heightSize3" + this.heightSize3);
console.info("Curves widthSize23" + this.widthSize3);
})
.animation({
duration: 2000,
curve: Curve.EaseIn,
delay: 500,
iterations: 1,
playMode: PlayMode.Normal
})
}.width("100%").height("100%")
}
......
......@@ -14,42 +14,23 @@
* limitations under the License.
*/
import router from '@ohos.router';
globalThis.flag =true
@Entry
@Component
struct Index {
onPageShow() {
let options = {
url: 'pages/curve',
}
try {
console.info("lanyi Index flag: " + globalThis.flag);
if(globalThis.flag) {
router.push(options)
}
} catch (err) {
}
struct MyComponent {
aboutToAppear() {
}
build() {
Row() {
Column() {
Text("Curve test index")
.fontSize(30)
.fontWeight(FontWeight.Bold)
}
.width('100%')
Flex({
direction: FlexDirection.Column,
alignItems: ItemAlign.Center,
justifyContent: FlexAlign.Center
}) {
Text('ACE CURVES ETS TEST')
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
.width('100%')
.height('100%')
}
}
\ No newline at end of file
// @ts-nocheck
/**
* 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.
*/
const TYPE = '$type'
const ID = '$ID'
const Z_INDEX = '$z-index'
const RECT = '$rect'
const DEBUGLINE = '$debugLine'
const ATTRS = '$attrs'
const ATTRS_SEPIA = 'sepia'
const ATTRS_ASPECTRATIO = 'aspectRatio'
const ATTRS_CONTRAST = 'contrast'
const ATTRS_SATURATE = 'saturate'
const ATTRS_HUEROTATE = 'hueRotate'
const ATTRS_INVERT = 'invert'
const ATTRS_BRIGHTNESS = 'brightness'
const ATTRS_BACKDROPBLUR = 'backdropBlur'
const ATTRS_GRAYSCALE = 'grayscale'
const ATTRS_BLUR = 'blur'
const ATTRS_GRIDOFFSET = 'gridOffset'
const ATTRS_FLEXSHRINK = 'flexShrink'
const ATTRS_FLEXGROW = 'flexGrow'
const ATTRS_OPACITY = 'opacity'
const ATTRS_DIRECTION = 'direction'
const ATTRS_ALIGN = 'align'
const ATTRS_HEIGHT = 'height'
const ATTRS_BACKGROUNDCOLOR = 'backgroundColor'
const ATTRS_ALIGNSELF = 'alignSelf'
const ATTRS_BORDERWIDTH = 'borderWidth'
const ATTRS_WIDTH = 'width'
const ATTRS_BORDERCOLOR = 'borderColor'
const ATTRS_MARGIN_BOTTOM = 'margin-bottom'
const ATTRS_BORDERSTYLE = 'borderStyle'
const ATTRS_MARGIN_RIGHT = 'margin-right'
const ATTRS_CONSTRAINTSIZE = 'constraintSize'
const ATTRS_NARGIN_LEFT = 'margin-left'
const ATTRS_BACKGROUNDIMAGE = 'backgroundImage'
const ATTRS_MARGIN_TOP = 'margin-top'
const ATTRS_BORDERRADIUS = 'borderRadius'
const ATTRS_FLEXBASIC = 'flexBasis'
const ATTRS_VISIBILITY = 'visibility'
const ATTRS_PASSWORD = 'password'
const ATTRS_CHECKED = 'checked'
const ATTRS_SELECTED = 'selected'
const ATTRS_LONG_CLICKABLE = 'long-clickable'
const ATTRS_FOCUSED = 'focused'
const ATTRS_SCROLLABLE = 'scrollable'
const ATTRS_CLICKABLE = 'clickable'
const ATTRS_FOCUSABLE = 'focusable'
const ATTRS_CHECKABLE = 'checkable'
const ATTRS_CLIP = 'clip'
const ATTRS_ENABLE = 'enabled'
const ATTRS_DISPLAYPRIORITY = 'displayPriority'
const ATTRS_LAYOUTWEIGHT = 'layoutWeight'
const ATTRS_LAYOUTPRIORITY = 'layoutPriority'
const ATTRS_GRIDSPAN = 'gridSpan'
const ATTRS_ZINDEX = 'zIndex'
const ATTRS_USEALIGN = 'useAlign'
const ATTRS_USEALIGN_EDGE = 'edge'
const ATTRS_USEALIGN_OFFSET = 'offset'
const ATTRS_MASK = 'mask'
const ATTRS_MARKANCHOR = 'markAnchor'
const ATTRS_MARKANCHOR_X = 'x'
const ATTRS_MARKANCHOR_Y = 'y'
const ATTRS_PADDING = 'padding'
const ATTRS_POSITION = 'position'
const ATTRS_POSITION_X = 'x'
const ATTRS_POSITION_Y = 'y'
const ATTRS_BACKGROUNDIMAGEPOSITION = 'backgroundImagePosition'
const ATTRS_BACKGROUNDIMAGEPOSITION_X = 'x'
const ATTRS_BACKGROUNDIMAGEPOSITION_Y = 'y'
const ATTRS_BACKGROUNDIMAGESIZE = 'backgroundImageSize'
const ATTRS_OFFSET = 'offset'
const ATTRS_OFFSET_X = 'x'
const ATTRS_OFFSET_Y = 'y'
const ATTRS_SHADOW = 'shadow'
const ATTRS_SHADOW_RADIUS = 'radius'
const ATTRS_SHADOW_COLOR = 'color'
const ATTRS_SHADOW_OFFSETX = 'offsetX'
const ATTRS_SHADOW_OFFSETY = 'offsetY'
const ATTRS_WINDOWBLUR = 'windowBlur'
const ATTRS_WINDOWBLUR_PERCENT = 'percent'
const ATTRS_WINDOWBLUR_STYLE = 'style'
const ATTRS_FONTFAMILY = 'fontFamily'
const ATTRS_FONTWEIGHT = 'fontWeight'
const ATTRS_FONTSTYLE = 'fontStyle'
const ATTRS_FONTSIZE = 'fontSize'
const ATTRS_TEXTCASE = 'textCase'
const ATTRS_MAXLINES = 'maxLines'
const ATTRS_DECORATION = 'decoration'
const ATTRS_BASELINEOFFSET = 'baselineOffset'
const ATTRS_TEXTOVERFLOW = 'textOverflow'
const ATTRS_LINEHEIGHT = 'lineHeight'
const ATTRS_FONTCOLOR = 'fontColor'
const ATTRS_TEXTALIGN = 'textAlign'
const ATTRS_CONTENT = 'content'
......@@ -14,10 +14,9 @@
* limitations under the License.
*/
import router from '@ohos.router';
import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from "deccjsunit/index.ets"
import router from '@system.router';
import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from "hypium/index"
import Utils from './Utils.ets'
export default function CurveJsunit() {
describe('CurveTest', function () {
......@@ -47,29 +46,32 @@ export default function CurveJsunit() {
console.info("curve after each called");
});
/*
* @tc.number SUB_ACE_BASIC_ETS_API_0010
* @tc.name testCurve001
* @tc.desic aceCurveEtsTest
*/
it('testCurve001', 0, async function (done) {
console.info('curve testCurve001 START');
var result_height;
var result_width;
var control;
it('testcurve01', 0, async function (done) {
console.info('curve testcurve01 START');
var result_height;
var result_width;
var control;
control =JSON.stringify(sendEventByKey('curve', 10, ""));
console.info("curve sendEventByKey result is: " + control);
setTimeout(() => {
control = JSON.stringify(sendEventByKey('curve', 10, ""));
console.info("curve sendEventByKey result is: " + control);
setTimeout(() => {
if (control) {
result_height = globalThis.widthSize;
console.info('curve ***** globalThis widthSize is ' + globalThis.widthSize);
result_width = globalThis.heightSize;
result_width = globalThis.heightSize;
console.info('curve ***** globalThis heightSize is ' + globalThis.heightSize);
} else {
console.error('control failed');
}
} else {
console.error('control failed');
}
console.info('curve ***** result_height is ' + result_height);
console.info('curve ***** result_width is ' + result_width);
var finalRes;
if ((result_height == 44.44444477558136) && (result_width == 44.44444477558136)){
if ((Math.round(result_height)==44) && (Math.round(result_width)==44)) {
finalRes = true;
console.info('curve SurfaceChangedTest success');
} else {
......@@ -81,19 +83,24 @@ export default function CurveJsunit() {
}, 3000)
});
it('testcurve02', 0, async function (done) {
console.info('curve testcurve02 START');
/*
* @tc.number SUB_ACE_BASIC_ETS_API_0020
* @tc.name testCurve002
* @tc.desic aceCurveEtsTest
*/
it('testCurve002', 0, async function (done) {
console.info('curve testCurve02 START');
var result_height;
var result_width;
var control;
control =JSON.stringify(sendEventByKey('curve1', 10, ""));
control = JSON.stringify(sendEventByKey('curve1', 10, ""));
console.info("curve1 sendEventByKey result is: " + control);
setTimeout(() => {
if (control) {
result_height = globalThis.widthSize1;
console.info('curve1 ***** globalThis widthSize1 is ' + globalThis.widthSize1);
result_width = globalThis.heightSize1;
result_width = globalThis.heightSize1;
console.info('curve1 ***** globalThis heightSize1 is ' + globalThis.heightSize1);
} else {
console.error('control failed');
......@@ -101,7 +108,7 @@ export default function CurveJsunit() {
console.info('curve1 ***** result_height1 is ' + result_height);
console.info('curve1 ***** result_width1 is ' + result_width);
var finalRes;
if ((result_height == 78.03846001625061) && (result_width == 78.03846001625061)){
if ((Math.round(result_height)==78) && (Math.round(result_width)==78)) {
finalRes = true;
console.info('curve1 SurfaceChangedTest success');
} else {
......@@ -113,19 +120,24 @@ export default function CurveJsunit() {
}, 3000)
});
it('testcurve03', 0, async function (done) {
console.info('curve testcurve03 START');
/*
* @tc.number SUB_ACE_BASIC_ETS_API_0030
* @tc.name testCurve003
* @tc.desic aceCurveEtsTest
*/
it('testCurve003', 0, async function (done) {
console.info('curve testCurve003 START');
var result_height;
var result_width;
var control;
control =JSON.stringify(sendEventByKey('curve2', 10, ""));
control = JSON.stringify(sendEventByKey('curve2', 10, ""));
console.info("curve2 sendEventByKey result is: " + control);
setTimeout(() => {
if (control) {
result_height = globalThis.widthSize2;
console.info('curve2 ***** globalThis widthSize2 is ' + globalThis.widthSize2);
result_width = globalThis.heightSize2;
result_width = globalThis.heightSize2;
console.info('curve2 ***** globalThis heightSize2 is ' + globalThis.heightSize2);
} else {
console.error('control failed');
......@@ -133,7 +145,7 @@ export default function CurveJsunit() {
console.info('curve2 ***** result_height2 is ' + result_height);
console.info('curve2 ***** result_width2 is ' + result_width);
var finalRes;
if ((result_height == 50) && (result_width == 50)){
if ((Math.round(result_height)==50) && (Math.round(result_width)==50)) {
finalRes = true;
console.info('curve2 SurfaceChangedTest success');
} else {
......@@ -145,19 +157,24 @@ export default function CurveJsunit() {
}, 3000)
});
it('testcurve04', 0, async function (done) {
console.info('curve testcurve04 START');
/*
* @tc.number SUB_ACE_BASIC_ETS_API_0040
* @tc.name testCurve004
* @tc.desic aceCurveEtsTest
*/
it('testCurve004', 0, async function (done) {
console.info('curve testCurve004 START');
var result_height;
var result_width;
var control;
control =JSON.stringify(sendEventByKey('curve3', 10, ""));
control = JSON.stringify(sendEventByKey('curve3', 10, ""));
console.info("curve3 sendEventByKey result is: " + control);
setTimeout(() => {
if (control) {
result_height = globalThis.widthSize3;
console.info('curve3 ***** globalThis widthSize3 is ' + globalThis.widthSize3);
result_width = globalThis.heightSize3;
result_width = globalThis.heightSize3;
console.info('curve3 ***** globalThis heightSize3 is ' + globalThis.heightSize3);
} else {
console.error('control failed');
......@@ -165,7 +182,7 @@ export default function CurveJsunit() {
console.info('curve3 ***** result_height3 is ' + result_height);
console.info('curve3 ***** result_width3 is ' + result_width);
var finalRes;
if ((result_height == 98.68008494377136) && (result_width == 98.68008494377136)){
if ((Math.round(result_height) == 99) && (Math.round(result_width) == 99)) {
finalRes = true;
console.info('curve3 SurfaceChangedTest success');
} else {
......@@ -176,5 +193,5 @@ export default function CurveJsunit() {
done();
}, 3000)
});
})
})
}
// @ts-nocheck
/**
* 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.
*/
export default class Utils {
static rect_left;
static rect_top;
static rect_right;
static rect_bottom;
static rect_value;
static sleep(time) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve()
}, time)
}).then(() => {
console.info(`sleep ${time} over...`)
})
}
static getComponentRect(key) {
let strJson = getInspectorByKey(key);
let obj = JSON.parse(strJson);
console.info("[getInspectorByKey] current component obj is: " + JSON.stringify(obj));
let rectInfo = JSON.parse('[' + obj.$rect + ']')
console.info("[getInspectorByKey] rectInfo is: " + rectInfo);
this.rect_left = JSON.parse('[' + rectInfo[0] + ']')[0]
this.rect_top = JSON.parse('[' + rectInfo[0] + ']')[1]
this.rect_right = JSON.parse('[' + rectInfo[1] + ']')[0]
this.rect_bottom = JSON.parse('[' + rectInfo[1] + ']')[1]
return this.rect_value = {
"left": this.rect_left, "top": this.rect_top, "right": this.rect_right, "bottom": this.rect_bottom
}
}
static async swipe(downX, downY, upX, upY, steps) {
console.info('start to swipe')
this.drags(downX, downY, upX, upY, steps, false)
}
static async drag(downX, downY, upX, upY, steps) {
console.info('start to drag')
this.drags(downX, downY, upX, upY, steps, true)
}
static async drags(downX, downY, upX, upY, steps, drag) {
var xStep;
var yStep;
var swipeSteps;
var ret;
xStep = 0;
yStep = 0;
ret = false;
swipeSteps = steps;
if (swipeSteps == 0) {
swipeSteps = 1;
}
xStep = (upX - downX) / swipeSteps;
yStep = (upY - downY) / swipeSteps;
console.info('move step is: ' + 'xStep: ' + xStep + ' yStep: ' + yStep)
var downPonit: TouchObject = {
id: 1,
x: downX,
y: downY,
type: TouchType.Down,
}
console.info('down touch started: ' + JSON.stringify(downPonit))
sendTouchEvent(downPonit);
console.info('start to move')
if (drag) {
await this.sleep(500)
}
for (var i = 1;i <= swipeSteps; i++) {
var movePoint: TouchObject = {
id: 1,
x: downX + (xStep * i),
y: downY + (yStep * i),
type: TouchType.Move
}
console.info('move touch started: ' + JSON.stringify(movePoint))
ret = sendTouchEvent(movePoint)
if (ret == false) {
break;
}
await this.sleep(5)
}
console.info('start to up')
if (drag) {
await this.sleep(100)
}
var upPoint: TouchObject = {
id: 1,
x: upX,
y: upY,
type: TouchType.Up,
}
console.info('up touch started: ' + JSON.stringify(upPoint))
sendTouchEvent(upPoint)
await this.sleep(500)
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册