From 8dd15356468e1a31f4b1351b68ce0aa8ce47cb25 Mon Sep 17 00:00:00 2001 From: tyBrave Date: Wed, 23 Oct 2024 16:24:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9B=BE=E7=89=87=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E5=9B=9E=E8=B0=83=E7=9A=84demo=E5=8F=8A=E5=85=B6xts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: tyBrave --- entry/src/main/ets/pages/Index.ets | 7 + .../ets/pages/TestImageKnifeCallbackPage.ets | 286 ++++++++++++++++++ .../pages/TestListImageKnifeCallbackPage.ets | 101 +++++++ .../main/resources/base/element/string.json | 52 ++++ .../resources/base/profile/main_pages.json | 4 +- .../main/resources/zh_CN/element/string.json | 52 ++++ entry/src/ohosTest/ets/test/List.test.ets | 2 + .../ets/test/loadCallBackData.test.ets | 117 +++++++ 8 files changed, 620 insertions(+), 1 deletion(-) create mode 100644 entry/src/main/ets/pages/TestImageKnifeCallbackPage.ets create mode 100644 entry/src/main/ets/pages/TestListImageKnifeCallbackPage.ets create mode 100644 entry/src/ohosTest/ets/test/loadCallBackData.test.ets diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index 45db76e..3ee4b9e 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -174,6 +174,13 @@ struct Index { uri: 'pages/TestLoadCancelListenerPage', }); }) + + Button($r('app.string.test_callback')).margin({ top: 10 }).onClick(() => { + router.push({ + uri: 'pages/TestImageKnifeCallbackPage', + + }); + }) } }.width('100%') .height('100%') diff --git a/entry/src/main/ets/pages/TestImageKnifeCallbackPage.ets b/entry/src/main/ets/pages/TestImageKnifeCallbackPage.ets new file mode 100644 index 0000000..d7b66f3 --- /dev/null +++ b/entry/src/main/ets/pages/TestImageKnifeCallbackPage.ets @@ -0,0 +1,286 @@ +/* + * Copyright (C) 2024 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 { ImageKnifeComponent, ImageKnifeOption } from '@ohos/imageknife'; +import { router } from '@kit.ArkUI'; + +@Entry +@ComponentV2 +struct TestImageKnifeCallbackPage { + @Local imageKnifeOption: ImageKnifeOption = new ImageKnifeOption(); + @Local currentWidth: number = 200 + @Local currentHeight: number = 200 + @Local startCallBackData: string = "" + @Local successBackData: string = "" + @Local failedBackData: string = "" + @Local cancelBackData: string = "" + @Local render_success: string = "" + @Local showChild: boolean = true; + + build() { + Scroll() { + Column() { + Text($r('app.string.start_callback', this.startCallBackData)) + Text($r('app.string.success_callback', this.successBackData)) + Text($r('app.string.failed_callback', this.failedBackData)) + Text($r('app.string.cancel_callback', this.cancelBackData)) + Text($r('app.string.render_success', this.render_success)) + + Row() { + Button($r('app.string.Network_images')) + .fontSize(13) + .onClick(() => { + this.destroy(); + this.imageKnifeOption = new ImageKnifeOption({ + loadSrc: "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/10/v3/qaEzwkU0QeKb1yehnP2Xig/q7fxAlgMQKup-HUBayRLGQ.jpg", + objectFit: ImageFit.Contain, + onLoadListener: { + onLoadStart: (data) => { + this.startCallBackData = JSON.stringify(data); + }, + onLoadFailed: (res, err) => { + this.failedBackData = res + ";" + JSON.stringify(err); + }, + onLoadSuccess: (data, imageData) => { + this.successBackData = JSON.stringify(imageData); + }, + onLoadCancel: (res, cel) => { + this.cancelBackData = res + ";" + JSON.stringify(cel); + } + }, + border: { radius: 50 }, + onComplete: (event) => { + if (event && event.loadingStatus == 0) { + this.render_success = JSON.stringify(Date.now()) + } + } + }) + }) + + Button($r('app.string.gif')) + .fontSize(13) + .onClick(() => { + this.destroy(); + this.imageKnifeOption = new ImageKnifeOption({ + loadSrc: 'https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658', + objectFit: ImageFit.Contain, + onLoadListener: { + onLoadStart: (data) => { + this.startCallBackData = JSON.stringify(data); + }, + onLoadFailed: (res, err) => { + this.failedBackData = res + ";" + JSON.stringify(err); + }, + onLoadSuccess: (data, imageData) => { + let suc = imageData; + suc.source = "" + this.successBackData = JSON.stringify(suc); + }, + onLoadCancel: (res, cel) => { + this.cancelBackData = res + ";" + JSON.stringify(cel); + } + }, + border: { radius: 50 }, + onComplete: (event) => { + console.log("sss--->gif onComplete:" + JSON.stringify(event)) + if (event && event.loadingStatus == 0) { + this.render_success = JSON.stringify(Date.now()) + } + } + }) + }) + Button($r('app.string.local_pic')) + .fontSize(13) + .onClick(() => { + this.destroy(); + this.imageKnifeOption = new ImageKnifeOption({ + loadSrc: $r('app.media.pngSample'), + objectFit: ImageFit.Contain, + onLoadListener: { + onLoadStart: (data) => { + this.startCallBackData = JSON.stringify(data); + }, + onLoadFailed: (res, err) => { + this.failedBackData = res + ";" + JSON.stringify(err); + }, + onLoadSuccess: (data, imageData) => { + this.successBackData = JSON.stringify(imageData); + }, + onLoadCancel: (res, cel) => { + this.cancelBackData = res + ";" + JSON.stringify(cel); + } + }, + border: { radius: 50 }, + onComplete: (event) => { + if (event && event.loadingStatus == 0) { + this.render_success = JSON.stringify(Date.now()) + } + } + }) + }) + } + + Row() { + Button($r('app.string.net_load_failed')) + .fontSize(13) + .onClick(() => { + this.destroy(); + this.imageKnifeOption = new ImageKnifeOption({ + loadSrc: "https://img-blog.csdn.net/20140514114039140", + objectFit: ImageFit.Contain, + onLoadListener: { + onLoadStart: (data) => { + this.startCallBackData = JSON.stringify(data); + }, + onLoadFailed: (res, err) => { + this.failedBackData = res + ";" + JSON.stringify(err); + }, + onLoadSuccess: (data, imageData) => { + this.successBackData = JSON.stringify(imageData); + }, + onLoadCancel: (res, cel) => { + this.cancelBackData = res + ";" + JSON.stringify(cel); + } + }, + border: { radius: 50 }, + onComplete: (event) => { + if (event && event.loadingStatus == 0) { + this.render_success = JSON.stringify(Date.now()) + } + } + }) + }) + + Button($r('app.string.local_load_failed')) + .fontSize(13) + .onClick(() => { + this.destroy(); + this.imageKnifeOption = new ImageKnifeOption({ + loadSrc: 'abd', + objectFit: ImageFit.Contain, + onLoadListener: { + onLoadStart: (data) => { + this.startCallBackData = JSON.stringify(data); + }, + onLoadFailed: (res, err) => { + this.failedBackData = res + ";" + JSON.stringify(err); + }, + onLoadSuccess: (data, imageData) => { + let suc = imageData; + suc.source = "" + this.successBackData = JSON.stringify(suc); + }, + onLoadCancel: (res, cel) => { + this.cancelBackData = res + ";" + JSON.stringify(cel); + } + }, + border: { radius: 50 }, + onComplete: (event) => { + if (event && event.loadingStatus == 0) { + this.render_success = JSON.stringify(Date.now()) + } + } + }) + }) + Button($r('app.string.share_load_failed')) + .fontSize(13) + .onClick(() => { + this.destroy(); + this.imageKnifeOption = new ImageKnifeOption({ + loadSrc: 'datashare://ssas', + objectFit: ImageFit.Contain, + onLoadListener: { + onLoadStart: (data) => { + this.startCallBackData = JSON.stringify(data); + }, + onLoadFailed: (res, err) => { + this.failedBackData = res + ";" + JSON.stringify(err); + }, + onLoadSuccess: (data, imageData) => { + this.successBackData = JSON.stringify(imageData); + }, + onLoadCancel: (res, cel) => { + this.cancelBackData = res + ";" + JSON.stringify(cel); + } + }, + border: { radius: 50 }, + onComplete: (event) => { + if (event && event.loadingStatus == 0) { + this.render_success = JSON.stringify(Date.now()) + } + } + }) + }) + } + + Button($r('app.string.test_cancel_callback_btn')) + .fontSize(13) + .onClick(() => { + this.destroy(); + this.imageKnifeOption = new ImageKnifeOption({ + loadSrc: "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/bf/v3/lSjrRwFcS-ez6jp1ALSQFg/0n7R7XinSPyrYLqDu_1dfw.jpg", + objectFit: ImageFit.Contain, + onLoadListener: { + onLoadStart: (data) => { + this.startCallBackData = JSON.stringify(data); + this.showChild = false; + }, + onLoadFailed: (res, err) => { + this.failedBackData = res + ";" + JSON.stringify(err); + }, + onLoadSuccess: (data, imageData) => { + this.successBackData = JSON.stringify(imageData); + }, + onLoadCancel: (res, cel) => { + this.cancelBackData = res + ";" + JSON.stringify(cel); + } + }, + border: { radius: 50 }, + onComplete: (event) => { + if (event && event.loadingStatus == 0) { + this.render_success = JSON.stringify(Date.now()) + } + } + }) + }) + + Button($r('app.string.list_pic')) + .fontSize(13) + .onClick(() => { + router.push({ + url: 'pages/TestListImageKnifeCallbackPage', + }); + }) + if (this.showChild) { + ImageKnifeComponent( + { imageKnifeOption: this.imageKnifeOption }) + .height(this.currentHeight) + .width(this.currentWidth) + .margin({ top: 20, bottom: 20 }) + + } + } + .width('100%') + } + } + + destroy() { + this.startCallBackData = ""; + this.successBackData = ""; + this.failedBackData = ""; + this.cancelBackData = ""; + this.render_success = ""; + } +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/TestListImageKnifeCallbackPage.ets b/entry/src/main/ets/pages/TestListImageKnifeCallbackPage.ets new file mode 100644 index 0000000..a6d2594 --- /dev/null +++ b/entry/src/main/ets/pages/TestListImageKnifeCallbackPage.ets @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2024 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 { ImageKnifeComponent, ImageKnifeOption } from '@ohos/imageknife'; + +class ArrayElement { + src: string = ""; + w: number = 0; + h: number = 0; +} + +@Entry +@Component +struct TestListImageKnifeCallbackPage { + private wid: number = 200; + private hig: number = 200; + private dataArray: ESObject[] = [ + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/56/v3/8MdhfSsCSMKj4sA6okUWrg/5uBx56tLTUO3RYQl-E5JiQ.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/56/v3/8MdhfSsCSMKj4sA6okUWrg/5uBx56tLTUO3RYQl-E5JiQ.jpg", + "https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/78/v3/qQJpAtRGQe2e_VhbGHDgIw/b3zlit99S6GybD3XdNwqJw.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/55/v3/5DZ2LLqYSsK85-shqgLveQ/7ZXcyCWNTvOzQP5FFLBGkg.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/3e/v3/LqRoLI-PRSu9Nqa8KdJ-pQ/dSqskBpSR9eraAMn7NBdqA.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/25/v3/jgB2ekkTRX-3yTYZalnANQ/xff_x9cbSPqb7fbNwgJa7A.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/fb/v3/alXwXLHKSyCAIWt_ydgD2g/BCCuu25TREOitQxM7eYOEw.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/63/v3/qbe6NZkCQyGcITvdWoZBgg/Y-5U1z3GT_yaK8CBD3jkwg.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/16/v3/fm2tO4TsRH6mv_D_nSSd5w/FscLpLwQQ-KuV7oaprFK2Q.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/89/v3/UAUvtPHqRD-GWWANsEC57Q/zcRJCQebQ322Aby4jzmwmQ.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/30/v3/tUUzzx73R4yp8G--lMhuWQ/EBbcu_dLTT-Jj68XAh6mtA.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/76/v3/EyF6z4FISpCHhae38eEexw/OtyAiu-zSSevNQYvUdtVmA.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/37/v3/12rH1yiEQmK9wlOOcy5avQ/RzBXiEBRRqOC7LRkwNj6VA.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/9a/v3/TpRN4AIzRoyUXIqWdKoE0g/ShOnD_tfS46HDbpSWhbCkQ.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/03/v3/H3X17s8eTdS2w56JgbB5jQ/a45sT-j8Sbe8sSQXTzeYvQ.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/10/v3/qaEzwkU0QeKb1yehnP2Xig/q7fxAlgMQKup-HUBayRLGQ.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/96/v3/rMJJoAflTDSWa1z2pHs2wg/8dOqD0GlQBOCL5AvQok9FQ.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/ed/v3/KMO4D6D2QGuVOCLX4AhOFA/ef51xAaLQuK7BsnuD9abog.jpg", + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/d9/v3/FSZH0aTdSqWxeAaxoPvi0g/RqxPxUCXQFiTMBfKTF9kkw.jpg", + "https://hbimg.huabanimg.com/cc6af25f8d782d3cf3122bef4e61571378271145735e9-vEVggB", + 'https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/bf/v3/lSjrRwFcS-ez6jp1ALSQFg/0n7R7XinSPyrYLqDu_1dfw.jpg', + 'https://img-blog.csdn.net/20140514114029140', + 'https://hbimg.huabanimg.com/95a6d37a39aa0b70d48fa18dc7df8309e2e0e8e85571e-x4hhks_fw658/format/webp', + $r('app.media.pngSample'), + $r('app.media.rabbit') + ] + private data: Array = []; + + aboutToAppear(): void { + for (let i = 0; i < this.dataArray.length; i++) { + let element: ArrayElement = { + src: this.dataArray[i], + w: this.wid -(i*5), + h: this.hig -(i*5) + } + this.data.push(element); + } + } + + build() { + List({ space: 3 }) { + ForEach(this.data, (item: ArrayElement) => { + ListItem() { + ImageKnifeComponent({ + imageKnifeOption: new ImageKnifeOption( + { + loadSrc: item.src, + objectFit: ImageFit.Contain, + onLoadListener: { + onLoadStart: (data) => { + console.log("listCache start:" + JSON.stringify(data)) + }, + onLoadFailed: (res, err) => { + console.log("listCache onLoadFailed:res:" + res + ";" + JSON.stringify(err)) + }, + onLoadSuccess: (data, imageData) => { + console.log("listCache onLoadSuccess:" + JSON.stringify(imageData)) + }, + onLoadCancel: (res, cel) => { + console.log("listCache onLoadCancel:res:" + res + ";" + JSON.stringify(cel)) + } + }, + border: { radius: 50 }, + } + ) + }).height(item.w).width(item.h) + }.width('100%') + }, (item: ArrayElement,index) => (item.src+index)) + }.width('100%').height('100%') + } +} \ No newline at end of file diff --git a/entry/src/main/resources/base/element/string.json b/entry/src/main/resources/base/element/string.json index fc1da84..73528e5 100644 --- a/entry/src/main/resources/base/element/string.json +++ b/entry/src/main/resources/base/element/string.json @@ -488,6 +488,10 @@ "name": "test_cancel_callback_btn", "value": "test callback of cancel" }, + { + "name": "test_callback", + "value": "test callback data of load pic" + }, { "name": "memory", "value": "Memory" @@ -495,6 +499,54 @@ { "name": "disk", "value": "Disk" + }, + { + "name": "start_callback", + "value": "startCallBack:%s" + }, + { + "name": "success_callback", + "value": "successCallBack:%s" + }, + { + "name": "failed_callback", + "value": "failedCallBack:%s" + }, + { + "name": "cancel_callback", + "value": "cancelCallBack:%s" + }, + { + "name": "render_success", + "value": "render success time point:%s" + }, + { + "name": "gif", + "value": "gif" + }, + { + "name": "local_pic", + "value": "local picture" + }, + { + "name": "share_pic", + "value": "share picture" + }, + { + "name": "net_load_failed", + "value": "netWork load failed" + }, + { + "name": "local_load_failed", + "value": "local load failed" + }, + { + "name": "share_load_failed", + "value": "shared load failed" + }, + { + "name": "list_pic", + "value": "load picture list" } ] } \ No newline at end of file diff --git a/entry/src/main/resources/base/profile/main_pages.json b/entry/src/main/resources/base/profile/main_pages.json index 35d7d51..c426d47 100644 --- a/entry/src/main/resources/base/profile/main_pages.json +++ b/entry/src/main/resources/base/profile/main_pages.json @@ -25,6 +25,8 @@ "pages/TestTaskResourcePage", "pages/TestCacheDataPage", "pages/TestChangeColorPage", - "pages/TestLoadCancelListenerPage" + "pages/TestLoadCancelListenerPage", + "pages/TestImageKnifeCallbackPage", + "pages/TestListImageKnifeCallbackPage" ] } \ No newline at end of file diff --git a/entry/src/main/resources/zh_CN/element/string.json b/entry/src/main/resources/zh_CN/element/string.json index f727a27..6f287d6 100644 --- a/entry/src/main/resources/zh_CN/element/string.json +++ b/entry/src/main/resources/zh_CN/element/string.json @@ -484,6 +484,10 @@ "name": "test_cancel_callback_btn", "value": "测试加载取消回调接口" }, + { + "name": "test_callback", + "value": "测试图片加载回调数据" + }, { "name": "memory", "value": "内存" @@ -491,6 +495,54 @@ { "name": "disk", "value": "磁盘" + }, + { + "name": "start_callback", + "value": "开始回调:%s" + }, + { + "name": "success_callback", + "value": "成功回调:%s" + }, + { + "name": "failed_callback", + "value": "失败回调:%s" + }, + { + "name": "cancel_callback", + "value": "取消回调:%s" + }, + { + "name": "render_success", + "value": "渲染成功时间点:%s" + }, + { + "name": "gif", + "value": "gif" + }, + { + "name": "local_pic", + "value": "本地图片" + }, + { + "name": "share_pic", + "value": "共享图片" + }, + { + "name": "net_load_failed", + "value": "网络加载失败" + }, + { + "name": "local_load_failed", + "value": "本地加载失败" + }, + { + "name": "share_load_failed", + "value": "共享图片加载失败" + }, + { + "name": "list_pic", + "value": "加载图片列表" } ] } \ No newline at end of file diff --git a/entry/src/ohosTest/ets/test/List.test.ets b/entry/src/ohosTest/ets/test/List.test.ets index 1b17e5f..6c389ee 100644 --- a/entry/src/ohosTest/ets/test/List.test.ets +++ b/entry/src/ohosTest/ets/test/List.test.ets @@ -19,6 +19,7 @@ import MemoryLruCacheTest from './MemoryLruCache.test'; import ImageKnifeTest from './ImageKnife.test'; import Transform from './transform.test'; import imageFormatAndSize from './imageFormatAndSize.test' +import loadCallBackData from './loadCallBackData.test' export default function testsuite() { MemoryLruCacheTest(); @@ -28,4 +29,5 @@ export default function testsuite() { ImageKnifeTest(); Transform(); imageFormatAndSize(); + loadCallBackData(); } \ No newline at end of file diff --git a/entry/src/ohosTest/ets/test/loadCallBackData.test.ets b/entry/src/ohosTest/ets/test/loadCallBackData.test.ets new file mode 100644 index 0000000..a3af0ce --- /dev/null +++ b/entry/src/ohosTest/ets/test/loadCallBackData.test.ets @@ -0,0 +1,117 @@ +/* + * Copyright (C) 2024 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 { + ImageKnifeOption, + ImageKnife, + ImageKnifeRequest, + ImageKnifeRequestSource, + CacheStrategy +} from "@ohos/imageknife" +import { common } from '@kit.AbilityKit'; + +export default function loadCallBackData() { + describe('loadCallBackData', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }); + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }); + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }); + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }); + it('startAndSuccess-CallBack', 0, async () => { + let startCallBack: ESObject = undefined; + let successCallBack: ESObject = undefined; + let url: string = + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/63/v3/qbe6NZkCQyGcITvdWoZBgg/Y-5U1z3GT_yaK8CBD3jkwg.jpg" + let imageKnifeOption: ImageKnifeOption = new ImageKnifeOption({ + loadSrc: url, + }) + await new Promise((resolve, reject) => { + imageKnifeOption.onLoadListener = { + onLoadStart: (data) => { + startCallBack = data; + }, + onLoadSuccess: (data, imageknifeData) => { + successCallBack = imageknifeData; + resolve("") + }, + onLoadFailed(err) { + reject(err) + } + } + let request = new ImageKnifeRequest( + imageKnifeOption, + imageKnifeOption.context !== undefined ? imageKnifeOption.context : getContext() as common.UIAbilityContext, + 0, + 0, + 0, + { + showPixelMap(version: number, pixelMap: PixelMap | string) { + } + } + ) + ImageKnife.getInstance().execute(request); + }) + expect(startCallBack != undefined).assertTrue(); + expect(successCallBack != undefined).assertTrue(); + }); + it('failed-CallBack', 0, async () => { + let failedCallBack: ESObject = undefined; + let url: string = + "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/163/v3/qbe6NZkCQyGcITvdWoZBgg/Y-5U1z3GT_yaK8CBD3jkwg.jpg" + let imageKnifeOption: ImageKnifeOption = new ImageKnifeOption({ + loadSrc: url, + }) + await new Promise((resolve, reject) => { + imageKnifeOption.onLoadListener = { + onLoadStart: (data) => { + }, + onLoadSuccess: (data, imageknifeData) => { + }, + onLoadFailed(res,err) { + failedCallBack = err; + resolve(res) + } + } + let request = new ImageKnifeRequest( + imageKnifeOption, + imageKnifeOption.context !== undefined ? imageKnifeOption.context : getContext() as common.UIAbilityContext, + 0, + 0, + 0, + { + showPixelMap(version: number, pixelMap: PixelMap | string) { + } + } + ) + ImageKnife.getInstance().execute(request); + }) + expect(failedCallBack != undefined).assertTrue(); + }); + }); +} \ No newline at end of file