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 * @tc.name clearData_Callback_performance_test_001 34 * @tc.desc clearData interface Callback performance test 35 * @tc.type PERF 36 * @tc.require I5YP4X 37 */ 38 it('clearData_Callback_performance_test_001', 0, async function (done) { 39 let systemPasteboard = pasteboard.getSystemPasteboard(); 40 let startTime = new Date().getTime(); 41 clearDataCallbackPerfTest(0); 42 43 function clearDataCallbackPerfTest(index) { 44 systemPasteboard.clearData(() => { 45 if (index < BASE_CONUT) { 46 clearDataCallbackPerfTest(index + 1); 47 } else { 48 computeAverageTime(startTime, BASE_CONUT, 'clearData_Callback_performance_test_001 averageTime:'); 49 done(); 50 } 51 }); 52 } 53 }); 54 55 /** 56 * @tc.name clear_Callback_performance_test_001 57 * @tc.desc clear interface Callback performance test 58 * @tc.type PERF 59 * @tc.require I5YP4X 60 */ 61 it('clear_Callback_performance_test_001', 0, async function (done) { 62 let systemPasteboard = pasteboard.getSystemPasteboard(); 63 let startTime = new Date().getTime(); 64 clearCallbackPerfTest(0); 65 66 function clearCallbackPerfTest(index) { 67 systemPasteboard.clear(() => { 68 if (index < BASE_CONUT) { 69 clearCallbackPerfTest(index + 1); 70 } else { 71 computeAverageTime(startTime, BASE_CONUT, 'clear_Callback_performance_test_001 averageTime:'); 72 done(); 73 } 74 }); 75 } 76 }); 77 78 /** 79 * @tc.name setData_Callback_performance_test_001 80 * @tc.desc setData interface Callback performance test 81 * @tc.type PERF 82 * @tc.require I5YP4X 83 */ 84 it('setData_Callback_performance_test_001', 0, async function (done) { 85 let systemPasteboard = pasteboard.getSystemPasteboard(); 86 let pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_HTML, htmlText); 87 let startTime = new Date().getTime(); 88 setDataCallbackPerfTest(0); 89 90 function setDataCallbackPerfTest(index) { 91 systemPasteboard.setData(pasteData, () => { 92 if (index < BASE_CONUT) { 93 setDataCallbackPerfTest(index + 1); 94 } else { 95 computeAverageTime(startTime, BASE_CONUT, 'setData_Callback_performance_test_001 averageTime:'); 96 done(); 97 } 98 }); 99 } 100 }); 101 102 /** 103 * @tc.name setPasteData_Callback_performance_test_001 104 * @tc.desc setPasteData interface Callback performance test 105 * @tc.type PERF 106 * @tc.require I5YP4X 107 */ 108 it('setPasteData_Callback_performance_test_001', 0, async function (done) { 109 let systemPasteboard = pasteboard.getSystemPasteboard(); 110 let pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_HTML, htmlText); 111 let startTime = new Date().getTime(); 112 setPasteDataCallbackPerfTest(0); 113 114 function setPasteDataCallbackPerfTest(index) { 115 systemPasteboard.setPasteData(pasteData, () => { 116 if (index < BASE_CONUT) { 117 setPasteDataCallbackPerfTest(index + 1); 118 } else { 119 computeAverageTime(startTime, BASE_CONUT, 'setPasteData_Callback_performance_test_001 averageTime:'); 120 done(); 121 } 122 }); 123 } 124 }); 125 126 /** 127 * @tc.name hasData_Callback_performance_test_001 128 * @tc.desc hasData interface Callback performance test 129 * @tc.type PERF 130 * @tc.require I5YP4X 131 */ 132 it('hasData_Callback_performance_test_001', 0, async function (done) { 133 let systemPasteboard = pasteboard.getSystemPasteboard(); 134 let startTime = new Date().getTime(); 135 hasDataCallbackPerfTest(0); 136 137 function hasDataCallbackPerfTest(index) { 138 systemPasteboard.hasData(() => { 139 if (index < BASE_CONUT) { 140 hasDataCallbackPerfTest(index + 1); 141 } else { 142 computeAverageTime(startTime, BASE_CONUT, 'hasData_Callback_performance_test_001 averageTime:'); 143 done(); 144 } 145 }); 146 } 147 }); 148 149 /** 150 * @tc.name hasPasteData_Callback_performance_test_001 151 * @tc.desc hasPasteData interface Callback performance test 152 * @tc.type PERF 153 * @tc.require I5YP4X 154 */ 155 it('hasPasteData_Callback_performance_test_001', 0, async function (done) { 156 let systemPasteboard = pasteboard.getSystemPasteboard(); 157 let startTime = new Date().getTime(); 158 hasPasteDataCallbackPerfTest(0); 159 160 function hasPasteDataCallbackPerfTest(index) { 161 systemPasteboard.hasPasteData(() => { 162 if (index < BASE_CONUT) { 163 hasPasteDataCallbackPerfTest(index + 1); 164 } else { 165 computeAverageTime(startTime, BASE_CONUT, 'hasPasteData_Callback_performance_test_001 averageTime:'); 166 done(); 167 } 168 }); 169 } 170 }); 171 172 /** 173 * @tc.name getData_Callback_performance_test_001 174 * @tc.desc getData interface Callback performance test 175 * @tc.type PERF 176 * @tc.require I5YP4X 177 */ 178 it('getData_Callback_performance_test_001', 0, async function (done) { 179 let systemPasteboard = pasteboard.getSystemPasteboard(); 180 let pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_HTML, htmlText); 181 await systemPasteboard.clearData(); 182 await systemPasteboard.setData(pasteData); 183 let startTime = new Date().getTime(); 184 getDataCallbackPerfTest(0); 185 186 function getDataCallbackPerfTest(index) { 187 systemPasteboard.getPasteData(() => { 188 if (index < BASE_CONUT) { 189 getDataCallbackPerfTest(index + 1); 190 } else { 191 computeAverageTime(startTime, BASE_CONUT, 'getData_Callback_performance_test_001 averageTime:'); 192 done(); 193 } 194 }); 195 } 196 }); 197 198 /** 199 * @tc.name getPasteData_Callback_performance_test_001 200 * @tc.desc getPasteData interface Callback performance test 201 * @tc.type PERF 202 * @tc.require I5YP4X 203 */ 204 it('getPasteData_Callback_performance_test_001', 0, async function (done) { 205 let systemPasteboard = pasteboard.getSystemPasteboard(); 206 let pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_HTML, htmlText); 207 await systemPasteboard.clearData(); 208 await systemPasteboard.setData(pasteData); 209 let startTime = new Date().getTime(); 210 getPasteDataCallbackPerfTest(0); 211 212 function getPasteDataCallbackPerfTest(index) { 213 systemPasteboard.getPasteData(() => { 214 if (index < BASE_CONUT) { 215 getPasteDataCallbackPerfTest(index + 1); 216 } else { 217 computeAverageTime(startTime, BASE_CONUT, 'getPasteData_Callback_performance_test_001 averageTime:'); 218 done(); 219 } 220 }); 221 } 222 }); 223 224 /** 225 * @tc.name convertToText_Callback_performance_test_001 226 * @tc.desc convertToText interface Callback performance test 227 * @tc.type PERF 228 * @tc.require I5YP4X 229 */ 230 it('convertToText_Callback_performance_test_001', 0, async function (done) { 231 let pasteDataRecord = pasteboard.createRecord(pasteboard.MIMETYPE_TEXT_HTML, htmlText); 232 let startTime = new Date().getTime(); 233 convertToTextCallbackPerfTest(0); 234 235 function convertToTextCallbackPerfTest(index) { 236 pasteDataRecord.convertToText(() => { 237 if (index < BASE_CONUT) { 238 convertToTextCallbackPerfTest(index + 1); 239 } else { 240 computeAverageTime(startTime, BASE_CONUT, 'convertToText_Callback_performance_test_001 averageTime:'); 241 done(); 242 } 243 }); 244 } 245 }); 246 247 /** 248 * @tc.name convertToTextV9_Callback_performance_test_001 249 * @tc.desc convertToTextV9 interface Callback performance test 250 * @tc.type PERF 251 * @tc.require I5YP4X 252 */ 253 it('convertToTextV9_Callback_performance_test_001', 0, async function (done) { 254 let pasteDataRecord = pasteboard.createRecord(pasteboard.MIMETYPE_TEXT_HTML, htmlText); 255 let startTime = new Date().getTime(); 256 convertToTextV9CallbackPerfTest(0); 257 258 function convertToTextV9CallbackPerfTest(index) { 259 pasteDataRecord.convertToTextV9(() => { 260 if (index < BASE_CONUT) { 261 convertToTextV9CallbackPerfTest(index + 1); 262 } else { 263 computeAverageTime(startTime, BASE_CONUT, 'convertToTextV9_Callback_performance_test_001 averageTime:'); 264 done(); 265 } 266 }); 267 } 268 }); 269 270 function computeAverageTime(startTime, baseCount, message) { 271 let endTime = new Date().getTime(); 272 let averageTime = ((endTime - startTime) * 1000) / baseCount; 273 console.info(message + averageTime); 274 } 275}); 276