• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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