1/* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16/* 17 * @tc.name:container 18 * @tc.desc:test container 19 * @tc.type: FUNC 20 * @tc.require: issueI5NO8G 21 */ 22var arrayList = undefined; 23if (globalThis["ArkPrivate"] != undefined) { 24 arrayList = ArkPrivate.Load(ArkPrivate.ArrayList); 25 let arr = new arrayList(); 26 arr.add(1); 27 arr.add(2); 28 29 let map = new Map(); 30 let flag1 = false; 31 try { 32 arr["aa"] = 3; 33 } catch (e) { 34 flag1 = true; 35 } 36 map.set("flag1", flag1); 37 38 let flag2 = true; 39 for (let i = 0; i < arr.length; i++) { 40 if (arr[i] != (i + 1)) { 41 flag2 = false; 42 break; 43 } 44 } 45 map.set("flag2", flag2); 46 47 let arr1 = new arrayList(); 48 let proxy = new Proxy(arr1, {}); 49 let testArray = [] 50 let res = true 51 for(let i = 0; i < 10; i++) { 52 proxy.add(i) 53 testArray.push(i) 54 } 55 56 for(let i = 0; i < testArray.length; i++) { 57 if (proxy[i] !== testArray[i]) { 58 res = false 59 } 60 } 61 map.set("test arraylist add:", res) 62 63 map.set("test arraylist has:", proxy.has(2)) 64 map.set("test arraylist getCapacity:", proxy.getCapacity() === 15) 65 map.set("test arraylist getLastIndexOf:", proxy.getLastIndexOf(1) === 1) 66 map.set("test arraylist getIndexOf:", proxy.getIndexOf(5) === 5) 67 68 let array = proxy.convertToArray() 69 res = true 70 for(let i = 0; i < testArray.length; i++) { 71 if (array[i] !== testArray[i]) { 72 res = false 73 } 74 } 75 76 map.set("test arraylist convertToArray:", res) 77 78 let newArrayList = proxy.clone() 79 res = true 80 for(let i = 0; i < testArray.length; i++) { 81 if (newArrayList[i] !== testArray[i]) { 82 res = false 83 } 84 } 85 map.set("test arraylist clone:", res) 86 87 proxy.insert(999, 3) 88 testArray.splice(3, 0, 999) 89 res = true 90 for(let i = 0; i < testArray.length; i++) { 91 if (proxy[i] !== testArray[i]) { 92 res = false 93 } 94 } 95 map.set("test arraylist insert:", res) 96 97 proxy.removeByIndex(9) 98 testArray.splice(9, 1) 99 res = true 100 for(let i = 0; i < testArray.length; i++) { 101 if (proxy[i] !== testArray[i]) { 102 res = false 103 } 104 } 105 map.set("test arraylist removeByIndex:", res) 106 107 const removeRes = proxy.remove(7) 108 testArray.splice(8, 1) 109 res = true 110 for(let i = 0; i < testArray.length; i++) { 111 if (proxy[i] !== testArray[i]) { 112 res = false 113 } 114 } 115 map.set("test arraylist remove:", res) 116 map.set("test arraylist removeRes:", removeRes) 117 118 proxy.removeByRange(1, 3) 119 testArray.splice(1, 2) 120 res = true 121 for(let i = 0; i < testArray.length; i++) { 122 if (proxy[i] !== testArray[i]) { 123 res = false 124 } 125 } 126 map.set("test arraylist removeByRange:", res) 127 128 res = true 129 proxy.forEach((value, index) => { 130 if (value !== testArray[index]) { 131 res = false 132 } 133 }) 134 135 map.set("test arraylist forEach:", res) 136 137 res = true 138 let subArrayList = proxy.subArrayList(1, 3) 139 const newtestArray = testArray.slice(1, 3) 140 for(let i = 0; i < subArrayList.length; i++) { 141 if (newtestArray[i] !== subArrayList[i]) { 142 res = false 143 } 144 } 145 map.set("test arraylist subArrayList:", res) 146 147 res = true 148 let j = 0 149 for (const data of proxy) { 150 if (data !== testArray[j]) { 151 res = false 152 } 153 j++; 154 } 155 map.set("test arraylist for of:", res) 156 157 let itr = proxy[Symbol.iterator](); 158 let tmp = undefined; 159 let testArray1 = [] 160 do { 161 tmp = itr.next().value; 162 testArray1.push(tmp); 163 } while (tmp != undefined); 164 165 for (let k = 0; k < proxy.length; k++) { 166 if (testArray1[k] !== testArray[k]) { 167 res = false 168 } 169 } 170 map.set("test arraylist Symbol.iterator:", res) 171 172 proxy.replaceAllElements((item, index) => { 173 return item * 2 174 }) 175 res = true 176 for(let i = 0; i < testArray.length; i++) { 177 if (proxy[i] !== testArray[i] * 2) { 178 res = false 179 } 180 } 181 map.set("test arraylist replaceAllElements:", res) 182 183 let arr2 = new arrayList(); 184 let proxy1 = new Proxy(arr2, {}); 185 proxy1.add(4); 186 proxy1.add(3); 187 proxy1.add(1); 188 proxy1.add(2); 189 proxy1.add(0); 190 proxy1.sort((a,b) => a-b); 191 res = true 192 for (let i = 0; i < 5; i++) { 193 if (proxy1[i] !== i) { 194 res = false 195 } 196 } 197 map.set("test arraylist sort:", res) 198 199 proxy1.clear() 200 map.set("test arraylist clear:", proxy1.length === 0) 201 map.set("test arraylist isEmpty:", proxy1.isEmpty()) 202 proxy1.add(4); 203 proxy1.add(3); 204 proxy1.add(1); 205 proxy1.add(2); 206 proxy1.add(0); 207 proxy1.sort((a,b) => a-b); 208 res = true 209 for (let i = 0; i < 5; i++) { 210 if (proxy1[i] !== i) { 211 res = false 212 } 213 } 214 map.set("test arraylist clear and add:", res) 215 216 proxy1.insert(50, 0); 217 map.set("test arraylist insert index === 0:", proxy1[0] === 50) 218 proxy1.increaseCapacityTo(20) 219 map.set("test arraylist increaseCapacityTo:", proxy1.getCapacity() === 20) 220 221 proxy1.trimToCurrentLength() 222 map.set("test arraylist trimToCurrentLength:", proxy1.getCapacity() === 6) 223 224 let flag = undefined; 225 function elements(value, key, map) { 226 if (!value) { 227 if (!flag) { 228 flag = []; 229 } 230 flag.push(key); 231 } 232 } 233 map.forEach(elements); 234 let de = new arrayList(); 235 try { 236 de.forEach(123); 237 } catch(err) { 238 if (err.name != "BusinessError") { 239 print("ArrayList forEach throw error fail"); 240 } 241 } 242 let test1 = new arrayList(); 243 for (let k = 0; k < 10; k++) { 244 test1.add(k); 245 } 246 var keyName = ""; 247 for (const key in test1) { 248 keyName += key; 249 } 250 if (keyName != "0123456789") { 251 print("ArrayList for in fail") 252 } 253 if (!flag) { 254 print("Test ArrayList success!!!"); 255 } else { 256 print("Test ArrayList fail: " + flag); 257 } 258} 259 260