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 Deque = undefined; 25if (globalThis["ArkPrivate"] != undefined) { 26 Deque = ArkPrivate.Load(ArkPrivate.Deque); 27 let deque = new Deque(); 28 let proxy = new Proxy(deque, {}); 29 let res = true 30 let testArray = [] 31 let map = new Map(); 32 for(let i = 0; i < 10; i++) { 33 testArray.push(i) 34 } 35 for(let i = 9; i >= 0; --i) { 36 proxy.insertFront(i) 37 } 38 39 res = true 40 for(let i = 0; i < testArray.length; i++) { 41 if (proxy[i] !== testArray[i]) { 42 res = false 43 } 44 } 45 map.set("test deque insertFront:", res) 46 47 for(let i = 10; i < 20; i++) { 48 proxy.insertEnd(i) 49 testArray.push(i) 50 } 51 52 res = true 53 for(let i = 0; i < testArray.length; i++) { 54 if (proxy[i] !== testArray[i]) { 55 res = false 56 } 57 } 58 map.set("test deque insertEnd:", res) 59 60 res = true 61 proxy.forEach((i, d) => { 62 if (d !== testArray[i]) { 63 res = false 64 } 65 }) 66 67 map.set("test deque forEach:", res) 68 69 res = true 70 let j = 0 71 for (const data of proxy) { 72 if (data !== testArray[j]) { 73 res = false 74 } 75 j++; 76 } 77 map.set("test deque for of:", res); 78 79 testdProxyArray1(proxy, res, testArray); 80 map.set("test deque Symbol.iterator:", res) 81 82 map.set("test deque has:", proxy.has(7)) 83 map.set("test deque popFirst:", proxy.getFirst() === 0) 84 map.set("test deque popLast:", proxy.getLast() === 19) 85 map.set("test deque popFirst:", proxy.popFirst() === 0) 86 map.set("test deque popLast:", proxy.popLast() === 19) 87 88 try { 89 let myDeque = new Deque(); 90 myDeque.insertEnd(1); 91 myDeque[2147483648]; 92 } catch(err) { 93 let overFlowTest = (err == "BusinessError: The type of \"index\" must be small integer."); 94 map.set("test Deque[i] overFlowTest:", overFlowTest); 95 } 96 97 let flag = undefined; 98 function elements(value, key, map) { 99 if (!value) { 100 if (!flag) { 101 flag = []; 102 } 103 flag.push(key); 104 } 105 } 106 map.forEach(elements); 107 var arr1 = []; 108 let myTest = new Deque(); 109 for (let i = 0; i < 10; i++) { 110 myTest.insertEnd(i); 111 } 112 for (let i = 0; i < 5; i++) { 113 myTest.popFirst(); 114 } 115 myTest.forEach( 116 function myFunc(item, index, arr) { 117 arr1.push(item); 118 } 119 ); 120 for (let j = 5; j < 10; j++) { 121 if (arr1[j - 5] != j) { 122 print("Deque forEach first argv fail"); 123 } 124 } 125 126 let de = new Deque(); 127 try { 128 de.forEach(123); 129 } catch(err) { 130 if (err.name != "BusinessError") { 131 print("Deque forEach throw error fail"); 132 } 133 } 134 let test1 = new Deque(); 135 for (let k = 0; k < 10; k++) { 136 test1.insertEnd(k); 137 } 138 var keyName = ""; 139 for (const key in test1) { 140 keyName += key; 141 } 142 if (keyName != "0123456789") { 143 print("Deque for in fail") 144 } 145 if (!flag) { 146 print("Test Deque success!!!"); 147 } else { 148 print("Test Deque fail: " + flag); 149 } 150 const v1 = new Deque(); 151 const v2 = [Deque,Deque]; 152 class C4{ 153 ["100"] = v2 154 } 155 const v5 = new C4(); 156 Object.assign(v1,v5) 157 print(JSON.stringify(v1)) 158 const v6 = new Deque() 159 try { 160 v6[4294967295] 161 } catch (error) { 162 print(error) 163 } 164 let v22; 165 try { 166 class C11 extends Deque { 167 168 } 169 v22 = new C11() 170 v22[2295334561] = 0 171 } catch (error) { 172 print(v22.length) 173 } 174} 175export let dequeRes = "Test Deque done"; 176