1/* 2 * Copyright (C) 2022-2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the 'License'); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an 'AS IS' BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15// @ts-nocheck 16import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' 17import pasteboard from '@ohos.pasteboard' 18import image from '@ohos.multimedia.image' 19 20describe('PasteBoardPerfJSTest', function () { 21 beforeAll(async function () { 22 console.info('beforeAll'); 23 }) 24 25 afterAll(async function () { 26 console.info('afterAll'); 27 }) 28 29 const BASE_CONUT = 100; 30 const htmlText = '<html><head></head><body>Hello!</body></html>'; 31 32 33 /** 34 * @tc.name clearData_Promise_performance_test_001 35 * @tc.desc clearData interface promise performance test 36 * @tc.type PERF 37 * @tc.require I5YP4X 38 */ 39 it('clearData_Promise_performance_test_001', 0, async function (done) { 40 let systemPasteboard = pasteboard.getSystemPasteboard(); 41 let startTime = new Date().getTime(); 42 clearDataPromisePerfTest(0); 43 44 function clearDataPromisePerfTest(index) { 45 systemPasteboard.clearData().then(() => { 46 if (index < BASE_CONUT) { 47 clearDataPromisePerfTest(index + 1); 48 } else { 49 computeAverageTime(startTime, BASE_CONUT, "clearData_Promise_performance_test_001 averageTime:"); 50 done(); 51 } 52 }); 53 } 54 }) 55 56 /** 57 * @tc.name clear_Promise_performance_test_001 58 * @tc.desc clear interface promise performance test 59 * @tc.type PERF 60 * @tc.require I5YP4X 61 */ 62 it('clear_Promise_performance_test_001', 0, async function (done) { 63 let systemPasteboard = pasteboard.getSystemPasteboard(); 64 let startTime = new Date().getTime(); 65 clearPromisePerfTest(0); 66 67 function clearPromisePerfTest(index) { 68 systemPasteboard.clearData().then(() => { 69 if (index < BASE_CONUT) { 70 clearPromisePerfTest(index + 1); 71 } else { 72 computeAverageTime(startTime, BASE_CONUT, "clear_Promise_performance_test_001 averageTime:"); 73 done(); 74 } 75 }); 76 } 77 }) 78 79 /** 80 * @tc.name setData_Promise_performance_test_001 81 * @tc.desc setData interface promise performance test 82 * @tc.type PERF 83 * @tc.require I5YP4X 84 */ 85 it('setData_Promise_performance_test_001', 0, async function (done) { 86 let systemPasteboard = pasteboard.getSystemPasteboard(); 87 let pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_HTML, htmlText); 88 let startTime = new Date().getTime(); 89 setDataPromisePerfTest(0); 90 91 function setDataPromisePerfTest(index) { 92 systemPasteboard.setData(pasteData).then(() => { 93 if (index < BASE_CONUT) { 94 setDataPromisePerfTest(index + 1); 95 } else { 96 computeAverageTime(startTime, BASE_CONUT, "setData_Promise_performance_test_001 averageTime:"); 97 done(); 98 } 99 }); 100 } 101 }) 102 103 /** 104 * @tc.name setPasteData_Promise_performance_test_001 105 * @tc.desc setPasteData interface promise performance test 106 * @tc.type PERF 107 * @tc.require I5YP4X 108 */ 109 it('setPasteData_Promise_performance_test_001', 0, async function (done) { 110 let systemPasteboard = pasteboard.getSystemPasteboard(); 111 let pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_HTML, htmlText); 112 let startTime = new Date().getTime(); 113 setPasteDataPromisePerfTest(0); 114 115 function setPasteDataPromisePerfTest(index) { 116 systemPasteboard.setPasteData(pasteData).then(() => { 117 if (index < BASE_CONUT) { 118 setPasteDataPromisePerfTest(index + 1); 119 } else { 120 computeAverageTime(startTime, BASE_CONUT, "setPasteData_Promise_performance_test_001 averageTime:"); 121 done(); 122 } 123 }); 124 } 125 }) 126 127 /** 128 * @tc.name hasData_Promise_performance_test_001 129 * @tc.desc hasData interface promise performance test 130 * @tc.type PERF 131 * @tc.require I5YP4X 132 */ 133 it('hasData_Promise_performance_test_001', 0, async function (done) { 134 let systemPasteboard = pasteboard.getSystemPasteboard(); 135 let startTime = new Date().getTime(); 136 hasDataPromisePerfTest(0); 137 138 function hasDataPromisePerfTest(index) { 139 systemPasteboard.hasData().then(() => { 140 if (index < BASE_CONUT) { 141 hasDataPromisePerfTest(index + 1); 142 } else { 143 computeAverageTime(startTime, BASE_CONUT, "hasData_Promise_performance_test_001 averageTime:"); 144 done(); 145 } 146 }); 147 } 148 }) 149 150 /** 151 * @tc.name hasPasteData_Promise_performance_test_001 152 * @tc.desc hasPasteData interface promise performance test 153 * @tc.type PERF 154 * @tc.require I5YP4X 155 */ 156 it('hasPasteData_Promise_performance_test_001', 0, async function (done) { 157 let systemPasteboard = pasteboard.getSystemPasteboard(); 158 let startTime = new Date().getTime(); 159 hasPasteDataPromisePerfTest(0); 160 161 function hasPasteDataPromisePerfTest(index) { 162 systemPasteboard.hasPasteData().then(() => { 163 if (index < BASE_CONUT) { 164 hasPasteDataPromisePerfTest(index + 1); 165 } else { 166 computeAverageTime(startTime, BASE_CONUT, "hasPasteData_Promise_performance_test_001 averageTime:"); 167 done(); 168 } 169 }); 170 } 171 }) 172 173 /** 174 * @tc.name getData_Promise_performance_test_001 175 * @tc.desc getData interface promise performance test 176 * @tc.type PERF 177 * @tc.require I5YP4X 178 */ 179 it('getData_Promise_performance_test_001', 0, async function (done) { 180 let systemPasteboard = pasteboard.getSystemPasteboard(); 181 let pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_HTML, htmlText); 182 await systemPasteboard.clearData(); 183 await systemPasteboard.setData(pasteData); 184 let startTime = new Date().getTime(); 185 getDataPromisePerfTest(0); 186 187 function getDataPromisePerfTest(index) { 188 systemPasteboard.getData().then(() => { 189 if (index < BASE_CONUT) { 190 getDataPromisePerfTest(index + 1); 191 } else { 192 computeAverageTime(startTime, BASE_CONUT, "getData_Promise_performance_test_001 averageTime:"); 193 done(); 194 } 195 }); 196 } 197 }) 198 199 /** 200 * @tc.name getPasteData_Promise_performance_test_001 201 * @tc.desc getPasteData interface promise performance test 202 * @tc.type PERF 203 * @tc.require I5YP4X 204 */ 205 it('getPasteData_Promise_performance_test_001', 0, async function (done) { 206 let systemPasteboard = pasteboard.getSystemPasteboard(); 207 let pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_HTML, htmlText); 208 await systemPasteboard.clearData(); 209 await systemPasteboard.setData(pasteData); 210 let startTime = new Date().getTime(); 211 getPasteDataPromisePerfTest(0); 212 213 function getPasteDataPromisePerfTest(index) { 214 systemPasteboard.getData().then(() => { 215 if (index < BASE_CONUT) { 216 getPasteDataPromisePerfTest(index + 1); 217 } else { 218 computeAverageTime(startTime, BASE_CONUT, "getPasteData_Promise_performance_test_001 averageTime:"); 219 done(); 220 } 221 }); 222 } 223 }) 224 225 /** 226 * @tc.name convertToText_Promise_performance_test_001 227 * @tc.desc convertToText interface promise performance test 228 * @tc.type PERF 229 * @tc.require I5YP4X 230 */ 231 it('convertToText_Promise_performance_test_001', 0, async function (done) { 232 let pasteDataRecord = pasteboard.createRecord(pasteboard.MIMETYPE_TEXT_HTML, htmlText); 233 let startTime = new Date().getTime(); 234 convertToTextPromisePerfTest(0); 235 236 function convertToTextPromisePerfTest(index) { 237 pasteDataRecord.convertToText().then(() => { 238 if (index < BASE_CONUT) { 239 convertToTextPromisePerfTest(index + 1); 240 } else { 241 computeAverageTime(startTime, BASE_CONUT, "convertToText_Promise_performance_test_001 averageTime:"); 242 done(); 243 } 244 }); 245 } 246 }) 247 248 /** 249 * @tc.name convertToTextV9_Promise_performance_test_001 250 * @tc.desc convertToTextV9 interface promise performance test 251 * @tc.type PERF 252 * @tc.require I5YP4X 253 */ 254 it('convertToTextV9_Promise_performance_test_001', 0, async function (done) { 255 let pasteDataRecord = pasteboard.createRecord(pasteboard.MIMETYPE_TEXT_HTML, htmlText); 256 let startTime = new Date().getTime(); 257 convertToTextV9PromisePerfTest(0); 258 259 function convertToTextV9PromisePerfTest(index) { 260 pasteDataRecord.convertToTextV9().then(() => { 261 if (index < BASE_CONUT) { 262 convertToTextV9PromisePerfTest(index + 1); 263 } else { 264 computeAverageTime(startTime, BASE_CONUT, "convertToTextV9_Promise_performance_test_001 averageTime:"); 265 done(); 266 } 267 }); 268 } 269 }) 270 271 function computeAverageTime(startTime, baseCount, message) { 272 let endTime = new Date().getTime(); 273 let averageTime = ((endTime - startTime) * 1000) / baseCount; 274 console.info(message + averageTime); 275 } 276 277}); 278