From 5f85c77e89e3d1e32003c6c2f792ef133332570c Mon Sep 17 00:00:00 2001 From: luozhewen Date: Sat, 28 Aug 2021 17:22:42 +0800 Subject: [PATCH] =?UTF-8?q?startup=20=E5=AD=90=E7=B3=BB=E7=BB=9F=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: luozhewen --- startup/startup_standard/BUILD.gn | 22 +- startup/startup_standard/entry/package.json | 1 - .../src/main/js/default/pages/index/index.js | 54 - .../hap/entry-debug-standard-signed.hap | Bin 266044 -> 0 bytes .../signature/openharmony_sx.p7b | Bin 0 -> 3437 bytes .../{entry => }/src/main/config.json | 0 .../{entry => }/src/main/js/default/app.js | 46 +- .../src/main/js/default/i18n/en-US.json | 0 .../src/main/js/default/i18n/zh-CN.json | 0 .../src/main/js/default/pages/index/index.css | 9 + .../src/main/js/default/pages/index/index.hml | 5 + .../src/main/js/default/pages/index/index.js | 29 + .../js/default}/test/DeviceInfoJsUnit.test.js | 2532 ++++++++--------- .../main/js/default}/test/List.test.js | 40 +- .../js/default}/test/ParametersJsUnit.test.js | 468 +-- .../main/resources/base/element/string.json | 12 + .../src/main/resources/base/media/icon.png | Bin 0 -> 6790 bytes .../src/main/js/default/i18n/en-US.json | 6 + .../src/main/js/default/i18n/zh-CN.json | 6 + 19 files changed, 1630 insertions(+), 1600 deletions(-) delete mode 100755 startup/startup_standard/entry/package.json delete mode 100755 startup/startup_standard/entry/src/main/js/default/pages/index/index.js delete mode 100755 startup/startup_standard/hap/entry-debug-standard-signed.hap create mode 100644 startup/startup_standard/signature/openharmony_sx.p7b rename startup/startup_standard/{entry => }/src/main/config.json (100%) mode change 100755 => 100644 rename startup/startup_standard/{entry => }/src/main/js/default/app.js (97%) mode change 100755 => 100644 rename startup/startup_standard/{entry => }/src/main/js/default/i18n/en-US.json (100%) mode change 100755 => 100644 rename startup/startup_standard/{entry => }/src/main/js/default/i18n/zh-CN.json (100%) mode change 100755 => 100644 create mode 100644 startup/startup_standard/src/main/js/default/pages/index/index.css create mode 100644 startup/startup_standard/src/main/js/default/pages/index/index.hml create mode 100644 startup/startup_standard/src/main/js/default/pages/index/index.js rename startup/startup_standard/{entry/src/main/js => src/main/js/default}/test/DeviceInfoJsUnit.test.js (97%) mode change 100755 => 100644 rename startup/startup_standard/{entry/src/main/js => src/main/js/default}/test/List.test.js (97%) mode change 100755 => 100644 rename startup/startup_standard/{entry/src/main/js => src/main/js/default}/test/ParametersJsUnit.test.js (97%) mode change 100755 => 100644 create mode 100644 startup/startup_standard/src/main/resources/base/element/string.json create mode 100644 startup/startup_standard/src/main/resources/base/media/icon.png create mode 100644 updater/update_test/src/main/js/default/i18n/en-US.json create mode 100644 updater/update_test/src/main/js/default/i18n/zh-CN.json diff --git a/startup/startup_standard/BUILD.gn b/startup/startup_standard/BUILD.gn index fefb87192..7d4d843eb 100755 --- a/startup/startup_standard/BUILD.gn +++ b/startup/startup_standard/BUILD.gn @@ -13,6 +13,24 @@ import("//test/xts/tools/build/suite.gni") ohos_js_hap_suite("startup_js_test") { - test_hap_name = "StartupJSApiTest" - hap_source_path = "hap/entry-debug-standard-signed.hap" + hap_profile = "./src/main/config.json" + deps = [ + ":startup_js_assets", + ":startup_js_resources", + ] +# shared_libraries = [ +# "//third_party/giflib:libgif", +# "//third_party/libpng:libpng", +# ] + certificate_profile = "./signature/openharmony_sx.p7b" + hap_name = "StartupJSApiTest" +# part_name = "prebuilt_hap" +# subsystem_name = "xts" } +ohos_js_assets("startup_js_assets") { + source_dir = "./src/main/js/default" +} +ohos_resources("startup_js_resources") { + sources = [ "./src/main/resources" ] + hap_profile = "./src/main/config.json" +} \ No newline at end of file diff --git a/startup/startup_standard/entry/package.json b/startup/startup_standard/entry/package.json deleted file mode 100755 index 69a88e3b6..000000000 --- a/startup/startup_standard/entry/package.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/startup/startup_standard/entry/src/main/js/default/pages/index/index.js b/startup/startup_standard/entry/src/main/js/default/pages/index/index.js deleted file mode 100755 index 6367b2fd4..000000000 --- a/startup/startup_standard/entry/src/main/js/default/pages/index/index.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2021 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 file from '@system.file' -import app from '@system.app' - -//import {Core, ExpectExtend, ReportExtend, InstrumentLog} from 'deccjsunit/index' -import {Core, ExpectExtend, ReportExtend} from 'deccjsunit/index' - -export default { - data: { - title: "" - }, - onInit() { - this.title = this.$t('strings.world'); - }, - onShow() { - console.info('onShow finish') - const core = Core.getInstance() - const expectExtend = new ExpectExtend({ - 'id': 'extend' - }) - const reportExtend = new ReportExtend(file) - // const instrumentLog = new InstrumentLog({ - // 'id': 'report' - // }) - core.addService('expect', expectExtend) - core.addService('report', reportExtend) - // core.addService('report', instrumentLog) - core.init() - // core.subscribeEvent('spec', instrumentLog) - // core.subscribeEvent('suite', instrumentLog) - // core.subscribeEvent('task', instrumentLog) - - const configService = core.getDefaultService('config') - configService.setConfig(this) - - require('../../../test/List.test') - core.execute() - }, - onReady() { - }, -} diff --git a/startup/startup_standard/hap/entry-debug-standard-signed.hap b/startup/startup_standard/hap/entry-debug-standard-signed.hap deleted file mode 100755 index c7c6327319e8967b36883add03a53c8b11ed406e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266044 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

)bF+ZsjHKg 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 literal 0 HcmV?d00001 diff --git a/startup/startup_standard/entry/src/main/config.json b/startup/startup_standard/src/main/config.json old mode 100755 new mode 100644 similarity index 100% rename from startup/startup_standard/entry/src/main/config.json rename to startup/startup_standard/src/main/config.json diff --git a/startup/startup_standard/entry/src/main/js/default/app.js b/startup/startup_standard/src/main/js/default/app.js old mode 100755 new mode 100644 similarity index 97% rename from startup/startup_standard/entry/src/main/js/default/app.js rename to startup/startup_standard/src/main/js/default/app.js index 363f2555b..e423f4bce --- a/startup/startup_standard/entry/src/main/js/default/app.js +++ b/startup/startup_standard/src/main/js/default/app.js @@ -1,23 +1,23 @@ -/* - * Copyright (C) 2021 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. - */ - -export default { - onCreate() { - console.info('AceApplication onCreate'); - }, - onDestroy() { - console.info('AceApplication onDestroy'); - } -}; +/* + * Copyright (C) 2021 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. + */ + +export default { + onCreate() { + console.info('AceApplication onCreate'); + }, + onDestroy() { + console.info('AceApplication onDestroy'); + } +}; diff --git a/startup/startup_standard/entry/src/main/js/default/i18n/en-US.json b/startup/startup_standard/src/main/js/default/i18n/en-US.json old mode 100755 new mode 100644 similarity index 100% rename from startup/startup_standard/entry/src/main/js/default/i18n/en-US.json rename to startup/startup_standard/src/main/js/default/i18n/en-US.json diff --git a/startup/startup_standard/entry/src/main/js/default/i18n/zh-CN.json b/startup/startup_standard/src/main/js/default/i18n/zh-CN.json old mode 100755 new mode 100644 similarity index 100% rename from startup/startup_standard/entry/src/main/js/default/i18n/zh-CN.json rename to startup/startup_standard/src/main/js/default/i18n/zh-CN.json diff --git a/startup/startup_standard/src/main/js/default/pages/index/index.css b/startup/startup_standard/src/main/js/default/pages/index/index.css new file mode 100644 index 000000000..6fda79275 --- /dev/null +++ b/startup/startup_standard/src/main/js/default/pages/index/index.css @@ -0,0 +1,9 @@ +.container { + flex-direction: column; + justify-content: center; + align-items: center; +} + +.title { + font-size: 100px; +} diff --git a/startup/startup_standard/src/main/js/default/pages/index/index.hml b/startup/startup_standard/src/main/js/default/pages/index/index.hml new file mode 100644 index 000000000..f64b040a5 --- /dev/null +++ b/startup/startup_standard/src/main/js/default/pages/index/index.hml @@ -0,0 +1,5 @@ +

+ + {{ $t('strings.hello') }} {{ title }} + +
diff --git a/startup/startup_standard/src/main/js/default/pages/index/index.js b/startup/startup_standard/src/main/js/default/pages/index/index.js new file mode 100644 index 000000000..3283c2ef2 --- /dev/null +++ b/startup/startup_standard/src/main/js/default/pages/index/index.js @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2021 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 {Core} from 'deccjsunit/lite' +const core = Core.getInstance() +core.init() +require('../../test/List.test.js') +core.execute() + +export default { + data: { + title: "" + }, + onInit() { + this.title = this.$t('strings.world'); + } +} diff --git a/startup/startup_standard/entry/src/main/js/test/DeviceInfoJsUnit.test.js b/startup/startup_standard/src/main/js/default/test/DeviceInfoJsUnit.test.js old mode 100755 new mode 100644 similarity index 97% rename from startup/startup_standard/entry/src/main/js/test/DeviceInfoJsUnit.test.js rename to startup/startup_standard/src/main/js/default/test/DeviceInfoJsUnit.test.js index 9259d3853..bb1b556fa --- a/startup/startup_standard/entry/src/main/js/test/DeviceInfoJsUnit.test.js +++ b/startup/startup_standard/src/main/js/default/test/DeviceInfoJsUnit.test.js @@ -1,1266 +1,1266 @@ -/* - * Copyright (C) 2021 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. - */ - -// @ts-nocheck -import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' -import deviceinfo from '@ohos.deviceInfo' - -describe('DeviceInfoTest', function () { - - beforeAll(function () { - console.info('beforeAll: Prerequisites at the test suite level, which are executed before the test suite is executed.'); - - }) - - beforeEach(function () { - console.info('beforeEach: Prerequisites at the test case level, which are executed before each test case is executed.'); - - }) - afterEach(function () { - console.info('afterEach: Test case-level clearance conditions, which are executed after each test case is executed.'); - - }) - afterAll(function () { - console.info('afterAll: Test suite-level cleanup condition, which is executed after the test suite is executed'); - - }) - - console.info('start################################start'); - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0100 - * @tc.name testGetDeviceType01 - * @tc.desc Get a string representing the device type. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_001', 0, function () { - console.info('device_info_test_001 start'); - var ret = false; - var deviceTypeInfo = deviceinfo.deviceType; - console.info('the value of the deviceType is :' + deviceTypeInfo); - - expect(deviceTypeInfo).assertInstanceOf('String'); - if (deviceTypeInfo !="" && deviceTypeInfo != null && deviceTypeInfo != undefined) { - ret = true; - } - expect(ret).assertTrue() - console.info('device_info_test_001 : end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0200 - * @tc.name testGetManufacture01 - * @tc.desc Get the manufacture name represented by a string. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_002', 0, function () { - console.info('device_info_test_002 start'); - var ret = false; - var manufactureInfo = deviceinfo.manufacture; - console.info('the value of the manufactureInfo is :' + manufactureInfo); - - expect(manufactureInfo).assertInstanceOf('String'); - if (manufactureInfo !="" && manufactureInfo != null && manufactureInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('device_info_test_002 :end'); - }) - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0300 - * @tc.name testGetProductBrand01 - * @tc.desc Get the product brand represented by a string. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_003', 0, function () { - console.info('testGetProductBrand01 start'); - var ret = false; - var brandInfo = deviceinfo.brand; - console.info('the value of the deviceinfo brand is :' + brandInfo); - - expect(brandInfo).assertInstanceOf('String'); - if (brandInfo !="" && brandInfo != null && brandInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetProductBrand01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0400 - * @tc.name testGetMarketName01 - * @tc.desc Get the external product family name represented by a string. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_004', 0, function () { - console.info('testGetMarketName01 start') - var ret = false; - var marketNameInfo = deviceinfo.marketName; - console.info('the value of the deviceinfo marketName is :' + marketNameInfo); - - expect(marketNameInfo).assertInstanceOf('String'); - if(marketNameInfo !="" && marketNameInfo != null && marketNameInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetMarketName01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0500 - * @tc.name testGetProductSeries01 - * @tc.desc Get the product series represented by a string. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_005', 0, function () { - console.info('testGetProductSeries01 start'); - var ret = false; - var productSeriesInfo = deviceinfo.productSeries; - console.info('the value of the deviceinfo productSeries is :' + productSeriesInfo); - - expect(productSeriesInfo).assertInstanceOf('String'); - if(productSeriesInfo !="" && productSeriesInfo != null && productSeriesInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetProductSeries01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0600 - * @tc.name testGetProductModel01 - * @tc.desc Get the internal software sub-model represented by a string. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_006', 0, function () { - console.info('testGetProductModel01 start'); - var ret = false; - var productModelInfo = deviceinfo.productModel; - console.info('the value of the deviceinfo productModel is :' + productModelInfo); - - expect(productModelInfo).assertInstanceOf('String'); - if(productModelInfo !="" && productModelInfo != null && productModelInfo != undefined){ - ret =true; - } - expect(ret).assertTrue(); - console.info('testGetProductModel01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0700 - * @tc.name testGetSoftwareModel01 - * @tc.desc Get the internal software sub-model represented by a string. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_007', 0, function () { - console.info('testGetSoftwareModel01 start'); - var ret = false; - var softwareModelInfo = deviceinfo.softwareModel; - console.info('the value of the deviceinfo softwareModel is :' + softwareModelInfo); - - expect(softwareModelInfo).assertInstanceOf('String'); - if(softwareModelInfo !="" && softwareModelInfo != null && softwareModelInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetSoftwareModel01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0800 - * @tc.name testGetHardWareModel01 - * @tc.desc Get the hardware version represented by a string. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_008', 0, function () { - console.info('testGetHardWareModel01 start'); - var ret = false; - var hardwareModelInfo = deviceinfo.hardwareModel; - console.info('the value of the deviceinfo hardwareModel is :' + hardwareModelInfo); - - expect(hardwareModelInfo).assertInstanceOf('String'); - if(hardwareModelInfo !="" && hardwareModelInfo != null && hardwareModelInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetHardWareModel01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0900 - * @tc.name testGetHardWareProfile01 - * @tc.desc Get the hardware profile represented by a string. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_009', 0, function () { - console.info('testGetHardWareProfile01 start'); - var ret = false; - var hardwareProfileInfo = deviceinfo.hardwareProfile; - console.info('the value of the deviceinfo hardwareProfile is :' + hardwareProfileInfo); - - expect(hardwareProfileInfo).assertInstanceOf('String'); - if(hardwareProfileInfo !="" && hardwareProfileInfo != null && hardwareProfileInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetHardWareProfile01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0110 - * @tc.name testGetSerial01 - * @tc.desc Get the device serial number represented by a string. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_010', 0, function () { - console.info('testGetSerial01 start'); - var ret = false; - var serialInfo = deviceinfo.serial; - console.info('the value of the deviceinfo serial is :' + serialInfo); - - expect(serialInfo).assertInstanceOf('String'); - if(serialInfo !="" && serialInfo != null && serialInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetSerial01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0120 - * @tc.name testGetBootLoaderVersion01 - * @tc.desc Get the bootloader version number represented by a string. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_011', 0, function () { - console.info('testGetBootLoaderVersion01 start'); - var ret = false; - var bootloaderVersionInfo = deviceinfo.bootloaderVersion; - console.info('the value of the deviceinfo bootloaderVersion is :' + bootloaderVersionInfo); - - expect(bootloaderVersionInfo).assertInstanceOf('String'); - if(bootloaderVersionInfo !="" && bootloaderVersionInfo != null && bootloaderVersionInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetBootLoaderVersion01 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0130 - * @tc.name testGetabiList01 - * @tc.desc Get the instruction set supported by the system. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_012', 0, function () { - console.info('testGetabiList01 start'); - var ret = false; - var abiListInfo = deviceinfo.abiList; - console.info('the value of the deviceinfo abiList is :' + abiListInfo); - - expect(abiListInfo).assertInstanceOf('String'); - if(abiListInfo !="" && abiListInfo != null && abiListInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetabiList01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0140 - * @tc.name testGetabiList01 - * @tc.desc Get the security patch level represented by a string. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_013', 0, function () { - console.info('testGetSecurityPatchTag01 start'); - var ret = false; - var securityPatchTagInfo = deviceinfo.securityPatchTag; - console.info('the value of the deviceinfo securityPatchTag is :' + securityPatchTagInfo); - - expect(securityPatchTagInfo).assertInstanceOf('String'); - if(securityPatchTagInfo !="" && securityPatchTagInfo != null && securityPatchTagInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetSecurityPatchTag01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0150 - * @tc.name testGetabiList01 - * @tc.desc Get the version number visible to users represented by a string. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_014', 0, function () { - console.info('testGetDisplayVersion01 start'); - var ret = false; - var displayVersionInfo = deviceinfo.displayVersion; - console.info('the value of the deviceinfo displayVersion is :' + displayVersionInfo); - - expect(displayVersionInfo).assertInstanceOf('String'); - if(displayVersionInfo !="" && displayVersionInfo != null && displayVersionInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetDisplayVersion01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0160 - * @tc.name testGetIncrementalVersion01 - * @tc.desc Get the difference version number represented by a string. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_015', 0, function () { - console.info('testGetIncrementalVersion01 start'); - var ret = false; - var incrementalVersionInfo = deviceinfo.incrementalVersion; - console.info('the value of the deviceinfo incrementalVersion is :' + incrementalVersionInfo); - - expect(incrementalVersionInfo).assertInstanceOf('String'); - if(incrementalVersionInfo !="" && incrementalVersionInfo != null && incrementalVersionInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetIncrementalVersion01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0170 - * @tc.name testGetOSReleaserType01 - * @tc.desc Get the OS release type. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_016', 0, function () { - console.info('testGetOSReleaserType01 start'); - var ret = false; - var osReleaseTypeInfo = deviceinfo.osReleaseType; - console.info('the value of the deviceinfo osReleaseType is :' + osReleaseTypeInfo); - - expect(osReleaseTypeInfo).assertInstanceOf('String'); - if(osReleaseTypeInfo !="" && osReleaseTypeInfo != null && osReleaseTypeInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetOSReleaserType01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0180 - * @tc.name testGetOSFullName01 - * @tc.desc Get the operating system full name. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_017', 0, function () { - console.info('testGetOSFullName01 start'); - var ret = false; - var osFullNameInfo = deviceinfo.osFullName; - console.info('the value of the deviceinfo osFullName is :' + osFullNameInfo); - - expect(osFullNameInfo).assertInstanceOf('String'); - if(osFullNameInfo !="" && osFullNameInfo != null && osFullNameInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetOSFullName01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0190 - * @tc.name testGetMajorVersion01 - * @tc.desc Get the major (M) version number, which increases with any updates to the overall architecture. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_018', 0, function () { - console.info('testGetMajorVersion01 start'); - var ret = false; - var majorVersionInfo = deviceinfo.majorVersion; - console.info('the value of the deviceinfo majorVersion is :' + majorVersionInfo); - - expect(majorVersionInfo).assertInstanceOf('Number'); - if(majorVersionInfo >= 0){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetMajorVersion01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0210 - * @tc.name testGetSeniorVersion01 - * @tc.desc Get the senior (S) version number, which increases with any updates to the partial. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_019', 0, function () { - console.info('testGetSeniorVersion01 start'); - var ret = false; - var seniorVersionInfo = deviceinfo.seniorVersion; - console.info('the value of the deviceinfo seniorVersion is :' + seniorVersionInfo); - - expect(seniorVersionInfo).assertInstanceOf('Number'); - if(seniorVersionInfo >= 0){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetSeniorVersion01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0220 - * @tc.name testGetFeatureVersion01 - * @tc.desc Get the feature (F) version number, which increases with any planned new features. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_020', 0, function () { - console.info('testGetFeatureVersion01 start'); - var ret = false; - var featureVersionInfo = deviceinfo.featureVersion; - console.info('the value of the deviceinfo featureVersion is :' + featureVersionInfo); - - expect(featureVersionInfo).assertInstanceOf('Number'); - if(featureVersionInfo >= 0){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetFeatureVersion01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0230 - * @tc.name testGetBuildVersion01 - * @tc.desc Get the build (B) version number, which increases with each new development build. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_021', 0, function () { - console.info('testGetBuildVersion01 start'); - var ret = false; - var buildVersionInfo = deviceinfo.buildVersion; - console.info('the value of the deviceinfo buildVersion is :' + buildVersionInfo); - - expect(buildVersionInfo).assertInstanceOf('Number'); - if(buildVersionInfo >= 0){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetBuildVersion01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0240 - * @tc.name testGetSdkApiVersion01 - * @tc.desc Get the API version number. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_022', 0, function () { - console.info('testGetSdkApiVersion01 start'); - var ret = false; - var sdkApiVersionInfo = deviceinfo.sdkApiVersion; - console.info('the value of the deviceinfo sdkApiVersion is :' + sdkApiVersionInfo); - - expect(sdkApiVersionInfo).assertInstanceOf('Number'); - if(sdkApiVersionInfo >= 0){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetSdkApiVersion01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0250 - * @tc.name testGetFirstApiVersion01 - * @tc.desc Get the first API version number. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_023', 0, function () { - console.info('testGetFirstApiVersion01 start'); - var ret = true; - var firstApiVersionInfo = deviceinfo.firstApiVersion; - console.info('the value of the deviceinfo firstApiVersion is :' + firstApiVersionInfo); - - expect(firstApiVersionInfo).assertInstanceOf('Number'); - if(firstApiVersionInfo >= 0){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetFirstApiVersion01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0260 - * @tc.name testGetVersionId01 - * @tc.desc Get the version ID number. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_024', 0, function () { - console.info('testGetVersionId01 start'); - var ret = false; - var versionIdInfo = deviceinfo.versionId; - console.info('the value of the deviceinfo versionId is :' + versionIdInfo); - - expect(versionIdInfo).assertInstanceOf('String'); - if(versionIdInfo !="" && versionIdInfo != null && versionIdInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetVersionId01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0270 - * @tc.name testGetBuildType01 - * @tc.desc Get the different build types of the same baseline code. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_025', 0, function () { - console.info('testGetBuildType01 start'); - var ret = false; - var buildTypeInfo = deviceinfo.buildType; - console.info('the value of the deviceinfo buildType is :' + buildTypeInfo); - - expect(buildTypeInfo).assertInstanceOf('String'); - if(buildTypeInfo !="" && buildTypeInfo != null && buildTypeInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetBuildType01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0280 - * @tc.name testGetBuildUser01 - * @tc.desc Get the different build user of the same baseline code. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_026', 0, function () { - console.info('testGetBuildUser01 start'); - var ret = true; - var buildUserInfo = deviceinfo.buildUser; - console.info('the value of the deviceinfo buildUser is :' + buildUserInfo); - - expect(buildUserInfo).assertInstanceOf('String'); - if(buildUserInfo !="" && buildUserInfo != null && buildUserInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetBuildUser01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0290 - * @tc.name testGetBuildHost01 - * @tc.desc Get the different build host of the same baseline code. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_027', 0, function () { - console.info('testGetBuildHost01 start'); - var ret = false; - var buildHostInfo = deviceinfo.buildHost; - console.info('the value of the deviceinfo buildHost is :' + buildHostInfo); - - expect(buildHostInfo).assertInstanceOf('String'); - if(buildHostInfo !="" && buildHostInfo != null && buildHostInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetBuildHost01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0310 - * @tc.name testGetBuildTime01 - * @tc.desc Get the the build time. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_028', 0, function () { - console.info('testGetBuildTime01 start'); - var ret = false; - var buildTimeInfo = deviceinfo.buildTime; - console.info('the value of the deviceinfo buildTime is :' + buildTimeInfo); - - expect(buildTimeInfo).assertInstanceOf('String'); - if(buildTimeInfo !="" && buildTimeInfo != null && buildTimeInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetBuildTime01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0320 - * @tc.name testGetBuildRootHash01 - * @tc.desc Get the version hash. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_029', 0, function () { - console.info('testGetBuildRootHash01 start'); - var ret = false; - var buildRootHashInfo = deviceinfo.buildRootHash; - console.info('the value of the deviceinfo buildRootHash is :' + buildRootHashInfo); - - expect(buildRootHashInfo).assertInstanceOf('String'); - if(buildRootHashInfo !="" && buildRootHashInfo != null && buildRootHashInfo != undefined){ - ret = true; - } - expect(ret).assertTrue(); - console.info('testGetBuildRootHash01 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0330 - * @tc.name testGetDeviceType02 - * @tc.desc Get a string representing the device type which has a maximum of 32 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_030', 0, function () { - console.info('device_info_test_030 start'); - var deviceTypeInfo = deviceinfo.deviceType; - console.info('the value of the deviceinfo deviceType is:' + deviceTypeInfo); - - let len = deviceTypeInfo.length - - console.info('the value of the device type characters:' + len); - expect(len).assertLess(33) - console.info('device_info_test_030 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0340 - * @tc.name testGetManufacture02 - * @tc.desc Get a string representing the manufacture which has a maximum of 32 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_031', 0, function () { - console.info('device_info_test_031 start'); - var manufactureInfo = deviceinfo.manufacture; - console.info('the value of the deviceinfo manufacture is :' + manufactureInfo); - - let len = manufactureInfo.length - console.info('the value of the manufacture characters is :' + len); - expect(len).assertLess(33) - console.info('device_info_test_031 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0350 - * @tc.name testGetProductBrand02 - * @tc.desc Get a string representing the external product family name which has a maximum of 32 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_032', 0, function () { - console.info('device_info_test_032 start'); - var brandInfo = deviceinfo.brand; - console.info('the value of the deviceinfo brand is :' + brandInfo); - - let len = brandInfo.length - console.info('the value of the external product family name characters is :' + len); - expect(len).assertLess(33) - console.info('device_info_test_032 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0360 - * @tc.name testGetMarketName02 - * @tc.desc Get a string representing the product series which has a maximum of 32 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_033', 0, function () { - console.info('device_info_test_033 start'); - var marketNameInfo = deviceinfo.marketName; - console.info('the value of the deviceinfo marketName is :' + marketNameInfo); - - let len = marketNameInfo.length - console.info('the value of the product series characters is :' + len); - expect(len).assertLess(32) - console.info('device_info_test_033 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0370 - * @tc.name testGetProductSeries02 - * @tc.desc Get a string representing the product series which has a maximum of 32 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_034', 0, function () { - console.info('device_info_test_034 start'); - var productSeriesInfo = deviceinfo.productSeries; - console.info('the value of the deviceinfo productSeries is :' + productSeriesInfo); - - let len = productSeriesInfo.length - console.info('the value of the product series characters is :' + len); - expect(len).assertLess(33) - console.info('device_info_test_034 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0380 - * @tc.name testGetProductModel02 - * @tc.desc Get a string representing the certified model which has a maximum of 32 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_035', 0, function () { - console.info('device_info_test_035 start'); - var productModelInfo = deviceinfo.productModel; - console.info('the value of the deviceinfo productModel is :' + productModelInfo); - - let len = productModelInfo.length - console.info('the value of the certified model characters is :' + len); - expect(len).assertLess(33) - console.info('device_info_test_035 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0390 - * @tc.name testGetSoftwareModel02 - * @tc.desc Get a string representing the internal software sub-model which has a maximum of 32 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_036', 0, function () { - console.info('device_info_test_036 start'); - var softwareModelInfo = deviceinfo.softwareModel; - console.info('the value of the deviceinfo softwareModel is :' + softwareModelInfo); - - let len = softwareModelInfo.length - console.info('the value of the internal software sub-model characters is :' + len); - expect(len).assertLess(33) - console.info('device_info_test_036 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0410 - * @tc.name testGetHardwareModel02 - * @tc.desc Get a string representing the hardware version which has a maximum of 32 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_037', 0, function () { - console.info('device_info_test_037 start'); - var hardwareModelInfo = deviceinfo.hardwareModel; - console.info('the value of the deviceinfo hardwareModel is :' + hardwareModelInfo); - - let len = hardwareModelInfo.length; - console.info('the value of the hardware version characters is :' + len); - expect(len).assertLess(33) - console.info('device_info_test_037 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0420 - * @tc.name testGetHardwareProfile02 - * @tc.desc Get a string representing the hardware version which has a maximum of 1000 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_038', 0, function () { - console.info('device_info_test_038 start'); - var hardwareProfileInfo = deviceinfo.hardwareProfile; - console.info('the value of the deviceinfo hardwareProfile is :' + hardwareProfileInfo); - - let len = hardwareProfileInfo.length; - console.info('the value of the hardware version characters is :' + len); - expect(len).assertLess(1001); - console.info('device_info_test_038 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0430 - * @tc.name testGetSerial02 - * @tc.desc Get a string representing the device serial number which has a maximum of 64 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_039', 0, function () { - console.info('device_info_test_039 start'); - var serialInfo = deviceinfo.serial; - console.info('the value of the deviceinfo serial is :' + serialInfo); - - let len = serialInfo.length; - console.info('the value of the device serial number characters is :' + len); - expect(len).assertLess(65); - console.info('device_info_test_039 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0440 - * @tc.name testGetDisplayVersion02 - * @tc.desc Get a string representing the version number visible to users which has a maximum of 64 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_040', 0, function () { - console.info('device_info_test_040 start'); - var displayVersionInfo = deviceinfo.displayVersion; - console.info('the value of the deviceinfo displayVersion is :' + displayVersionInfo); - - let len = displayVersionInfo.length; - console.info('the value of the device serial number characters is :' + len); - expect(len).assertLess(65); - console.info('device_info_test_040 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0450 - * @tc.name testGetOsFullName02 - * @tc.desc Get a string representing the operating system full name which has a maximum of 32 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_041', 0, function () { - console.info('device_info_test_041 start'); - var osFullNameInfo = deviceinfo.osFullName; - console.info('the value of the deviceinfo osFullName is :' + osFullNameInfo); - - let len = osFullNameInfo.length; - console.info('the value of the operating system full name characters is :' + len); - expect(len).assertLess(32); - console.info('device_info_test_041 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0460 - * @tc.name testGetVersionId02 - * @tc.desc Get a string representing the operating system full name which has a maximum of 127 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_042', 0, function () { - console.info('device_info_test_042 start'); - var versionIdInfo = deviceinfo.versionId; - console.info('the value of the deviceinfo versionId is :' + versionIdInfo); - - let len = versionIdInfo.length; - console.info('the value of the operating system full name characters is :' + len) - expect(len).assertLess(128); - console.info('device_info_test_042 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0470 - * @tc.name testGetBuildUser02 - * @tc.desc Get a string representing the different build user of the same baseline code which has a maximum of 32 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_043', 0, function () { - console.info('device_info_test_043 start'); - var buildUserInfo = deviceinfo.buildUser; - console.info('the value of the deviceinfo buildUser is :' + buildUserInfo); - - console.info('the value of the different build user of the same baseline code characters is :' + buildUserInfo.length); - expect(buildUserInfo.length).assertLess(33) - console.info('device_info_test_043 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0480 - * @tc.name testGetBuildHost02 - * @tc.desc Get a string representing the different build host of the same baseline code which has a maximum of 32 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_044', 0, function () { - console.info('device_info_test_044 start'); - var buildHostInfo = deviceinfo.buildHost; - console.info('the value of the deviceinfo buildHost is :' + buildHostInfo); - - let len = buildHostInfo.length - console.info('the value of the different build host of the same baseline code characters is :' + len) - expect(len).assertLess(33) - console.info('device_info_test_044 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0490 - * @tc.name testGetDeviceType03 - * @tc.desc Get a string representing the device type which has at least one characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_045', 0, function () { - console.info('device_info_test_045 start'); - var deviceTypeInfo = deviceinfo.deviceType; - console.info('the value of the deviceinfo deviceType is :' + deviceTypeInfo); - - let len = deviceTypeInfo.length; - console.info('the value of the device type characters:' + len); - expect(len).assertLarger(0); - console.info('device_info_test_045 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0510 - * @tc.name testGetManufacture03 - * @tc.desc Get a string representing the manufacture which has at least one characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_046', 0, function () { - console.info('device_info_test_046 start'); - var manufactureInfo = deviceinfo.manufacture; - console.info('the value of the deviceinfo manufacture is :' + manufactureInfo); - - let len = manufactureInfo.length - console.info('the value of the manufacture characters is :' + len) - expect(len).assertLarger(0) - console.info('device_info_test_046 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0520 - * @tc.name testGetProductBrand03 - * @tc.desc Get a string representing the external product family name which has at least one characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_047', 0, function () { - console.info('device_info_test_047 start'); - var brandInfo = deviceinfo.brand; - console.info('the value of the deviceinfo brand is :' + brandInfo); - - let len = brandInfo.length; - console.info('the value of the external product family name characters is :' + len); - expect(len).assertLarger(0); - console.info('device_info_test_047 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0530 - * @tc.name testGetMarketName03 - * @tc.desc Get a string representing the product series which has at least one characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_048', 0, function () { - console.info('device_info_test_048 start'); - var marketNameInfo = deviceinfo.marketName; - console.info('the value of the deviceinfo marketName is :' + marketNameInfo); - - let len = marketNameInfo.length; - console.info('the value of the product series characters is :' + len) - expect(len).assertLarger(0); - console.info('device_info_test_048 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0540 - * @tc.name testGetProductSeries03 - * @tc.desc Get a string representing the product series which has at least one characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_049', 0, function () { - console.info('device_info_test_049 start'); - var productSeriesInfo = deviceinfo.productSeries; - console.info('the value of the deviceinfo productSeries is :' + productSeriesInfo); - - let len = productSeriesInfo.length; - console.info('the value of the product series characters is :' + len); - expect(len).assertLarger(0); - console.info('device_info_test_049 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0550 - * @tc.name testGetProductModel03 - * @tc.desc Get a string representing the certified model which has at least one characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_050', 0, function () { - console.info('device_info_test_050 start'); - var productModelInfo = deviceinfo.productModel; - console.info('the value of the deviceinfo productModel is :' + productModelInfo); - - let len = productModelInfo.length - console.info('the value of the certified model characters is :' + len) - expect(len).assertLarger(0) - console.info('device_info_test_050 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0560 - * @tc.name testGetSoftwareModel03 - * @tc.desc Get a string representing the internal software sub-model which has at least one characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_051', 0, function () { - console.info('device_info_test_036 start'); - var softwareModelInfo = deviceinfo.softwareModel; - console.info('the value of the deviceinfo softwareModel is :' + softwareModelInfo); - - let len = softwareModelInfo.length - console.info('the value of the internal software sub-model characters is :' + len) - expect(len).assertLarger(0) - console.info('device_info_test_036 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0570 - * @tc.name testGetHardwareModel03 - * @tc.desc Get a string representing the hardware version which has at least one characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_052', 0, function () { - console.info('device_info_test_052 start'); - var hardwareModelInfo = deviceinfo.hardwareModel; - console.info('the value of the deviceinfo hardwareModel is :' + hardwareModelInfo); - - let len = hardwareModelInfo.length; - console.info('the value of the hardware version characters is :' + len); - expect(len).assertLarger(0); - console.info('device_info_test_052 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0580 - * @tc.name testGetHardwareProfile03 - * @tc.desc Get a string representing the hardware version which has at least one characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_053', 0, function () { - console.info('device_info_test_053 start'); - var hardwareProfileInfo = deviceinfo.hardwareProfile; - console.info('the value of the deviceinfo hardwareProfile is :' + hardwareProfileInfo); - - let len = hardwareProfileInfo.length; - console.info('the value of the hardware version characters is :' + len); - expect(len).assertLarger(0); - console.info('device_info_test_053 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0590 - * @tc.name testGetSerial03 - * @tc.desc Get a string representing the device serial number which has at least one characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_054', 0, function () { - console.info('device_info_test_054 start'); - var serialInfo = deviceinfo.serial; - console.info('the value of the deviceinfo serial is :' + serialInfo); - - let len = serialInfo.length; - console.info('the value of the device serial number characters is :' + len); - expect(len).assertLarger(0); - console.info('device_info_test_054 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0610 - * @tc.name testGetDisplayVersion03 - * @tc.desc Get a string representing the version number visible to users which has at least one characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_055', 0, function () { - console.info('device_info_test_055 start'); - var displayVersionInfo = deviceinfo.displayVersion; - console.info('the value of the deviceinfo displayVersion is :' + displayVersionInfo); - - let len = displayVersionInfo.length; - console.info('the value of the device serial number characters is :' + len); - expect(len).assertLarger(0); - console.info('device_info_test_055 :end'); - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0620 - * @tc.name testGetIncrementalVersionInfo02 - * @tc.desc Get a string representing the version number visible to users which has a maximum of 32 characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_056', 0, function () { - console.info('device_info_test_056 start'); - var incrementalVersionInfo = deviceinfo.incrementalVersion; - console.info('the value of the deviceinfo incrementalVersion is :' + incrementalVersionInfo); - - let len = incrementalVersionInfo.length - console.info('the value of the device serial number characters is :' + len) - expect(len).assertLess(32) - console.info('device_info_test_056 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0630 - * @tc.name testGetIncrementalVersionInfo03 - * @tc.desc Get a string representing the version number visible to users which has at least one characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_057', 0, function () { - console.info('device_info_test_057 start'); - var incrementalVersionInfo = deviceinfo.incrementalVersion; - console.info('the value of the deviceinfo incrementalVersion is :' + incrementalVersionInfo); - - let len = incrementalVersionInfo.length - console.info('the value of the device serial number characters is :' + len) - expect(len).assertLarger(0) - console.info('device_info_test_057 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0640 - * @tc.name testGetVersionId03 - * @tc.desc Get a string representing the operating system full name which has at least one characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_058', 0, function () { - console.info('device_info_test_058 start'); - var versionIdInfo = deviceinfo.versionId; - console.info('the value of the deviceinfo versionId is :' + versionIdInfo); - - let len = versionIdInfo.length - console.info('the value of the operating system full name characters is :' + len) - expect(len).assertLarger(0) - console.info('device_info_test_058 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0650 - * @tc.name testGetBuildUser03 - * @tc.desc Get a string representing the different build user of the same baseline code which has at least one characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_059', 0, function () { - console.info('device_info_test_043 start'); - var buildUserInfo = deviceinfo.buildUser; - console.info('the value of thebuildUser is :' + buildUserInfo); - - console.info('the value of the different build user of the same baseline code characters is :' + buildUserInfo.length); - expect(buildUserInfo.length).assertLarger(0) - console.info('device_info_test_059 :end') - }) - - /** - * @tc.number SUB_STARTUP_JS_DEVCEINFO_0660 - * @tc.name testGetBuildHost03 - * @tc.desc Get a string representing the different build host of the same baseline code which has at least one characters. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('device_info_test_060', 0, function () { - console.info('device_info_test_060 start'); - var buildHostInfo = deviceinfo.buildHost; - console.info('the value of the deviceinfo buildHost is :' + buildHostInfo); - - let len = buildHostInfo.length - console.info('the value of the different build host of the same baseline code characters is :' + len); - expect(len).assertLarger(0); - console.info('device_info_test_060 :end'); - }) -}) - +/* + * Copyright (C) 2021 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. + */ + +// @ts-nocheck +import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' +import deviceinfo from '@ohos.deviceInfo' + +describe('DeviceInfoTest', function () { + + beforeAll(function () { + console.info('beforeAll: Prerequisites at the test suite level, which are executed before the test suite is executed.'); + + }) + + beforeEach(function () { + console.info('beforeEach: Prerequisites at the test case level, which are executed before each test case is executed.'); + + }) + afterEach(function () { + console.info('afterEach: Test case-level clearance conditions, which are executed after each test case is executed.'); + + }) + afterAll(function () { + console.info('afterAll: Test suite-level cleanup condition, which is executed after the test suite is executed'); + + }) + + console.info('start################################start'); + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0100 + * @tc.name testGetDeviceType01 + * @tc.desc Get a string representing the device type. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_001', 0, function () { + console.info('device_info_test_001 start'); + var ret = false; + var deviceTypeInfo = deviceinfo.deviceType; + console.info('the value of the deviceType is :' + deviceTypeInfo); + + expect(deviceTypeInfo).assertInstanceOf('String'); + if (deviceTypeInfo !="" && deviceTypeInfo != null && deviceTypeInfo != undefined) { + ret = true; + } + expect(ret).assertTrue() + console.info('device_info_test_001 : end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0200 + * @tc.name testGetManufacture01 + * @tc.desc Get the manufacture name represented by a string. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_002', 0, function () { + console.info('device_info_test_002 start'); + var ret = false; + var manufactureInfo = deviceinfo.manufacture; + console.info('the value of the manufactureInfo is :' + manufactureInfo); + + expect(manufactureInfo).assertInstanceOf('String'); + if (manufactureInfo !="" && manufactureInfo != null && manufactureInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('device_info_test_002 :end'); + }) + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0300 + * @tc.name testGetProductBrand01 + * @tc.desc Get the product brand represented by a string. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_003', 0, function () { + console.info('testGetProductBrand01 start'); + var ret = false; + var brandInfo = deviceinfo.brand; + console.info('the value of the deviceinfo brand is :' + brandInfo); + + expect(brandInfo).assertInstanceOf('String'); + if (brandInfo !="" && brandInfo != null && brandInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetProductBrand01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0400 + * @tc.name testGetMarketName01 + * @tc.desc Get the external product family name represented by a string. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_004', 0, function () { + console.info('testGetMarketName01 start') + var ret = false; + var marketNameInfo = deviceinfo.marketName; + console.info('the value of the deviceinfo marketName is :' + marketNameInfo); + + expect(marketNameInfo).assertInstanceOf('String'); + if(marketNameInfo !="" && marketNameInfo != null && marketNameInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetMarketName01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0500 + * @tc.name testGetProductSeries01 + * @tc.desc Get the product series represented by a string. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_005', 0, function () { + console.info('testGetProductSeries01 start'); + var ret = false; + var productSeriesInfo = deviceinfo.productSeries; + console.info('the value of the deviceinfo productSeries is :' + productSeriesInfo); + + expect(productSeriesInfo).assertInstanceOf('String'); + if(productSeriesInfo !="" && productSeriesInfo != null && productSeriesInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetProductSeries01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0600 + * @tc.name testGetProductModel01 + * @tc.desc Get the internal software sub-model represented by a string. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_006', 0, function () { + console.info('testGetProductModel01 start'); + var ret = false; + var productModelInfo = deviceinfo.productModel; + console.info('the value of the deviceinfo productModel is :' + productModelInfo); + + expect(productModelInfo).assertInstanceOf('String'); + if(productModelInfo !="" && productModelInfo != null && productModelInfo != undefined){ + ret =true; + } + expect(ret).assertTrue(); + console.info('testGetProductModel01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0700 + * @tc.name testGetSoftwareModel01 + * @tc.desc Get the internal software sub-model represented by a string. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_007', 0, function () { + console.info('testGetSoftwareModel01 start'); + var ret = false; + var softwareModelInfo = deviceinfo.softwareModel; + console.info('the value of the deviceinfo softwareModel is :' + softwareModelInfo); + + expect(softwareModelInfo).assertInstanceOf('String'); + if(softwareModelInfo !="" && softwareModelInfo != null && softwareModelInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetSoftwareModel01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0800 + * @tc.name testGetHardWareModel01 + * @tc.desc Get the hardware version represented by a string. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_008', 0, function () { + console.info('testGetHardWareModel01 start'); + var ret = false; + var hardwareModelInfo = deviceinfo.hardwareModel; + console.info('the value of the deviceinfo hardwareModel is :' + hardwareModelInfo); + + expect(hardwareModelInfo).assertInstanceOf('String'); + if(hardwareModelInfo !="" && hardwareModelInfo != null && hardwareModelInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetHardWareModel01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0900 + * @tc.name testGetHardWareProfile01 + * @tc.desc Get the hardware profile represented by a string. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_009', 0, function () { + console.info('testGetHardWareProfile01 start'); + var ret = false; + var hardwareProfileInfo = deviceinfo.hardwareProfile; + console.info('the value of the deviceinfo hardwareProfile is :' + hardwareProfileInfo); + + expect(hardwareProfileInfo).assertInstanceOf('String'); + if(hardwareProfileInfo !="" && hardwareProfileInfo != null && hardwareProfileInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetHardWareProfile01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0110 + * @tc.name testGetSerial01 + * @tc.desc Get the device serial number represented by a string. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_010', 0, function () { + console.info('testGetSerial01 start'); + var ret = false; + var serialInfo = deviceinfo.serial; + console.info('the value of the deviceinfo serial is :' + serialInfo); + + expect(serialInfo).assertInstanceOf('String'); + if(serialInfo !="" && serialInfo != null && serialInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetSerial01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0120 + * @tc.name testGetBootLoaderVersion01 + * @tc.desc Get the bootloader version number represented by a string. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_011', 0, function () { + console.info('testGetBootLoaderVersion01 start'); + var ret = false; + var bootloaderVersionInfo = deviceinfo.bootloaderVersion; + console.info('the value of the deviceinfo bootloaderVersion is :' + bootloaderVersionInfo); + + expect(bootloaderVersionInfo).assertInstanceOf('String'); + if(bootloaderVersionInfo !="" && bootloaderVersionInfo != null && bootloaderVersionInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetBootLoaderVersion01 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0130 + * @tc.name testGetabiList01 + * @tc.desc Get the instruction set supported by the system. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_012', 0, function () { + console.info('testGetabiList01 start'); + var ret = false; + var abiListInfo = deviceinfo.abiList; + console.info('the value of the deviceinfo abiList is :' + abiListInfo); + + expect(abiListInfo).assertInstanceOf('String'); + if(abiListInfo !="" && abiListInfo != null && abiListInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetabiList01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0140 + * @tc.name testGetabiList01 + * @tc.desc Get the security patch level represented by a string. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_013', 0, function () { + console.info('testGetSecurityPatchTag01 start'); + var ret = false; + var securityPatchTagInfo = deviceinfo.securityPatchTag; + console.info('the value of the deviceinfo securityPatchTag is :' + securityPatchTagInfo); + + expect(securityPatchTagInfo).assertInstanceOf('String'); + if(securityPatchTagInfo !="" && securityPatchTagInfo != null && securityPatchTagInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetSecurityPatchTag01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0150 + * @tc.name testGetabiList01 + * @tc.desc Get the version number visible to users represented by a string. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_014', 0, function () { + console.info('testGetDisplayVersion01 start'); + var ret = false; + var displayVersionInfo = deviceinfo.displayVersion; + console.info('the value of the deviceinfo displayVersion is :' + displayVersionInfo); + + expect(displayVersionInfo).assertInstanceOf('String'); + if(displayVersionInfo !="" && displayVersionInfo != null && displayVersionInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetDisplayVersion01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0160 + * @tc.name testGetIncrementalVersion01 + * @tc.desc Get the difference version number represented by a string. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_015', 0, function () { + console.info('testGetIncrementalVersion01 start'); + var ret = false; + var incrementalVersionInfo = deviceinfo.incrementalVersion; + console.info('the value of the deviceinfo incrementalVersion is :' + incrementalVersionInfo); + + expect(incrementalVersionInfo).assertInstanceOf('String'); + if(incrementalVersionInfo !="" && incrementalVersionInfo != null && incrementalVersionInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetIncrementalVersion01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0170 + * @tc.name testGetOSReleaserType01 + * @tc.desc Get the OS release type. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_016', 0, function () { + console.info('testGetOSReleaserType01 start'); + var ret = false; + var osReleaseTypeInfo = deviceinfo.osReleaseType; + console.info('the value of the deviceinfo osReleaseType is :' + osReleaseTypeInfo); + + expect(osReleaseTypeInfo).assertInstanceOf('String'); + if(osReleaseTypeInfo !="" && osReleaseTypeInfo != null && osReleaseTypeInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetOSReleaserType01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0180 + * @tc.name testGetOSFullName01 + * @tc.desc Get the operating system full name. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_017', 0, function () { + console.info('testGetOSFullName01 start'); + var ret = false; + var osFullNameInfo = deviceinfo.osFullName; + console.info('the value of the deviceinfo osFullName is :' + osFullNameInfo); + + expect(osFullNameInfo).assertInstanceOf('String'); + if(osFullNameInfo !="" && osFullNameInfo != null && osFullNameInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetOSFullName01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0190 + * @tc.name testGetMajorVersion01 + * @tc.desc Get the major (M) version number, which increases with any updates to the overall architecture. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_018', 0, function () { + console.info('testGetMajorVersion01 start'); + var ret = false; + var majorVersionInfo = deviceinfo.majorVersion; + console.info('the value of the deviceinfo majorVersion is :' + majorVersionInfo); + + expect(majorVersionInfo).assertInstanceOf('Number'); + if(majorVersionInfo >= 0){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetMajorVersion01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0210 + * @tc.name testGetSeniorVersion01 + * @tc.desc Get the senior (S) version number, which increases with any updates to the partial. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_019', 0, function () { + console.info('testGetSeniorVersion01 start'); + var ret = false; + var seniorVersionInfo = deviceinfo.seniorVersion; + console.info('the value of the deviceinfo seniorVersion is :' + seniorVersionInfo); + + expect(seniorVersionInfo).assertInstanceOf('Number'); + if(seniorVersionInfo >= 0){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetSeniorVersion01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0220 + * @tc.name testGetFeatureVersion01 + * @tc.desc Get the feature (F) version number, which increases with any planned new features. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_020', 0, function () { + console.info('testGetFeatureVersion01 start'); + var ret = false; + var featureVersionInfo = deviceinfo.featureVersion; + console.info('the value of the deviceinfo featureVersion is :' + featureVersionInfo); + + expect(featureVersionInfo).assertInstanceOf('Number'); + if(featureVersionInfo >= 0){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetFeatureVersion01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0230 + * @tc.name testGetBuildVersion01 + * @tc.desc Get the build (B) version number, which increases with each new development build. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_021', 0, function () { + console.info('testGetBuildVersion01 start'); + var ret = false; + var buildVersionInfo = deviceinfo.buildVersion; + console.info('the value of the deviceinfo buildVersion is :' + buildVersionInfo); + + expect(buildVersionInfo).assertInstanceOf('Number'); + if(buildVersionInfo >= 0){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetBuildVersion01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0240 + * @tc.name testGetSdkApiVersion01 + * @tc.desc Get the API version number. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_022', 0, function () { + console.info('testGetSdkApiVersion01 start'); + var ret = false; + var sdkApiVersionInfo = deviceinfo.sdkApiVersion; + console.info('the value of the deviceinfo sdkApiVersion is :' + sdkApiVersionInfo); + + expect(sdkApiVersionInfo).assertInstanceOf('Number'); + if(sdkApiVersionInfo >= 0){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetSdkApiVersion01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0250 + * @tc.name testGetFirstApiVersion01 + * @tc.desc Get the first API version number. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_023', 0, function () { + console.info('testGetFirstApiVersion01 start'); + var ret = true; + var firstApiVersionInfo = deviceinfo.firstApiVersion; + console.info('the value of the deviceinfo firstApiVersion is :' + firstApiVersionInfo); + + expect(firstApiVersionInfo).assertInstanceOf('Number'); + if(firstApiVersionInfo >= 0){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetFirstApiVersion01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0260 + * @tc.name testGetVersionId01 + * @tc.desc Get the version ID number. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_024', 0, function () { + console.info('testGetVersionId01 start'); + var ret = false; + var versionIdInfo = deviceinfo.versionId; + console.info('the value of the deviceinfo versionId is :' + versionIdInfo); + + expect(versionIdInfo).assertInstanceOf('String'); + if(versionIdInfo !="" && versionIdInfo != null && versionIdInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetVersionId01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0270 + * @tc.name testGetBuildType01 + * @tc.desc Get the different build types of the same baseline code. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_025', 0, function () { + console.info('testGetBuildType01 start'); + var ret = false; + var buildTypeInfo = deviceinfo.buildType; + console.info('the value of the deviceinfo buildType is :' + buildTypeInfo); + + expect(buildTypeInfo).assertInstanceOf('String'); + if(buildTypeInfo !="" && buildTypeInfo != null && buildTypeInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetBuildType01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0280 + * @tc.name testGetBuildUser01 + * @tc.desc Get the different build user of the same baseline code. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_026', 0, function () { + console.info('testGetBuildUser01 start'); + var ret = true; + var buildUserInfo = deviceinfo.buildUser; + console.info('the value of the deviceinfo buildUser is :' + buildUserInfo); + + expect(buildUserInfo).assertInstanceOf('String'); + if(buildUserInfo !="" && buildUserInfo != null && buildUserInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetBuildUser01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0290 + * @tc.name testGetBuildHost01 + * @tc.desc Get the different build host of the same baseline code. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_027', 0, function () { + console.info('testGetBuildHost01 start'); + var ret = false; + var buildHostInfo = deviceinfo.buildHost; + console.info('the value of the deviceinfo buildHost is :' + buildHostInfo); + + expect(buildHostInfo).assertInstanceOf('String'); + if(buildHostInfo !="" && buildHostInfo != null && buildHostInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetBuildHost01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0310 + * @tc.name testGetBuildTime01 + * @tc.desc Get the the build time. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_028', 0, function () { + console.info('testGetBuildTime01 start'); + var ret = false; + var buildTimeInfo = deviceinfo.buildTime; + console.info('the value of the deviceinfo buildTime is :' + buildTimeInfo); + + expect(buildTimeInfo).assertInstanceOf('String'); + if(buildTimeInfo !="" && buildTimeInfo != null && buildTimeInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetBuildTime01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0320 + * @tc.name testGetBuildRootHash01 + * @tc.desc Get the version hash. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_029', 0, function () { + console.info('testGetBuildRootHash01 start'); + var ret = false; + var buildRootHashInfo = deviceinfo.buildRootHash; + console.info('the value of the deviceinfo buildRootHash is :' + buildRootHashInfo); + + expect(buildRootHashInfo).assertInstanceOf('String'); + if(buildRootHashInfo !="" && buildRootHashInfo != null && buildRootHashInfo != undefined){ + ret = true; + } + expect(ret).assertTrue(); + console.info('testGetBuildRootHash01 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0330 + * @tc.name testGetDeviceType02 + * @tc.desc Get a string representing the device type which has a maximum of 32 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_030', 0, function () { + console.info('device_info_test_030 start'); + var deviceTypeInfo = deviceinfo.deviceType; + console.info('the value of the deviceinfo deviceType is:' + deviceTypeInfo); + + let len = deviceTypeInfo.length + + console.info('the value of the device type characters:' + len); + expect(len).assertLess(33) + console.info('device_info_test_030 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0340 + * @tc.name testGetManufacture02 + * @tc.desc Get a string representing the manufacture which has a maximum of 32 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_031', 0, function () { + console.info('device_info_test_031 start'); + var manufactureInfo = deviceinfo.manufacture; + console.info('the value of the deviceinfo manufacture is :' + manufactureInfo); + + let len = manufactureInfo.length + console.info('the value of the manufacture characters is :' + len); + expect(len).assertLess(33) + console.info('device_info_test_031 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0350 + * @tc.name testGetProductBrand02 + * @tc.desc Get a string representing the external product family name which has a maximum of 32 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_032', 0, function () { + console.info('device_info_test_032 start'); + var brandInfo = deviceinfo.brand; + console.info('the value of the deviceinfo brand is :' + brandInfo); + + let len = brandInfo.length + console.info('the value of the external product family name characters is :' + len); + expect(len).assertLess(33) + console.info('device_info_test_032 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0360 + * @tc.name testGetMarketName02 + * @tc.desc Get a string representing the product series which has a maximum of 32 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_033', 0, function () { + console.info('device_info_test_033 start'); + var marketNameInfo = deviceinfo.marketName; + console.info('the value of the deviceinfo marketName is :' + marketNameInfo); + + let len = marketNameInfo.length + console.info('the value of the product series characters is :' + len); + expect(len).assertLess(32) + console.info('device_info_test_033 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0370 + * @tc.name testGetProductSeries02 + * @tc.desc Get a string representing the product series which has a maximum of 32 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_034', 0, function () { + console.info('device_info_test_034 start'); + var productSeriesInfo = deviceinfo.productSeries; + console.info('the value of the deviceinfo productSeries is :' + productSeriesInfo); + + let len = productSeriesInfo.length + console.info('the value of the product series characters is :' + len); + expect(len).assertLess(33) + console.info('device_info_test_034 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0380 + * @tc.name testGetProductModel02 + * @tc.desc Get a string representing the certified model which has a maximum of 32 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_035', 0, function () { + console.info('device_info_test_035 start'); + var productModelInfo = deviceinfo.productModel; + console.info('the value of the deviceinfo productModel is :' + productModelInfo); + + let len = productModelInfo.length + console.info('the value of the certified model characters is :' + len); + expect(len).assertLess(33) + console.info('device_info_test_035 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0390 + * @tc.name testGetSoftwareModel02 + * @tc.desc Get a string representing the internal software sub-model which has a maximum of 32 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_036', 0, function () { + console.info('device_info_test_036 start'); + var softwareModelInfo = deviceinfo.softwareModel; + console.info('the value of the deviceinfo softwareModel is :' + softwareModelInfo); + + let len = softwareModelInfo.length + console.info('the value of the internal software sub-model characters is :' + len); + expect(len).assertLess(33) + console.info('device_info_test_036 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0410 + * @tc.name testGetHardwareModel02 + * @tc.desc Get a string representing the hardware version which has a maximum of 32 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_037', 0, function () { + console.info('device_info_test_037 start'); + var hardwareModelInfo = deviceinfo.hardwareModel; + console.info('the value of the deviceinfo hardwareModel is :' + hardwareModelInfo); + + let len = hardwareModelInfo.length; + console.info('the value of the hardware version characters is :' + len); + expect(len).assertLess(33) + console.info('device_info_test_037 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0420 + * @tc.name testGetHardwareProfile02 + * @tc.desc Get a string representing the hardware version which has a maximum of 1000 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_038', 0, function () { + console.info('device_info_test_038 start'); + var hardwareProfileInfo = deviceinfo.hardwareProfile; + console.info('the value of the deviceinfo hardwareProfile is :' + hardwareProfileInfo); + + let len = hardwareProfileInfo.length; + console.info('the value of the hardware version characters is :' + len); + expect(len).assertLess(1001); + console.info('device_info_test_038 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0430 + * @tc.name testGetSerial02 + * @tc.desc Get a string representing the device serial number which has a maximum of 64 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_039', 0, function () { + console.info('device_info_test_039 start'); + var serialInfo = deviceinfo.serial; + console.info('the value of the deviceinfo serial is :' + serialInfo); + + let len = serialInfo.length; + console.info('the value of the device serial number characters is :' + len); + expect(len).assertLess(65); + console.info('device_info_test_039 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0440 + * @tc.name testGetDisplayVersion02 + * @tc.desc Get a string representing the version number visible to users which has a maximum of 64 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_040', 0, function () { + console.info('device_info_test_040 start'); + var displayVersionInfo = deviceinfo.displayVersion; + console.info('the value of the deviceinfo displayVersion is :' + displayVersionInfo); + + let len = displayVersionInfo.length; + console.info('the value of the device serial number characters is :' + len); + expect(len).assertLess(65); + console.info('device_info_test_040 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0450 + * @tc.name testGetOsFullName02 + * @tc.desc Get a string representing the operating system full name which has a maximum of 32 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_041', 0, function () { + console.info('device_info_test_041 start'); + var osFullNameInfo = deviceinfo.osFullName; + console.info('the value of the deviceinfo osFullName is :' + osFullNameInfo); + + let len = osFullNameInfo.length; + console.info('the value of the operating system full name characters is :' + len); + expect(len).assertLess(32); + console.info('device_info_test_041 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0460 + * @tc.name testGetVersionId02 + * @tc.desc Get a string representing the operating system full name which has a maximum of 127 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_042', 0, function () { + console.info('device_info_test_042 start'); + var versionIdInfo = deviceinfo.versionId; + console.info('the value of the deviceinfo versionId is :' + versionIdInfo); + + let len = versionIdInfo.length; + console.info('the value of the operating system full name characters is :' + len) + expect(len).assertLess(128); + console.info('device_info_test_042 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0470 + * @tc.name testGetBuildUser02 + * @tc.desc Get a string representing the different build user of the same baseline code which has a maximum of 32 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_043', 0, function () { + console.info('device_info_test_043 start'); + var buildUserInfo = deviceinfo.buildUser; + console.info('the value of the deviceinfo buildUser is :' + buildUserInfo); + + console.info('the value of the different build user of the same baseline code characters is :' + buildUserInfo.length); + expect(buildUserInfo.length).assertLess(33) + console.info('device_info_test_043 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0480 + * @tc.name testGetBuildHost02 + * @tc.desc Get a string representing the different build host of the same baseline code which has a maximum of 32 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_044', 0, function () { + console.info('device_info_test_044 start'); + var buildHostInfo = deviceinfo.buildHost; + console.info('the value of the deviceinfo buildHost is :' + buildHostInfo); + + let len = buildHostInfo.length + console.info('the value of the different build host of the same baseline code characters is :' + len) + expect(len).assertLess(33) + console.info('device_info_test_044 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0490 + * @tc.name testGetDeviceType03 + * @tc.desc Get a string representing the device type which has at least one characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_045', 0, function () { + console.info('device_info_test_045 start'); + var deviceTypeInfo = deviceinfo.deviceType; + console.info('the value of the deviceinfo deviceType is :' + deviceTypeInfo); + + let len = deviceTypeInfo.length; + console.info('the value of the device type characters:' + len); + expect(len).assertLarger(0); + console.info('device_info_test_045 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0510 + * @tc.name testGetManufacture03 + * @tc.desc Get a string representing the manufacture which has at least one characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_046', 0, function () { + console.info('device_info_test_046 start'); + var manufactureInfo = deviceinfo.manufacture; + console.info('the value of the deviceinfo manufacture is :' + manufactureInfo); + + let len = manufactureInfo.length + console.info('the value of the manufacture characters is :' + len) + expect(len).assertLarger(0) + console.info('device_info_test_046 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0520 + * @tc.name testGetProductBrand03 + * @tc.desc Get a string representing the external product family name which has at least one characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_047', 0, function () { + console.info('device_info_test_047 start'); + var brandInfo = deviceinfo.brand; + console.info('the value of the deviceinfo brand is :' + brandInfo); + + let len = brandInfo.length; + console.info('the value of the external product family name characters is :' + len); + expect(len).assertLarger(0); + console.info('device_info_test_047 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0530 + * @tc.name testGetMarketName03 + * @tc.desc Get a string representing the product series which has at least one characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_048', 0, function () { + console.info('device_info_test_048 start'); + var marketNameInfo = deviceinfo.marketName; + console.info('the value of the deviceinfo marketName is :' + marketNameInfo); + + let len = marketNameInfo.length; + console.info('the value of the product series characters is :' + len) + expect(len).assertLarger(0); + console.info('device_info_test_048 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0540 + * @tc.name testGetProductSeries03 + * @tc.desc Get a string representing the product series which has at least one characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_049', 0, function () { + console.info('device_info_test_049 start'); + var productSeriesInfo = deviceinfo.productSeries; + console.info('the value of the deviceinfo productSeries is :' + productSeriesInfo); + + let len = productSeriesInfo.length; + console.info('the value of the product series characters is :' + len); + expect(len).assertLarger(0); + console.info('device_info_test_049 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0550 + * @tc.name testGetProductModel03 + * @tc.desc Get a string representing the certified model which has at least one characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_050', 0, function () { + console.info('device_info_test_050 start'); + var productModelInfo = deviceinfo.productModel; + console.info('the value of the deviceinfo productModel is :' + productModelInfo); + + let len = productModelInfo.length + console.info('the value of the certified model characters is :' + len) + expect(len).assertLarger(0) + console.info('device_info_test_050 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0560 + * @tc.name testGetSoftwareModel03 + * @tc.desc Get a string representing the internal software sub-model which has at least one characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_051', 0, function () { + console.info('device_info_test_036 start'); + var softwareModelInfo = deviceinfo.softwareModel; + console.info('the value of the deviceinfo softwareModel is :' + softwareModelInfo); + + let len = softwareModelInfo.length + console.info('the value of the internal software sub-model characters is :' + len) + expect(len).assertLarger(0) + console.info('device_info_test_036 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0570 + * @tc.name testGetHardwareModel03 + * @tc.desc Get a string representing the hardware version which has at least one characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_052', 0, function () { + console.info('device_info_test_052 start'); + var hardwareModelInfo = deviceinfo.hardwareModel; + console.info('the value of the deviceinfo hardwareModel is :' + hardwareModelInfo); + + let len = hardwareModelInfo.length; + console.info('the value of the hardware version characters is :' + len); + expect(len).assertLarger(0); + console.info('device_info_test_052 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0580 + * @tc.name testGetHardwareProfile03 + * @tc.desc Get a string representing the hardware version which has at least one characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_053', 0, function () { + console.info('device_info_test_053 start'); + var hardwareProfileInfo = deviceinfo.hardwareProfile; + console.info('the value of the deviceinfo hardwareProfile is :' + hardwareProfileInfo); + + let len = hardwareProfileInfo.length; + console.info('the value of the hardware version characters is :' + len); + expect(len).assertLarger(0); + console.info('device_info_test_053 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0590 + * @tc.name testGetSerial03 + * @tc.desc Get a string representing the device serial number which has at least one characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_054', 0, function () { + console.info('device_info_test_054 start'); + var serialInfo = deviceinfo.serial; + console.info('the value of the deviceinfo serial is :' + serialInfo); + + let len = serialInfo.length; + console.info('the value of the device serial number characters is :' + len); + expect(len).assertLarger(0); + console.info('device_info_test_054 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0610 + * @tc.name testGetDisplayVersion03 + * @tc.desc Get a string representing the version number visible to users which has at least one characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_055', 0, function () { + console.info('device_info_test_055 start'); + var displayVersionInfo = deviceinfo.displayVersion; + console.info('the value of the deviceinfo displayVersion is :' + displayVersionInfo); + + let len = displayVersionInfo.length; + console.info('the value of the device serial number characters is :' + len); + expect(len).assertLarger(0); + console.info('device_info_test_055 :end'); + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0620 + * @tc.name testGetIncrementalVersionInfo02 + * @tc.desc Get a string representing the version number visible to users which has a maximum of 32 characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_056', 0, function () { + console.info('device_info_test_056 start'); + var incrementalVersionInfo = deviceinfo.incrementalVersion; + console.info('the value of the deviceinfo incrementalVersion is :' + incrementalVersionInfo); + + let len = incrementalVersionInfo.length + console.info('the value of the device serial number characters is :' + len) + expect(len).assertLess(32) + console.info('device_info_test_056 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0630 + * @tc.name testGetIncrementalVersionInfo03 + * @tc.desc Get a string representing the version number visible to users which has at least one characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_057', 0, function () { + console.info('device_info_test_057 start'); + var incrementalVersionInfo = deviceinfo.incrementalVersion; + console.info('the value of the deviceinfo incrementalVersion is :' + incrementalVersionInfo); + + let len = incrementalVersionInfo.length + console.info('the value of the device serial number characters is :' + len) + expect(len).assertLarger(0) + console.info('device_info_test_057 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0640 + * @tc.name testGetVersionId03 + * @tc.desc Get a string representing the operating system full name which has at least one characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_058', 0, function () { + console.info('device_info_test_058 start'); + var versionIdInfo = deviceinfo.versionId; + console.info('the value of the deviceinfo versionId is :' + versionIdInfo); + + let len = versionIdInfo.length + console.info('the value of the operating system full name characters is :' + len) + expect(len).assertLarger(0) + console.info('device_info_test_058 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0650 + * @tc.name testGetBuildUser03 + * @tc.desc Get a string representing the different build user of the same baseline code which has at least one characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_059', 0, function () { + console.info('device_info_test_043 start'); + var buildUserInfo = deviceinfo.buildUser; + console.info('the value of thebuildUser is :' + buildUserInfo); + + console.info('the value of the different build user of the same baseline code characters is :' + buildUserInfo.length); + expect(buildUserInfo.length).assertLarger(0) + console.info('device_info_test_059 :end') + }) + + /** + * @tc.number SUB_STARTUP_JS_DEVCEINFO_0660 + * @tc.name testGetBuildHost03 + * @tc.desc Get a string representing the different build host of the same baseline code which has at least one characters. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('device_info_test_060', 0, function () { + console.info('device_info_test_060 start'); + var buildHostInfo = deviceinfo.buildHost; + console.info('the value of the deviceinfo buildHost is :' + buildHostInfo); + + let len = buildHostInfo.length + console.info('the value of the different build host of the same baseline code characters is :' + len); + expect(len).assertLarger(0); + console.info('device_info_test_060 :end'); + }) +}) + diff --git a/startup/startup_standard/entry/src/main/js/test/List.test.js b/startup/startup_standard/src/main/js/default/test/List.test.js old mode 100755 new mode 100644 similarity index 97% rename from startup/startup_standard/entry/src/main/js/test/List.test.js rename to startup/startup_standard/src/main/js/default/test/List.test.js index c386d919b..191c0a0fd --- a/startup/startup_standard/entry/src/main/js/test/List.test.js +++ b/startup/startup_standard/src/main/js/default/test/List.test.js @@ -1,20 +1,20 @@ -/* - * Copyright (C) 2021 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. - */ - -require('./DeviceInfoJsUnit.test.js') -require('./ParametersJsUnit.test.js') - - - +/* + * Copyright (C) 2021 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. + */ + +require('./DeviceInfoJsUnit.test.js') +require('./ParametersJsUnit.test.js') + + + diff --git a/startup/startup_standard/entry/src/main/js/test/ParametersJsUnit.test.js b/startup/startup_standard/src/main/js/default/test/ParametersJsUnit.test.js old mode 100755 new mode 100644 similarity index 97% rename from startup/startup_standard/entry/src/main/js/test/ParametersJsUnit.test.js rename to startup/startup_standard/src/main/js/default/test/ParametersJsUnit.test.js index 9f45a8e7b..ac7fd4689 --- a/startup/startup_standard/entry/src/main/js/test/ParametersJsUnit.test.js +++ b/startup/startup_standard/src/main/js/default/test/ParametersJsUnit.test.js @@ -1,235 +1,235 @@ -/* - * Copyright (C) 2021 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. - */ - -// @ts-nocheck -import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' -import systemparameter from '@ohos.systemParameter' - -describe('SystemParameterTest', function () { - console.info('SystemParameterTest start################################start'); - /** - * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0100 - * @tc.name testSet01 - * @tc.desc Set the value for the given key with parameter callback. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('system_parameter_test_001', 0, async function (done) { - console.info('system_parameter_test_001 start'); - var ret = false; - try { - systemparameter.set("hw_sc.build.os.version", "10.20.30.4", function (err, data) { - if (err == undefined) { - ret = true; - console.info("set callback hw_sc.build.os.version value success :" + data); - } else { - console.info("set callback hw_sc.build.os.version value err:" + err.code); - } - }); - done(); - }catch(e){ - console.info("set callback hw_sc.build.os.version unexpect err:" + e); - } - setTimeout("expect(ret).assertTrue()", "10"); - console.info('system_parameter_test_001 : PASS'); - }) - - /** - * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0200 - * @tc.name testSet02 - * @tc.desc Set the value for the given key. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('system_parameter_test_002', 0, async function (done) { - console.info('system_parameter_test_002 start'); - var ret = false; - try { - systemparameter.set("ro.secure", "10.20.30.4", function (err, data) { - if (err == undefined) { - console.info("set callback ro.secure value success:" + data) - } else { - ret = true; - console.info("set callback ro.secure value err:" + err.code) - } - - }); - done(); - }catch(e){ - console.info("set callback ro.secure unexpect err:" + e) - } - setTimeout("expect(ret).assertTrue()", "10"); - console.info('system_parameter_test_002 : PASS'); - }) - - /** - * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0300 - * @tc.name testSet03 - * @tc.desc Set the value for the given key. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('system_parameter_test_003', 0, async function (done) { - console.info('system_parameter_test_003 start'); - var parameterInfo = systemparameter.set("hw_sc.build.os.version", "1.5.3.6"); - var ret = false; - try { - parameterInfo.then(function (value) { - console.info("promise set hw_sc.build.os.version success: " + value); - }).catch(function (err) { - console.info("promise set hw_sc.build.os.version error: " + err.code); - }); - done(); - }catch(e){ - console.info("set callback hw_sc.build.os.version unexpect err:" + e) - } - if (parameterInfo !== null) { - ret = true; - } - expect(ret).assertTrue(); - console.info('system_parameter_test_003 : PASS'); - }) - - /** - * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0400 - * @tc.name testSet04 - * @tc.desc Set the value for the given key. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('system_parameter_test_004', 0, async function (done) { - console.info('system_parameter_test_004 start'); - var parameterInfo = systemparameter.set("ro.secure", "10"); - var ret = false; - try { - parameterInfo.then(function (value) { - console.info("12333 promise set ro.secure success: " + value); - }).catch(function (err) { - console.info("12333 promise set ro.secure error: " + err.code); - }); - done(); - }catch(e){ - console.info("set callback ro.secure unexpect err:" + e) - } - if (parameterInfo !== null) { - ret = true; - } - expect(ret).assertTrue(); - console.info('system_parameter_test_004 :PASS'); - }) - - /** - * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0500 - * @tc.name testSetSync01 - * @tc.desc Set the value for the given key. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('system_parameter_test_005', 0, function () { - console.info('system_parameter_test_005 start'); - var ret = false; - try { - var parameterInfo = systemparameter.setSync("hw_sc.build.os.version", "2.5.3.7"); - console.info("promise setSync ro.secure success: " + parameterInfo); - ret = true; - }catch(e){ - console.info("promise setSync ro.secure error: " + e); - } - expect(ret).assertTrue(); - console.info('system_parameter_test_005 : PASS'); - }) - - /** - * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0600 - * @tc.name testSetSync02 - * @tc.desc Set the value for the given key. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('system_parameter_test_006', 0, function () { - console.info('system_parameter_test_006 start'); - var ret = false; - try { - var parameterInfo = systemparameter.setSync("hw_sc.build.os.version", 56789); - console.info("promise setSync ro.secure success: " + parameterInfo); - }catch(e){ - ret = true; - console.info("promise setSync ro.secure error: " + e); - } - expect(ret).assertTrue(); - console.info('system_parameter_test_006 : PASS'); - }) - - /** - * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0800 - * @tc.name testGet02 - * @tc.desc Set the value for the given key. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('system_parameter_test_008', 0, async function (done) { - console.info('system_parameter_test_008 start'); - var ret = false; - try { - var parameterInfo = systemparameter.get("hw_sc.build.os.version"); - - parameterInfo.then(function (value) { - ret = true; - console.info("promise get hw_sc.build.os.version success: " + value); - }).catch(function (err) { - console.info("promise get hw_sc.build.os.version error: " + err.code); - }); - done(); - }catch(e){ - console.info("promise setSync ro.secure error: " + e); - } - setTimeout("expect(ret).assertTrue()", "10"); - console.info('system_parameter_test_008 : PASS'); - }) - - /** - * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0150 - * @tc.name testGetSync01 - * @tc.desc Gets the value of the attribute with the specified key. - * @tc.size : MEDIUM - * @tc.type : Function - * @tc.level : Level 0 - */ - it('system_parameter_test_014', 0, async function (done) { - console.info('system_parameter_test_014 start'); - var ret = false; - try { - var parameterInfo = systemparameter.getSync("hw_sc.build.os.version", 496); - parameterInfo.then(function (value) { - console.info("496 promise get hw_sc.build.os.version success: " + value); - }).catch(function (err) { - console.info("496 promise get hw_sc.build.os.version error: " + err.code); - }); - done(); - } catch (e) { - ret = true; - console.info("promise get input error: " + e); - } - expect(ret).assertTrue(); - console.info('system_parameter_test_014 : PASS'); - }) +/* + * Copyright (C) 2021 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. + */ + +// @ts-nocheck +import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' +import systemparameter from '@ohos.systemParameter' + +describe('SystemParameterTest', function () { + console.info('SystemParameterTest start################################start'); + /** + * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0100 + * @tc.name testSet01 + * @tc.desc Set the value for the given key with parameter callback. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('system_parameter_test_001', 0, async function (done) { + console.info('system_parameter_test_001 start'); + var ret = false; + try { + systemparameter.set("hw_sc.build.os.version", "10.20.30.4", function (err, data) { + if (err == undefined) { + ret = true; + console.info("set callback hw_sc.build.os.version value success :" + data); + } else { + console.info("set callback hw_sc.build.os.version value err:" + err.code); + } + }); + done(); + }catch(e){ + console.info("set callback hw_sc.build.os.version unexpect err:" + e); + } + setTimeout("expect(ret).assertTrue()", "10"); + console.info('system_parameter_test_001 : PASS'); + }) + + /** + * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0200 + * @tc.name testSet02 + * @tc.desc Set the value for the given key. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('system_parameter_test_002', 0, async function (done) { + console.info('system_parameter_test_002 start'); + var ret = false; + try { + systemparameter.set("ro.secure", "10.20.30.4", function (err, data) { + if (err == undefined) { + console.info("set callback ro.secure value success:" + data) + } else { + ret = true; + console.info("set callback ro.secure value err:" + err.code) + } + + }); + done(); + }catch(e){ + console.info("set callback ro.secure unexpect err:" + e) + } + setTimeout("expect(ret).assertTrue()", "10"); + console.info('system_parameter_test_002 : PASS'); + }) + + /** + * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0300 + * @tc.name testSet03 + * @tc.desc Set the value for the given key. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('system_parameter_test_003', 0, async function (done) { + console.info('system_parameter_test_003 start'); + var parameterInfo = systemparameter.set("hw_sc.build.os.version", "1.5.3.6"); + var ret = false; + try { + parameterInfo.then(function (value) { + console.info("promise set hw_sc.build.os.version success: " + value); + }).catch(function (err) { + console.info("promise set hw_sc.build.os.version error: " + err.code); + }); + done(); + }catch(e){ + console.info("set callback hw_sc.build.os.version unexpect err:" + e) + } + if (parameterInfo !== null) { + ret = true; + } + expect(ret).assertTrue(); + console.info('system_parameter_test_003 : PASS'); + }) + + /** + * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0400 + * @tc.name testSet04 + * @tc.desc Set the value for the given key. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('system_parameter_test_004', 0, async function (done) { + console.info('system_parameter_test_004 start'); + var parameterInfo = systemparameter.set("ro.secure", "10"); + var ret = false; + try { + parameterInfo.then(function (value) { + console.info("12333 promise set ro.secure success: " + value); + }).catch(function (err) { + console.info("12333 promise set ro.secure error: " + err.code); + }); + done(); + }catch(e){ + console.info("set callback ro.secure unexpect err:" + e) + } + if (parameterInfo !== null) { + ret = true; + } + expect(ret).assertTrue(); + console.info('system_parameter_test_004 :PASS'); + }) + + /** + * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0500 + * @tc.name testSetSync01 + * @tc.desc Set the value for the given key. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('system_parameter_test_005', 0, function () { + console.info('system_parameter_test_005 start'); + var ret = false; + try { + var parameterInfo = systemparameter.setSync("hw_sc.build.os.version", "2.5.3.7"); + console.info("promise setSync ro.secure success: " + parameterInfo); + ret = true; + }catch(e){ + console.info("promise setSync ro.secure error: " + e); + } + expect(ret).assertTrue(); + console.info('system_parameter_test_005 : PASS'); + }) + + /** + * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0600 + * @tc.name testSetSync02 + * @tc.desc Set the value for the given key. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('system_parameter_test_006', 0, function () { + console.info('system_parameter_test_006 start'); + var ret = false; + try { + var parameterInfo = systemparameter.setSync("hw_sc.build.os.version", 56789); + console.info("promise setSync ro.secure success: " + parameterInfo); + }catch(e){ + ret = true; + console.info("promise setSync ro.secure error: " + e); + } + expect(ret).assertTrue(); + console.info('system_parameter_test_006 : PASS'); + }) + + /** + * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0800 + * @tc.name testGet02 + * @tc.desc Set the value for the given key. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('system_parameter_test_008', 0, async function (done) { + console.info('system_parameter_test_008 start'); + var ret = false; + try { + var parameterInfo = systemparameter.get("hw_sc.build.os.version"); + + parameterInfo.then(function (value) { + ret = true; + console.info("promise get hw_sc.build.os.version success: " + value); + }).catch(function (err) { + console.info("promise get hw_sc.build.os.version error: " + err.code); + }); + done(); + }catch(e){ + console.info("promise setSync ro.secure error: " + e); + } + setTimeout("expect(ret).assertTrue()", "10"); + console.info('system_parameter_test_008 : PASS'); + }) + + /** + * @tc.number SUB_STARTUP_JS_SYSTEM_PARAMETER_0150 + * @tc.name testGetSync01 + * @tc.desc Gets the value of the attribute with the specified key. + * @tc.size : MEDIUM + * @tc.type : Function + * @tc.level : Level 0 + */ + it('system_parameter_test_014', 0, async function (done) { + console.info('system_parameter_test_014 start'); + var ret = false; + try { + var parameterInfo = systemparameter.getSync("hw_sc.build.os.version", 496); + parameterInfo.then(function (value) { + console.info("496 promise get hw_sc.build.os.version success: " + value); + }).catch(function (err) { + console.info("496 promise get hw_sc.build.os.version error: " + err.code); + }); + done(); + } catch (e) { + ret = true; + console.info("promise get input error: " + e); + } + expect(ret).assertTrue(); + console.info('system_parameter_test_014 : PASS'); + }) }) \ No newline at end of file diff --git a/startup/startup_standard/src/main/resources/base/element/string.json b/startup/startup_standard/src/main/resources/base/element/string.json new file mode 100644 index 000000000..a5239a2b3 --- /dev/null +++ b/startup/startup_standard/src/main/resources/base/element/string.json @@ -0,0 +1,12 @@ +{ + "string": [ + { + "name": "app_name", + "value": "StartupJSApiTest" + }, + { + "name": "mainability_description", + "value": "JS_Phone_Empty Feature Ability" + } + ] +} \ No newline at end of file diff --git a/startup/startup_standard/src/main/resources/base/media/icon.png b/startup/startup_standard/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c GIT binary patch literal 6790 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