1 import { expect
} from
'expect';
3 import { CircularArray
} from
'../../src/utils/CircularArray';
5 describe('CircularArray test suite', () => {
6 it('Verify that circular array can be instantiated', () => {
7 const circularArray
= new CircularArray();
8 expect(circularArray
).toBeInstanceOf(CircularArray
);
11 it('Verify circular array default size at instance creation', () => {
12 const circularArray
= new CircularArray();
13 expect(circularArray
.size
).toBe(1024);
16 it('Verify that circular array size can be set at instance creation', () => {
17 const circularArray
= new CircularArray(1000);
18 expect(circularArray
.size
).toBe(1000);
21 it('Verify that circular array size and items can be set at instance creation', () => {
22 let circularArray
= new CircularArray(1000, 1, 2, 3, 4, 5);
23 expect(circularArray
.size
).toBe(1000);
24 expect(circularArray
.length
).toBe(5);
25 circularArray
= new CircularArray(4, 1, 2, 3, 4, 5);
26 expect(circularArray
.size
).toBe(4);
27 expect(circularArray
.length
).toBe(4);
30 it('Verify that circular array size is valid at instance creation', () => {
31 expect(() => new CircularArray(0.25)).toThrowError(
32 new TypeError('Invalid circular array size: 0.25 is not a safe integer'),
34 expect(() => new CircularArray(-1)).toThrowError(
35 new RangeError('Invalid circular array size: -1 < 0'),
37 expect(() => new CircularArray(Number.MAX_SAFE_INTEGER
+ 1)).toThrowError(
39 `Invalid circular array size: ${Number.MAX_SAFE_INTEGER + 1} is not a safe integer`,
44 it('Verify that circular array empty works as intended', () => {
45 const circularArray
= new CircularArray();
46 expect(circularArray
.empty()).toBe(true);
49 it('Verify that circular array full works as intended', () => {
50 const circularArray
= new CircularArray(5, 1, 2, 3, 4, 5);
51 expect(circularArray
.full()).toBe(true);
54 it('Verify that circular array push works as intended', () => {
55 let circularArray
= new CircularArray(4);
56 let arrayLength
= circularArray
.push(1, 2, 3, 4, 5);
57 expect(arrayLength
).toBe(circularArray
.size
);
58 expect(circularArray
.length
).toBe(circularArray
.size
);
59 expect(circularArray
).toStrictEqual(new CircularArray(4, 2, 3, 4, 5));
60 arrayLength
= circularArray
.push(6, 7);
61 expect(arrayLength
).toBe(circularArray
.size
);
62 expect(circularArray
.length
).toBe(circularArray
.size
);
63 expect(circularArray
).toStrictEqual(new CircularArray(4, 4, 5, 6, 7));
64 circularArray
= new CircularArray(100);
65 arrayLength
= circularArray
.push(1, 2, 3, 4, 5);
66 expect(arrayLength
).toBe(5);
67 expect(circularArray
.size
).toBe(100);
68 expect(circularArray
.length
).toBe(5);
69 expect(circularArray
).toStrictEqual(new CircularArray(100, 1, 2, 3, 4, 5));
72 it('Verify that circular array splice works as intended', () => {
73 let circularArray
= new CircularArray(1000, 1, 2, 3, 4, 5);
74 let deletedItems
= circularArray
.splice(2);
75 expect(deletedItems
).toStrictEqual(new CircularArray(3, 3, 4, 5));
76 expect(circularArray
.length
).toBe(2);
77 expect(circularArray
).toStrictEqual(new CircularArray(1000, 1, 2));
78 circularArray
= new CircularArray(1000, 1, 2, 3, 4, 5);
79 deletedItems
= circularArray
.splice(2, 1);
80 expect(deletedItems
).toStrictEqual(new CircularArray(1, 3));
81 expect(circularArray
.length
).toBe(4);
82 expect(circularArray
).toStrictEqual(new CircularArray(1000, 1, 2, 4, 5));
83 circularArray
= new CircularArray(4, 1, 2, 3, 4);
84 deletedItems
= circularArray
.splice(2, 1, 5, 6);
85 expect(deletedItems
).toStrictEqual(new CircularArray(1, 3));
86 expect(circularArray
.length
).toBe(4);
87 expect(circularArray
).toStrictEqual(new CircularArray(4, 2, 4, 5, 6));
90 it('Verify that circular array concat works as intended', () => {
91 let circularArray
= new CircularArray(5, 1, 2, 3, 4, 5);
92 circularArray
= circularArray
.concat(6, 7);
93 expect(circularArray
.length
).toBe(5);
94 expect(circularArray
).toStrictEqual(new CircularArray(5, 3, 4, 5, 6, 7));
95 circularArray
= new CircularArray(1);
96 circularArray
= circularArray
.concat(6, 7);
97 expect(circularArray
.length
).toBe(1);
98 expect(circularArray
).toStrictEqual(new CircularArray(1, 7));
101 it('Verify that circular array unshift works as intended', () => {
102 let circularArray
= new CircularArray(5, 1, 2, 3, 4, 5);
103 let arrayLength
= circularArray
.unshift(6, 7);
104 expect(arrayLength
).toBe(5);
105 expect(circularArray
.length
).toBe(5);
106 expect(circularArray
).toStrictEqual(new CircularArray(5, 6, 7, 1, 2, 3));
107 circularArray
= new CircularArray(1);
108 arrayLength
= circularArray
.unshift(6, 7);
109 expect(arrayLength
).toBe(1);
110 expect(circularArray
.length
).toBe(1);
111 expect(circularArray
).toStrictEqual(new CircularArray(1, 6));
114 it('Verify that circular array resize works as intended', () => {
115 expect(() => new CircularArray().resize(0.25)).toThrowError(
116 new TypeError('Invalid circular array size: 0.25 is not a safe integer'),
118 expect(() => new CircularArray().resize(-1)).toThrowError(
119 new RangeError('Invalid circular array size: -1 < 0'),
121 expect(() => new CircularArray().resize(Number.MAX_SAFE_INTEGER
+ 1)).toThrowError(
123 `Invalid circular array size: ${Number.MAX_SAFE_INTEGER + 1} is not a safe integer`,
126 let circularArray
= new CircularArray(5, 1, 2, 3, 4, 5);
127 circularArray
.resize(0);
128 expect(circularArray
.size
).toBe(0);
129 expect(circularArray
).toStrictEqual(new CircularArray(0));
130 circularArray
= new CircularArray(5, 1, 2, 3, 4, 5);
131 circularArray
.resize(1);
132 expect(circularArray
.size
).toBe(1);
133 expect(circularArray
).toStrictEqual(new CircularArray(1, 1));
134 circularArray
= new CircularArray(5, 1, 2, 3, 4, 5);
135 circularArray
.resize(3);
136 expect(circularArray
.size
).toBe(3);
137 expect(circularArray
).toStrictEqual(new CircularArray(3, 1, 2, 3));
138 circularArray
= new CircularArray(5, 1, 2, 3, 4, 5);
139 circularArray
.resize(8);
140 expect(circularArray
.size
).toBe(8);
141 expect(circularArray
).toStrictEqual(new CircularArray(8, 1, 2, 3, 4, 5));