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: 21 */ 22import {testdProxyArray1} from "./utility"; 23 24var Queue = undefined; 25if (globalThis["ArkPrivate"] != undefined) { 26 Queue = ArkPrivate.Load(ArkPrivate.Queue); 27 let v4 = new Queue(); 28 v4[3829299154] = Queue; 29 print(v4.length); 30 let queue = new Queue(); 31 let proxy = new Proxy(queue, {}); 32 let res = true 33 let testArray = [] 34 let map = new Map(); 35 for(let i = 0; i < 10; i++) { 36 proxy.add(i) 37 testArray.push(i) 38 } 39 40 res = true 41 for(let i = 0; i < testArray.length; i++) { 42 if (proxy[i] !== testArray[i]) { 43 res = false 44 } 45 } 46 map.set("test queue add:", res) 47 48 res = true 49 proxy.forEach((i, d) => { 50 if (d !== testArray[i]) { 51 res = false 52 } 53 }) 54 55 map.set("test queue forEach:", res) 56 57 res = true 58 let j = 0 59 for (const data of proxy) { 60 if (data !== testArray[j]) { 61 res = false 62 } 63 j++; 64 } 65 map.set("test queue for of:", res) 66 testdProxyArray1(proxy, res, testArray); 67 68 map.set("test queue Symbol.iterator:", res) 69 70 map.set("test queue popFirst:", proxy.getFirst() === 0) 71 map.set("test queue pop:", proxy.pop() === 0) 72 73 try { 74 let myQueue = new Queue(); 75 myQueue.add(1); 76 myQueue[2147483648]; 77 } catch(err) { 78 let overFlowTest = (err == "BusinessError: The type of \"index\" must be small integer."); 79 map.set("test Queue[i] overFlowTest:", overFlowTest); 80 } 81 82 let flag = undefined; 83 function elements(value, key, map) { 84 if (!value) { 85 if (!flag) { 86 flag = []; 87 } 88 flag.push(key); 89 } 90 } 91 92 let myTest = new Queue(); 93 var arr1 = []; 94 for (var i = 0; i < 10; i++) { 95 myTest.add(i); 96 } 97 for (var i = 0; i < 5; i++) { 98 myTest.pop(); 99 } 100 myTest.forEach( 101 function myFunc(item, index, arr) { 102 arr1.push(item); 103 } 104 ); 105 for (let j = 5; j < 10; j++) { 106 if (arr1[j - 5] != j) { 107 print("Queue forEach first argv fail"); 108 } 109 } 110 111 let de = new Queue(); 112 try { 113 de.forEach(123); 114 } catch(err) { 115 if (err.name != "BusinessError") { 116 print("Queue forEach throw error fail"); 117 } 118 } 119 let test1 = new Queue(); 120 for (let k = 0; k < 10; k++) { 121 test1.add(k); 122 } 123 var keyName = ""; 124 for (const key in test1) { 125 keyName += key; 126 } 127 if (keyName != "0123456789") { 128 print("Queue for in fail") 129 } 130 map.forEach(elements); 131 if (!flag) { 132 print("Test Queue success!!!"); 133 } else { 134 print("Test Queue fail: " + flag); 135 } 136 137 let size_test = new Queue(); 138 for (var i = 0; i < 6; i++) { 139 size_test.add(i); 140 } 141 print(size_test.length); 142 143 const v1 = [Queue,Queue,Queue,Queue]; 144 const v2 = new Queue(); 145 const v3 = [-63084,3,536870889,-1926,29182,-4294967296,1222477883]; 146 const v5 = [v1]; 147 try { 148 Reflect.apply(v3.unshift, v2, v5); 149 } catch(error) { 150 print(error); 151 } 152 const v6 = new Queue() 153 function f2(a3) { 154 return a3 155 } 156 const o5 = { 157 "get" : f2, 158 } 159 const v7 = new Proxy(v6, o5) 160 try { 161 v7[1073741823] 162 } catch (error) { 163 print(error) 164 } 165} 166export let queueRes = "Test Queue done"; 167