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