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 */ 15import Queue from "@ohos.util.Queue"; 16import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium' 17export default function QueueTest() { 18describe("QueueTest", function () { 19 20 /** 21 * @tc.name: testConstructor001 22 * @tc.desc: Create an Queue instance. For example: let queue = new Queue(). 23 */ 24 it("testConstructor001", 0, function () { 25 try { 26 let queue = new Queue(); 27 } catch (err) { 28 expect(err.name).assertEqual("BusinessError"); 29 expect(err.code).assertEqual(10200012); 30 expect(err.message).assertEqual("The Queue's constructor cannot be directly invoked"); 31 } 32 }); 33 34 /** 35 * @tc.name: testAdd002 36 * @tc.desc: Add element to Queue instance end. For example: queue.add("四"). 37 */ 38 it("testAdd002", 0, function () { 39 let queue = new Queue(); 40 queue.add("四"); 41 let res = queue.getFirst(); 42 expect(res).assertEqual("四"); 43 }); 44 45 /** 46 * @tc.name: testAdd003 47 * @tc.desc: Add element to Queue instance end. For example: queue.add(8). 48 */ 49 it("testAdd003", 0, function () { 50 let queue = new Queue(); 51 queue.add(8); 52 let res = queue.getFirst(); 53 expect(res).assertEqual(8); 54 }); 55 56 /** 57 * @tc.name: testAdd004 58 * @tc.desc: Add element to Queue instance end. For example: queue.add(8). 59 */ 60 it("testAdd004", 0, function () { 61 let queue = new Queue(); 62 let a = ["a", "b", "c"]; 63 queue.add(a); 64 let res = queue.getFirst(); 65 expect(res).assertEqual(a); 66 }); 67 68 /** 69 * @tc.name: testGetFirst005 70 * @tc.desc: Get the header element of the queue instance. For example: queue.getFirst(). 71 */ 72 it("testGetFirst005", 0, function () { 73 let queue = new Queue(); 74 queue.add(6); 75 queue.add("四"); 76 let res = queue.getFirst(); 77 expect(res).assertEqual(6); 78 }); 79 80 /** 81 * @tc.name: testPop006 82 * @tc.desc: Delete the header element of a queue instance. For example: queue.pop(). 83 */ 84 it("testPop006", 0, function () { 85 let queue = new Queue(); 86 queue.add(6); 87 queue.add("四"); 88 let res = queue.pop(); 89 let res1 = queue.getFirst(); 90 expect(res).assertEqual(6); 91 expect(res1).assertEqual("四"); 92 }); 93 94 /** 95 * @tc.name: testForEach007 96 * @tc.desc: Traversing elements in queue instances. For example: queue.forEach((item, index) => {arr.push(item);}). 97 */ 98 it("testForEach007", 0, function () { 99 let queue = new Queue(); 100 queue.add(8); 101 queue.add("一"); 102 queue.add("二"); 103 queue.add(1); 104 queue.add(2); 105 queue.add(3); 106 queue.add(4); 107 queue.add(5); 108 queue.add(6); 109 let c = ["a", "b", "c", "d"]; 110 queue.add(c); 111 let arr = []; 112 queue.forEach((item, index) => { 113 arr.push(item); 114 }); 115 let a = [8, "一", "二", 1, 2, 3, 4, 5, 6, c]; 116 for (let i = 0; i < a.length; i++) { 117 expect(arr[i]).assertEqual(a[i]); 118 } 119 }); 120 121 /** 122 * @tc.name: testIterator008 123 * @tc.desc: Iterate over all elements in the queue instance. For example: for (let item of queue) { arr.push(item);}. 124 */ 125 it("testIterator008", 0, function () { 126 let queue = new Queue(); 127 queue.add(8); 128 queue.add("一"); 129 queue.add("二"); 130 queue.add(5); 131 queue.add(6); 132 queue.add("三"); 133 queue.add("四"); 134 let arr = []; 135 for (let item of queue) { 136 arr.push(item); 137 } 138 let a = [8, "一", "二", 5, 6, "三", "四"]; 139 for (let i = 0; i < a.length; i++) { 140 expect(arr[i]).assertEqual(a[i]); 141 } 142 }); 143 144 /** 145 * @tc.name: testLength009 146 * @tc.desc: Get the number of elements in the queue instance. For example: queue.length. 147 */ 148 it("testLength009", 0, function () { 149 let queue = new Queue(); 150 queue.add(8); 151 queue.add("一"); 152 queue.add("二"); 153 queue.add(1); 154 queue.add(2); 155 queue.add(3); 156 queue.add(4); 157 queue.add(5); 158 queue.add(6); 159 let res = queue.length; 160 expect(9).assertEqual(res); 161 }); 162 163 /** 164 * @tc.name: testAdd010 165 * @tc.desc: Add element to Queue instance end. For example: queue.add("$"). 166 */ 167 it("testAdd010", 0, function () { 168 let queue = new Queue(); 169 queue.add("$"); 170 let res = queue.getFirst(); 171 expect(res).assertEqual("$"); 172 }); 173 174 /** 175 * @tc.name: testAdd011 176 * @tc.desc: Add element to Queue instance end. For example: queue.add(" "). 177 */ 178 it("testAdd011", 0, function () { 179 let queue = new Queue(); 180 queue.add(" "); 181 let res = queue.getFirst(); 182 expect(res).assertEqual(" "); 183 }); 184 185 /** 186 * @tc.name: testAdd012 187 * @tc.desc: Add element to Queue instance end. For example: queue.add(null). 188 */ 189 it("testAdd012", 0, function () { 190 let queue = new Queue(); 191 queue.add(null); 192 let res = queue.getFirst(); 193 expect(res).assertEqual(null); 194 }); 195 196 /** 197 * @tc.name: testAdd013 198 * @tc.desc: Add element to Queue instance end. For example: queue.add(undefined). 199 */ 200 it("testAdd013", 0, function () { 201 let queue = new Queue(); 202 queue.add(undefined); 203 let res = queue.getFirst(); 204 expect(res).assertEqual(undefined); 205 }); 206 207 /** 208 * @tc.name: testAdd014 209 * @tc.desc: Add element to Queue instance end. For example: for (let i = 0; i < 100; i++) { queue.add(i);}. 210 */ 211 it("testAdd014", 0, function () { 212 let queue = new Queue(); 213 for (let i = 0; i < 100; i++) { 214 queue.add(i); 215 } 216 let res = queue.length; 217 expect(res).assertEqual(100); 218 }); 219 220 /** 221 * @tc.name: testGetFirst015 222 * @tc.desc: Get the header element of the queue instance. For example: queue.getFirst(). 223 */ 224 it("testGetFirst015", 0, function () { 225 let queue = new Queue(); 226 let res = queue.getFirst(); 227 expect(res).assertEqual(undefined); 228 }); 229 230 /** 231 * @tc.name: testPop016 232 * @tc.desc: Delete the header element of a queue instance. For example: queue.pop(). 233 */ 234 it("testPop016", 0, function () { 235 let queue = new Queue(); 236 let res = queue.pop(); 237 expect(res).assertEqual(undefined); 238 }); 239 240 /** 241 * @tc.name: testForEach017 242 * @tc.desc: Traversing elements in queue instances. For example: queue.forEach((item, index) => {arr.push(item);}). 243 */ 244 it("testForEach017", 0, function () { 245 let queue = new Queue(); 246 let arr = []; 247 queue.forEach((item, index) => { 248 arr.push(item); 249 }); 250 expect(arr.length).assertEqual(0); 251 }); 252 253 /** 254 * @tc.name: testIterator018 255 * @tc.desc: Iterate over all elements in the queue instance. For example: for (let item of queue) { arr.push(item);}. 256 */ 257 it("testIterator018", 0, function () { 258 let queue = new Queue(); 259 let arr = []; 260 for (let item of queue) { 261 arr.push(item); 262 } 263 expect(arr.length).assertEqual(0); 264 }); 265 266 /** 267 * @tc.name: testIterator019 268 * @tc.desc: Iterate over all elements in the queue instance. For example: queue[Symbol.iterator](). 269 */ 270 it("testIterator019", 0, function () { 271 let queue = new Queue(); 272 queue.add(8); 273 queue.add("一"); 274 queue.add("二"); 275 queue.add(5); 276 queue.add(6); 277 queue.add("三"); 278 queue.add("四"); 279 let arr = []; 280 let size = queue.length; 281 let itr = queue[Symbol.iterator](); 282 for (let i = 0; i < size; i++) { 283 arr.push(itr.next().value); 284 } 285 let a = [8, "一", "二", 5, 6, "三", "四"]; 286 for (let i = 0; i < a.length; i++) { 287 expect(arr[i]).assertEqual(a[i]); 288 } 289 }); 290 291 /** 292 * @tc.name: testAdd020 293 * @tc.desc: Add element to Queue instance end. For example: queue.add.bind({}, 10)(). 294 */ 295 it("testAdd020 ", 0, function () { 296 let queue = new Queue(); 297 try { 298 queue.add.bind({}, 10)(); 299 expect(true).assertEqual(false); 300 } catch (err) { 301 expect(err.name).assertEqual("BusinessError"); 302 expect(err.code).assertEqual(10200011); 303 expect(err.message).assertEqual(`The add method cannot be bound`); 304 } 305 }); 306}); 307} 308