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