1/* 2 * Copyright (C) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http:// www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import { describe, it, expect } from '@ohos/hypium'; 17import { Driver, ON } from '@ohos.UiTest'; 18import display from '@ohos.display' 19 20async function asyncTest() { 21 return 1; 22} 23 24class TestClass { 25 async asyncFunction() { 26 return 2; 27 } 28} 29 30export default function softwareJsTest() { 31 describe('SoftwareJsTest', function () { 32 33 /* 34 * @tc.number: STD-SOFTWARE-0200 35 * @tc.name: testJsAsyncAwait0100 36 * @tc.desc: 【STD-SOFTWARE-0200】为了方便应用的书写,JS 运行时必须支持 ES2017 中的async/await 特性 37 * @tc.size: MediumTest 38 * @tc.type: Function 39 * @tc.level: Level 0 40 */ 41 it('testJsAsyncAwait0100', 0, async function (done) { 42 let res1 = await asyncTest() 43 expect(res1).assertEqual(1) 44 let testClass = new TestClass() 45 let res2 = await testClass.asyncFunction() 46 expect(res2).assertEqual(2) 47 done() 48 }) 49 50 /* 51 * @tc.number: G-SOFTWARE-0301 52 * @tc.name: testJsES50100 53 * @tc.desc: 【G-SOFTWARE-0301】JS 运行时支持 ES5、ES6 语法规范 54 * @tc.size: MediumTest 55 * @tc.type: Function 56 * @tc.level: Level 0 57 */ 58 it('testJsES50100', 0, async function (done) { 59 // ES5 60 var array = [1, 2, 3, 4, 5, 6] 61 expect(Array.isArray(array)).assertTrue() 62 var arraymap = array.map(function (value) { 63 return value -= 1 64 }) 65 arraymap.forEach(function (index, value) { 66 expect(value).assertEqual(index) 67 }) 68 var arrayfilter = array.filter(function (item) { 69 return item < 4 70 }) 71 expect(arrayfilter.length).assertEqual(3) 72 var sum = array.reduce(function (sum, value) { 73 return sum + value; 74 }, 0) 75 expect(sum).assertEqual(21) 76 var res1 = array.every(function (value) { 77 return value < 4 78 }) 79 expect(res1).assertFalse() 80 var res2 = array.some(function (value) { 81 return value < 4 82 }) 83 expect(res2).assertTrue() 84 expect(array.indexOf(2)).assertEqual(1) 85 expect(array.lastIndexOf(5)).assertEqual(4) 86 var jsonObj = { 87 "str": "str", "num": 0 88 } 89 var jsonStr = JSON.stringify(jsonObj) 90 expect(jsonStr).assertEqual('{"str":"str","num":0}') 91 var jsonObj2 = JSON.parse(jsonStr) 92 var str = " test " 93 expect(str.trim()).assertEqual("test") 94 var obj = { 95 a: 1, b: 2, c: 3 96 } 97 expect(Object.keys(obj).toString()).assertEqual("a,b,c") 98 expect(Object.values(obj).toString()).assertEqual("1,2,3") 99 Object.defineProperty(obj, "c", { 100 writable: false, 101 value: 4, 102 }) 103 expect(obj.c).assertEqual(4) 104 done() 105 }) 106 107 /* 108 * @tc.number: G-SOFTWARE-0301 109 * @tc.name: testJsES60100 110 * @tc.desc: 【G-SOFTWARE-0301】JS 运行时支持 ES5、ES6 语法规范 111 * @tc.size: MediumTest 112 * @tc.type: Function 113 * @tc.level: Level 0 114 */ 115 it('testJsES60100', 0, async function (done) { 116 const num1 = 1 117 let num2 = 1 118 expect(num1).assertEqual(num2) 119 const sumFunc = (num1, num2) => num1 + num2 120 console.log("sssss %d", sumFunc(num1, num2)) 121 expect(sumFunc(num1, num2)).assertEqual(2) 122 expect(`num1 = ${num1}`).assertEqual("num1 = 1") 123 var obj = { 124 a: 1, b: 2, c: 3 125 } 126 var { a, b, c } = obj 127 expect(a).assertEqual(1) 128 var array1 = [1, 2, 3] 129 var array2 = [4, 5, 6] 130 var array3 = [...array1, ...array2] 131 expect(array3.length).assertEqual(6) 132 var i = 1 133 for (const num of array1) { 134 expect(num).assertEqual(i) 135 i++ 136 } 137 expect(array1.includes(1)).assertTrue() 138 var map = new Map([['a', 1], ['b', 2], ['c', 3]]) 139 expect(map.get('a')).assertEqual(1) 140 const set = new Set([1, 2, 3]) 141 expect(set.has(1)).assertTrue() 142 var obj1 = { a: 1 } 143 var obj2 = { b: 2 } 144 var obj3 = Object.assign({}, obj1, obj2) 145 expect(obj3.a).assertEqual(1) 146 expect(obj3.b).assertEqual(2) 147 done() 148 }) 149 150 /* 151 * @tc.number: G-SOFTWARE-0302 152 * @tc.name: testJsStrictMode0100 153 * @tc.desc: 【G-SOFTWARE-0302】JS 运行时环境必须运行在严格模式 154 * @tc.size: MediumTest 155 * @tc.type: Function 156 * @tc.level: Level 0 157 */ 158 it('testJsStrictMode0100', 0, async function (done) { 159 expect(this).assertUndefined() 160 done() 161 }) 162 163 /* 164 * @tc.number: G-SOFTWARE-0603 165 * @tc.name: testWeblikeAccessPath0100 166 * @tc.desc: 【G-SOFTWARE-0603】类 web 范式限制应用访问的绝对路径应统一用"/"开头、相对路径统一用"./"或"../"开头 167 * @tc.size: MediumTest 168 * @tc.type: Function 169 * @tc.level: Level 0 170 */ 171 it('testWeblikeAccessPath0100', 0, async function (done) { 172 let driver = Driver.create() 173 await driver.delayMs(2000) 174 let text1 = await driver.findComponent(ON.id('absolutionPathImageCompleted')) 175 expect(text1 != undefined).assertTrue() 176 expect(await text1.getText()).assertEqual('AbsolutionPathSuccess') 177 let text2 = await driver.findComponent(ON.id('relativePathImageCompleted1')) 178 expect(text2 != undefined).assertTrue() 179 expect(await text2.getText()).assertEqual('RelativePath1Success') 180 let text3 = await driver.findComponent(ON.id('relativePathImageCompleted2')) 181 expect(text3 != undefined).assertTrue() 182 expect(await text3.getText()).assertEqual('RelativePath2Success') 183 let text4 = await driver.findComponent(ON.id('relativePathImageCompleted3')) 184 expect(text4 != undefined).assertTrue() 185 expect(await text4.getText()).assertEqual('RelativePath3Fail') 186 done() 187 }) 188 189 /* 190 * @tc.number: G-SOFTWARE-0604 191 * @tc.name: testWeblikePrivateDirectoryPath0100 192 * @tc.desc: 【G-SOFTWARE-0604】类 web 范式限制应用私有目录的路径前缀应为 internal://app/, 193 * 仅本应用可见,随应用卸载删除 194 * @tc.size: MediumTest 195 * @tc.type: Function 196 * @tc.level: Level 0 197 */ 198 it('testWeblikePrivateDirectoryPath0100', 0, async function (done) { 199 let driver = Driver.create() 200 await driver.delayMs(5000) 201 let text = await driver.findComponent(ON.id('fileText1')) 202 expect(text != undefined).assertTrue() 203 expect(await text.getText()).assertEqual('test text') 204 done() 205 }) 206 }) 207} 208