• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2021-2022 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
16import dataShare from '@ohos.data.dataShare';
17import {afterAll, afterEach, beforeAll, beforeEach, describe, expect, it} from 'deccjsunit/index'
18
19const URI_CALLLOG = "datashare:///com.ohos.calllogability";
20const calllogUri = "datashare:///com.ohos.calllogability/calls/calllog";
21
22const URI_VOICEMAIL = "datashare:///com.ohos.voicemailability";
23const voicemailUri = "datashare:///com.ohos.voicemailability/calls/voicemail";
24
25const URI_CONTACTS = "datashare:///com.ohos.contactsdataability";
26const rawContactUri = "datashare:///com.ohos.contactsdataability/contacts/raw_contact";
27const contactDataUri = "datashare:///com.ohos.contactsdataability/contacts/contact_data";
28const deletedUri = "datashare:///com.ohos.contactsdataability/contacts/deleted_raw_contact";
29
30describe('PerformanceTest', function() {
31    console.log(' PerformanceTest is start');
32    function sleep(numberMillis)
33    {
34        var now = new Date();
35        var exitTime = now.getTime() + numberMillis;
36        while (true) {
37            now = new Date();
38            if (now.getTime() > exitTime)
39                return;
40        }
41    }
42
43    /**
44     * @tc.number  raw_contact_insert_stability_test_900
45     * @tc.name    Add 10000 pieces of data to the raw_contact table to see if they can be successfully inserted
46     * @tc.desc    Function test
47     */
48    it("raw_contact_insert_stability_test_900", 0, async function(done) {
49        let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS);
50        console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
51        var listAddBluk = [];
52        for (var i = 0; i < 1000; i++) {
53            var add = {"display_name" : "xiaoli" + i, "company" : "testCompany" + i, "position" : "testPosition" + i};
54            listAddBluk[i] = add;
55        }
56        try {
57            var batchInsertCode = await dataShareHelper.batchInsert(rawContactUri, listAddBluk);
58            var batchInsertCode = await dataShareHelper.batchInsert(rawContactUri, listAddBluk);
59            var batchInsertCode = await dataShareHelper.batchInsert(rawContactUri, listAddBluk);
60            var batchInsertCode = await dataShareHelper.batchInsert(rawContactUri, listAddBluk);
61            var batchInsertCode = await dataShareHelper.batchInsert(rawContactUri, listAddBluk);
62            var batchInsertCode = await dataShareHelper.batchInsert(rawContactUri, listAddBluk);
63            var batchInsertCode = await dataShareHelper.batchInsert(rawContactUri, listAddBluk);
64            var batchInsertCode = await dataShareHelper.batchInsert(rawContactUri, listAddBluk);
65            var batchInsertCode = await dataShareHelper.batchInsert(rawContactUri, listAddBluk);
66            var batchInsertCode = await dataShareHelper.batchInsert(rawContactUri, listAddBluk);
67            sleep(1000);
68            console.info("logMessage raw_contact_insert_stability_test_900: contactDataId1 = " + batchInsertCode);
69            expect(batchInsertCode == 0).assertTrue();
70            done();
71        } catch (error) {
72            console.info('logMessage raw_contact_insert_stability_test_900:  insert error = ' + error);
73            done();
74        }
75    });
76
77    /**
78     * @tc.number  raw_contact_update_stability_test_1000
79     * @tc.name    The raw_contact table updates the data whose ID is not equal to 0 to see whether they can be updated
80     * successfully
81     * @tc.desc    Function test
82     */
83    it("raw_contact_update_stability_test_1000", 0, async function(done) {
84        let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS);
85        console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
86        var updateValues = {"favorite" : 1};
87        let condition = new dataShare.DataSharePredicates();
88        condition.greaterThan("id", "0");
89        condition.and();
90        condition.equalTo("is_deleted", "0");
91        try {
92            var updateCode = await dataShareHelper.update(rawContactUri, updateValues, condition);
93            sleep(1000);
94            console.info("logMessage raw_contact_update_stability_test_1000: updateCode = " + updateCode);
95            expect(updateCode == 0).assertTrue();
96            done();
97        } catch (error) {
98            console.info("logMessage raw_contact_update_stability_test_1000: update error = " + error);
99            done();
100        }
101    });
102
103    /**
104     * @tc.number  raw_contact_query_stability_test_1100
105     * @tc.name    The raw_contact table queries 10000 pieces of data to see whether they can be queried successfully
106     * @tc.desc    Function test
107     */
108    it("raw_contact_query_stability_test_1100", 0, async function(done) {
109        var tag = "raw_contact_query_stability_test_1100";
110        let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS);
111        console.info(tag + ': start ! dataShareHelper = ' + dataShareHelper);
112        var resultColumns = ["id"];
113        let condition = new dataShare.DataSharePredicates();
114        condition.greaterThan("id", "0");
115        condition.and();
116        condition.equalTo("is_deleted", "0");
117        try {
118            var resultSet = await dataShareHelper.query(rawContactUri, resultColumns, condition);
119            sleep(1000);
120            console.info(tag + ' : logMessage : rowCount' + resultSet.rowCount);
121            expect(resultSet.rowCount == 10000).assertTrue();
122            resultSet.close();
123            done();
124        } catch (error) {
125            console.info(tag + " :logMessage : error = " + error);
126            done();
127        }
128    });
129
130    /**
131     * @tc.number  raw_contact_delete_stability_test_1200
132     * @tc.name    Delete 10000 pieces of data in raw_contact table to see if they can be deleted successfully
133     * @tc.desc    Function test
134     */
135    it("raw_contact_delete_stability_test_1200", 0, async function(done) {
136        let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS);
137        console.info('raw_contact_delete_stability_test_1200 : start ! dataShareHelper = ' + dataShareHelper);
138        let condition = new dataShare.DataSharePredicates();
139        condition.greaterThan("id", "0");
140        condition.and();
141        condition.equalTo("is_deleted", "0");
142        try {
143            var deleteCode = await dataShareHelper.delete(rawContactUri, condition);
144            sleep(1000);
145            console.info("logMessage raw_contact_delete_stability_test_1200: deleteCode = " + deleteCode);
146            expect(deleteCode == 0).assertTrue();
147            done();
148        } catch (error) {
149            console.info('logMessage raw_contact_delete_stability_test_1200: delete error = ' + error);
150            done();
151        }
152    });
153
154    /**
155     * @tc.number  contact_data_insert_stability_test_1300
156     * @tc.name    Add 10000 pieces of data to the contact_data table to see if they can be successfully inserted
157     * @tc.desc    Function test
158     */
159    it("contact_data_insert_stability_test_1300", 0, async function(done) {
160        let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS);
161        console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
162
163        var rawContactValues = {
164            "display_name" : "xiaoli",
165        };
166        try {
167            var rawContactId = await dataShareHelper.insert(rawContactUri, rawContactValues);
168            sleep(1000);
169            console.info("logMessage contact_data_insert_stability_test_1300: rawContactId = " + rawContactId);
170        } catch (error) {
171            console.info("logMessage contact_data_insert_stability_test_1300: raw_contact insert error = " + error);
172        }
173
174        let condition = new dataShare.DataSharePredicates();
175        condition.equalTo("id", rawContactId.toString());
176        var deleteCode = await dataShareHelper.delete(rawContactUri, condition);
177        sleep(1000);
178        console.info("logMessage contact_data_insert_stability_test_1300: deleteCode = " + deleteCode);
179
180        var listAddBluk = [];
181        for (var i = 0; i < 1000; i++) {
182            var add = {"raw_contact_id" : rawContactId, "detail_info" : "xxx" + i, "content_type" : "name"};
183            listAddBluk[i] = add;
184        }
185        try {
186            var batchInsertCode = await dataShareHelper.batchInsert(contactDataUri, listAddBluk);
187            var batchInsertCode = await dataShareHelper.batchInsert(contactDataUri, listAddBluk);
188            var batchInsertCode = await dataShareHelper.batchInsert(contactDataUri, listAddBluk);
189            var batchInsertCode = await dataShareHelper.batchInsert(contactDataUri, listAddBluk);
190            var batchInsertCode = await dataShareHelper.batchInsert(contactDataUri, listAddBluk);
191            var batchInsertCode = await dataShareHelper.batchInsert(contactDataUri, listAddBluk);
192            var batchInsertCode = await dataShareHelper.batchInsert(contactDataUri, listAddBluk);
193            var batchInsertCode = await dataShareHelper.batchInsert(contactDataUri, listAddBluk);
194            var batchInsertCode = await dataShareHelper.batchInsert(contactDataUri, listAddBluk);
195            var batchInsertCode = await dataShareHelper.batchInsert(contactDataUri, listAddBluk);
196            sleep(2000);
197            console.info("logMessage contact_data_insert_stability_test_1300: batchInsertCode = " + batchInsertCode);
198            expect(batchInsertCode == 0).assertTrue();
199            done();
200        } catch (error) {
201            console.info('logMessage contact_data_insert_stability_test_1300:  insert error = ' + error);
202            done();
203        }
204    });
205
206    /**
207     * @tc.number  contact_data_update_stability_test_1400
208     * @tc.name    The contact_data table updates the data whose ID is not equal to 0 to see whether they can be updated
209     * successfully
210     * @tc.desc    Function test
211     */
212    it("contact_data_update_stability_test_1400", 0, async function(done) {
213        let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS);
214        console.info('logMessage contact_data_update_stability_test_1400 dataShareHelper success! dataShareHelper = ' + dataShareHelper);
215        var updateValues = {"syn_1" : "test"};
216        let condition = new dataShare.DataSharePredicates();
217        condition.greaterThan("id", "0");
218        try {
219            var updateCode = await dataShareHelper.update(contactDataUri, updateValues, condition);
220            sleep(2000);
221            console.info("logMessage contact_data_update_stability_test_1400: updateCode = " + updateCode);
222            expect(updateCode == 0).assertTrue();
223            done();
224        } catch (error) {
225            console.info("logMessage contact_data_update_stability_test_1400: update error = " + error);
226            done();
227        }
228    });
229
230    /**
231     * @tc.number  contact_data_query_stability_test_1500
232     * @tc.name    The contact_data table queries 10000 pieces of data to see whether they can be queried successfully
233     * @tc.desc    Function test
234     */
235    it("contact_data_query_stability_test_1500", 0, async function(done) {
236        let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS);
237        console.info('contact_data_query_stability_test_1500 start ! dataShareHelper = ' + dataShareHelper);
238        var resultColumns = ["id"];
239        let condition = new dataShare.DataSharePredicates();
240        condition.greaterThan("id", "0");
241        try {
242            var resultSet = await dataShareHelper.query(contactDataUri, resultColumns, condition);
243            sleep(2000);
244            console.info(' contact_data_query_stability_test_1500 :  resultSet.rowCount = ' + resultSet.rowCount);
245            expect(resultSet.rowCount == 10000).assertEqual(true);
246            resultSet.close();
247            done();
248        } catch (error) {
249            console.info("logMessage contact_data_query_stability_test_1500: error = " + error);
250            done();
251        }
252    });
253
254    /**
255     * @tc.number  contact_data_delete_stability_test_1600
256     * @tc.name    Delete 10000 pieces of data in contact_data table to see if they can be deleted successfully
257     * @tc.desc    Function test
258     */
259    it("contact_data_delete_stability_test_1600", 0, async function(done) {
260        let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS);
261        console.info('contact_data_delete_stability_test_1600 : start ! dataShareHelper = ' + dataShareHelper);
262        let condition = new dataShare.DataSharePredicates();
263        condition.greaterThan("id", "0");
264        try {
265            var deleteCode = await dataShareHelper.delete(contactDataUri, condition);
266            sleep(2000);
267            console.info("logMessage contact_data_delete_stability_test_1600: deleteCode = " + deleteCode);
268            expect(deleteCode == 0).assertTrue();
269            done();
270        } catch (error) {
271            console.info('logMessage contact_data_delete_stability_test_1600: delete error = ' + error);
272            done();
273        }
274    });
275
276    /**
277     * @tc.number  calllog_insert_stability_test_100
278     * @tc.name    Add 10000 pieces of data to the callog table to see if they can be successfully inserted
279     * @tc.desc    Function test
280     */
281    it("calllog_insert_stability_test_100", 0, async function(done) {
282        console.info("---------logMessage calllog_insert_stability_test_100 is starting!----------");
283        let dataShareHelper = dataShare.createDataShareHelper(URI_CALLLOG);
284        console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
285        var listAddBluk = [];
286        var phoneNumber = randomNum(6);
287        for (var i = 0; i < 1000; i++) {
288            var add = {"phone_number" : phoneNumber + i};
289            listAddBluk[i] = add;
290        }
291        try {
292            var batchInsertCode = await dataShareHelper.batchInsert(calllogUri, listAddBluk);
293            var batchInsertCode = await dataShareHelper.batchInsert(calllogUri, listAddBluk);
294            var batchInsertCode = await dataShareHelper.batchInsert(calllogUri, listAddBluk);
295            var batchInsertCode = await dataShareHelper.batchInsert(calllogUri, listAddBluk);
296            var batchInsertCode = await dataShareHelper.batchInsert(calllogUri, listAddBluk);
297            var batchInsertCode = await dataShareHelper.batchInsert(calllogUri, listAddBluk);
298            var batchInsertCode = await dataShareHelper.batchInsert(calllogUri, listAddBluk);
299            var batchInsertCode = await dataShareHelper.batchInsert(calllogUri, listAddBluk);
300            var batchInsertCode = await dataShareHelper.batchInsert(calllogUri, listAddBluk);
301            var batchInsertCode = await dataShareHelper.batchInsert(calllogUri, listAddBluk);
302            sleep(1000);
303            console.info("logMessage calllog_insert_stability_test_100: batchInsertCode = " + batchInsertCode);
304            expect(batchInsertCode == 0).assertTrue();
305            done();
306        } catch (error) {
307            console.info("logMessage calllog_insert_stability_test_100: batchInsert error = " + error);
308            done();
309        }
310    });
311
312    /**
313     * @tc.number  calllog_update_stability_test_200
314     * @tc.name    The callog table updates the data whose ID is not equal to 0 to see whether they can be updated
315     * successfully
316     * @tc.desc    Function test
317     */
318    it("calllog_update_stability_test_200", 0, async function(done) {
319        let dataShareHelper = dataShare.createDataShareHelper(URI_CALLLOG);
320        console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
321        var updateValues = {"answer_state" : "1"};
322        try {
323            let condition = new dataShare.DataSharePredicates();
324            condition.greaterThan("id", "0");
325            var updateCode = await dataShareHelper.update(calllogUri, updateValues, condition);
326            sleep(1000);
327            console.info("logMessage calllog_update_stability_test_200: updateCode = " + updateCode);
328            expect(updateCode == 0).assertTrue();
329            done();
330        } catch (error) {
331            console.info("logMessage calllog_update_stability_test_200: update error = " + error);
332            done();
333        }
334    });
335
336    /**
337     * @tc.number  calllog_query_stability_test_300
338     * @tc.name    The callog table queries 10000 pieces of data to see whether they can be queried successfully
339     * @tc.desc    Function test
340     */
341     it("calllog_query_stability_test_300", 0, async function(done) {
342        var tag = "calllog_query_stability_test_300";
343        let dataShareHelper = dataShare.createDataShareHelper(URI_CALLLOG);
344        console.info(tag + ': start ! dataShareHelper = ' + dataShareHelper);
345        var resultColumns = ["id"];
346        let condition = new dataShare.DataSharePredicates();
347        condition.notEqualTo("id", 0);
348
349        try {
350            let resultSet = await dataShareHelper.query(calllogUri, resultColumns, condition);
351            sleep(5000);
352            console.info(tag + ' : logMessage : rowCount' + resultSet.rowCount);
353            expect(resultSet.rowCount == 10000).assertTrue();
354            resultSet.close();
355            done();
356        } catch (error) {
357            console.info("logMessage calllog_query_stability_test_300: error = " + error);
358            done()
359        }
360    });
361
362    /**
363     * @tc.number  calllog_delete_stability_test_400
364     * @tc.name    Delete 10000 pieces of data in callog table to see if they can be deleted successfully
365     * @tc.desc    Function test
366     */
367    it("calllog_delete_stability_test_400", 0, async function(done) {
368        var tag = "calllog_delete_stability_test_400";
369        let dataShareHelper = dataShare.createDataShareHelper(URI_CALLLOG);
370        console.info(tag + ': start ! dataShareHelper = ' + dataShareHelper);
371        let condition = new dataShare.DataSharePredicates();
372        condition.greaterThan("id", "0");
373        var deleteCode = await dataShareHelper.delete(calllogUri, condition);
374        sleep(5000);
375        console.info(tag + " : logMessage : deleteCode = " + deleteCode);
376        expect(deleteCode == 0).assertTrue();
377        done();
378    });
379
380    /**
381     * @tc.number  voicemail_insert_stability_test_500
382     * @tc.name    Add 10000 pieces of data to the voicemail table to see if they can be successfully inserted
383     * @tc.desc    Function test
384     */
385    it("voicemail_insert_stability_test_500", 0, async function(done) {
386        console.info("---------logMessage voicemail_insert_stability_test_500 is starting!----------");
387        let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
388        console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
389
390        var listAddBluk = [];
391        var phoneNumber = randomNum(4);
392        for (var i = 0; i < 1000; i++) {
393            var add = {"phone_number" : phoneNumber + i};
394            listAddBluk[i] = add;
395        }
396        try {
397            var batchInsertCode = await dataShareHelper.batchInsert(voicemailUri, listAddBluk);
398            var batchInsertCode = await dataShareHelper.batchInsert(voicemailUri, listAddBluk);
399            var batchInsertCode = await dataShareHelper.batchInsert(voicemailUri, listAddBluk);
400            var batchInsertCode = await dataShareHelper.batchInsert(voicemailUri, listAddBluk);
401            var batchInsertCode = await dataShareHelper.batchInsert(voicemailUri, listAddBluk);
402            var batchInsertCode = await dataShareHelper.batchInsert(voicemailUri, listAddBluk);
403            var batchInsertCode = await dataShareHelper.batchInsert(voicemailUri, listAddBluk);
404            var batchInsertCode = await dataShareHelper.batchInsert(voicemailUri, listAddBluk);
405            var batchInsertCode = await dataShareHelper.batchInsert(voicemailUri, listAddBluk);
406            var batchInsertCode = await dataShareHelper.batchInsert(voicemailUri, listAddBluk);
407            sleep(1000);
408            console.info("logMessage voicemail_insert_stability_test_500: batchInsertCode = " + batchInsertCode);
409            expect(batchInsertCode == 0).assertTrue();
410            done();
411        } catch (error) {
412            console.info("logMessage voicemail_insert_stability_test_500: batchInsert error = " + error);
413            done();
414        }
415    });
416
417    /**
418     * @tc.number  voicemail_update_stability_test_600
419     * @tc.name    The voicemail table updates the data whose ID is not equal to 0 to see whether they can be updated
420     * successfully
421     * @tc.desc    Function test
422     */
423    it("voicemail_update_stability_test_600", 0, async function(done) {
424        let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
425        console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
426        var updateValues = {"origin_type" : "test"};
427        try {
428            let condition = new dataShare.DataSharePredicates();
429            condition.notEqualTo("id", 0);
430            var updateCode = await dataShareHelper.update(voicemailUri, updateValues, condition);
431            sleep(1000);
432            console.info("logMessage voicemail_update_stability_test_600: updateCode = " + updateCode);
433            expect(updateCode == 0).assertTrue();
434            done();
435        } catch (error) {
436            console.info("logMessage voicemail_update_stability_test_600: update error = " + error);
437            done();
438        }
439    });
440
441    /**
442     * @tc.number  voicemail_query_stability_test_700
443     * @tc.name    The voicemail table queries 10000 pieces of data to see whether they can be queried successfully
444     * @tc.desc    Function test
445     */
446    it("voicemail_query_stability_test_700", 0, async function(done) {
447        var tag = "voicemail_query_stability_test_700";
448        let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
449        console.info(tag + ': start ! dataShareHelper = ' + dataShareHelper);
450        var resultColumns = ["id"];
451        let condition = new dataShare.DataSharePredicates();
452        condition.greaterThan("id", "0");
453        try {
454            var resultSet = await dataShareHelper.query(voicemailUri, resultColumns, condition);
455            sleep(1000);
456            console.info(tag + ' : resultSet.rowCount = ' + resultSet.rowCount);
457            expect(resultSet.rowCount == 10000).assertEqual(true);
458            resultSet.close();
459            done();
460        } catch (error) {
461            console.info("logMessage voicemail_query_stability_test_700: error = " + error);
462            done()
463        }
464    });
465
466    /**
467     * @tc.number  voicemail_delete_stability_test_800
468     * @tc.name    Delete 10000 pieces of data in voicemail table to see if they can be deleted successfully
469     * @tc.desc    Function test
470     */
471    it("voicemail_delete_stability_test_800", 0, async function(done) {
472        var tag = "voicemail_delete_stability_test_800";
473        let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
474        console.info(tag + ': start ! dataShareHelper = ' + dataShareHelper);
475        let condition = new dataShare.DataSharePredicates();
476        condition.greaterThan("id", "0");
477        try {
478            var deleteCode = await dataShareHelper.delete(voicemailUri, condition);
479            sleep(2000);
480            console.info(tag + " : logMessage : deleteCode = " + deleteCode);
481            expect(deleteCode == 0).assertTrue();
482            done();
483        } catch (error) {
484            console.info("logMessage voicemail_delete_stability_test_800: error = " + error);
485            done();
486        }
487    });
488
489    afterAll(async function() {
490        let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS);
491        console.info('Stability : start ! dataShareHelper = ' + dataShareHelper);
492        let condition = new dataShare.DataSharePredicates();
493        condition.notEqualTo("id", "0");
494        try {
495            var resultColumns = [ "id" ];
496            var conditionDelete = new dataShare.DataSharePredicates();
497            conditionDelete.greaterThan("id", "0");
498            var count = 0;
499            var deleteCount = 9999;
500            while (count < deleteCount) {
501                var result = await dataShareHelper.query(deletedUri, resultColumns, conditionDelete);
502                console.info("Stability : result.rowCount = " + result.rowCount);
503                count = result.rowCount;
504                result.close();
505                sleep(5000);
506            }
507            var deleteCode = await dataShareHelper.delete(deletedUri, condition);
508            console.info("Stability afterAll logMessage DeleteContact: deleteCode = " + deleteCode);
509        } catch (error) {
510            console.info('Stability afterAll logMessage DeleteContact: delete error = ' + error);
511        }
512    });
513})
514
515function randomNum (num) {
516    let number = toString(Math.floor(Math.random() * (9 * Math.pow(10, num))) + (1 * Math.pow(10, num)));
517    return number ;
518}
519