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