• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2023 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
16import {ListUtil} from '../../../src/utils/ListUtil';
17import {describe, it} from 'mocha';
18import {assert} from 'chai';
19
20describe('unit test for ListUtil.ts', function () {
21  describe('get init list test', function () {
22    it('check init list input value bad', function () {
23      let arr = ListUtil.getInitList(-1);
24      assert.isTrue(arr.length === 0);
25    });
26
27    it('check init list input value zero', function () {
28      let arr = ListUtil.getInitList(0);
29      assert.isTrue(arr.length === 0);
30    });
31
32    it('check init list input value NaN', function () {
33      let arr = ListUtil.getInitList(NaN);
34      assert.isTrue(arr.length === 0);
35    });
36
37    it('check init list input value MAX_INIT_LEN', function () {
38      let arr = ListUtil.getInitList(ListUtil.MAX_INIT_LEN);
39      assert.isTrue(arr.length === ListUtil.MAX_INIT_LEN);
40    });
41
42    it('check init list input value bigger than MAX_INIT_LEN', function () {
43      let arr = ListUtil.getInitList(ListUtil.MAX_INIT_LEN + 1);
44      assert.isTrue(arr.length === 0);
45    });
46
47    it('check init list input normal value', function () {
48      let arr = ListUtil.getInitList(26);
49
50      arr.forEach(((value, index) => {
51        assert.strictEqual(value, index);
52      }));
53    });
54  });
55
56  describe('list shuffle test', function () {
57    it('check shuffle invalid list', function () {
58      let arr = undefined;
59      ListUtil.shuffle(arr);
60
61      assert.isTrue(true);
62    });
63
64    it('check shuffle list', function () {
65      let arr = ListUtil.getInitList(26);
66      ListUtil.shuffle(arr);
67
68      let isShuffled = false;
69      for (let i = 1; i < arr.length; i++) {
70        if (arr[i] !== i) {
71          isShuffled = true;
72        }
73      }
74
75      assert.isTrue(isShuffled);
76    });
77  });
78
79  describe('list unique merge test', function () {
80    it('check unique merge two undefined list', function () {
81      let arr1 = undefined;
82      let arr2 = undefined;
83
84      const arrUnique = ListUtil.uniqueMergeList(arr1, arr2);
85      assert.isTrue(arrUnique.length === 0);
86    });
87
88    it('check unique merge two unique list', function () {
89      let arr1 = ['1', '2', '3'];
90      let arr2 = ['4', '5', '6'];
91
92      const expectedArr = ['1', '2', '3', '4', '5', '6'];
93
94      const arrUnique = ListUtil.uniqueMergeList(arr1, arr2);
95      assert.isTrue(arrUnique.length === expectedArr.length);
96      arrUnique.forEach((value, index) => {
97        assert.strictEqual(value, expectedArr[index]);
98      });
99    });
100
101    it('check unique merge two not unique list', function () {
102      let arr1 = ['1', '2', '3', '4'];
103      let arr2 = ['4', '5', '4', '6'];
104
105      const expectedArr = ['1', '2', '3', '4', '5', '6'];
106
107      const arrUnique = ListUtil.uniqueMergeList(arr1, arr2);
108      assert.isTrue(arrUnique.length === expectedArr.length);
109      arrUnique.forEach((value, index) => {
110        assert.strictEqual(value, expectedArr[index]);
111      });
112    });
113
114    it('check unique merge three undefined list', function () {
115      let arr1 = undefined;
116      let arr2 = undefined;
117      let arr3 = undefined;
118
119      const arrUnique = ListUtil.uniqueMergeList(arr1, arr2, arr3);
120      assert.isTrue(arrUnique.length === 0);
121    });
122
123    it('check unique merge three unique list', function () {
124      let arr1 = ['1', '2', '3'];
125      let arr2 = ['4', '5', '6'];
126      let arr3 = ['7', '8', '9'];
127
128      const expectedArr = ['1', '2', '3', '4', '5', '6', '7', '8', '9'];
129
130      const arrUnique = ListUtil.uniqueMergeList(arr1, arr2, arr3);
131      assert.isTrue(arrUnique.length === expectedArr.length);
132      arrUnique.forEach((value, index) => {
133        assert.strictEqual(value, expectedArr[index]);
134      });
135    });
136
137    it('check unique merge three not unique list', function () {
138      let arr1 = ['1', '2', '3', '4'];
139      let arr2 = ['4', '5', '4', '6'];
140      let arr3 = ['6', '7', '8', '8'];
141
142      const expectedArr = ['1', '2', '3', '4', '5', '6', '7', '8'];
143
144      const arrUnique = ListUtil.uniqueMergeList(arr1, arr2, arr3);
145      assert.isTrue(arrUnique.length === expectedArr.length);
146      arrUnique.forEach((value, index) => {
147        assert.strictEqual(value, expectedArr[index]);
148      });
149    });
150  });
151});
152