db1e529e8f0105082cc9defe26978478cc72b618
1 import { CircularArray
} from
'../../src/utils/CircularArray';
2 import expect from
'expect';
4 describe('Circular array test suite', () => {
5 it('Verify that circular array can be instantiated', () => {
6 const circularArray
= new CircularArray();
7 expect(circularArray
).toBeInstanceOf(CircularArray
);
10 it('Verify circular array default size at instance creation', () => {
11 const circularArray
= new CircularArray();
12 expect(circularArray
.size
).toBe(Number.MAX_SAFE_INTEGER
);
15 it('Verify that circular array size can be set at instance creation', () => {
16 const circularArray
= new CircularArray(1000);
17 expect(circularArray
.size
).toBe(1000);
20 it('Verify that circular array size and items can be set at instance creation', () => {
21 let circularArray
= new CircularArray(1000, 1, 2, 3, 4, 5);
22 expect(circularArray
.size
).toBe(1000);
23 expect(circularArray
.length
).toBe(5);
24 circularArray
= new CircularArray(4, 1, 2, 3, 4, 5);
25 expect(circularArray
.size
).toBe(4);
26 expect(circularArray
.length
).toBe(4);
29 it('Verify that circular array size can\'t be negative at instance creation', () => {
30 expect(() => new CircularArray(-1)).toThrowError(
31 new RangeError('Invalid circular array size')
35 it('Verify that circular array empty works as intended', () => {
36 const circularArray
= new CircularArray();
37 expect(circularArray
.empty()).toBe(true);
40 it('Verify that circular array full works as intended', () => {
41 const circularArray
= new CircularArray(5, 1, 2, 3, 4, 5);
42 expect(circularArray
.full()).toBe(true);
45 it('Verify that circular array push works as intended', () => {
46 let circularArray
= new CircularArray(4);
47 let arrayLength
= circularArray
.push(1, 2, 3, 4, 5);
48 expect(arrayLength
).toBe(circularArray
.size
);
49 expect(circularArray
.length
).toBe(circularArray
.size
);
50 expect(circularArray
).toStrictEqual(new CircularArray(4, 2, 3, 4, 5));
51 arrayLength
= circularArray
.push(6, 7);
52 expect(arrayLength
).toBe(circularArray
.size
);
53 expect(circularArray
.length
).toBe(circularArray
.size
);
54 expect(circularArray
).toStrictEqual(new CircularArray(4, 4, 5, 6, 7));
55 circularArray
= new CircularArray(100);
56 arrayLength
= circularArray
.push(1, 2, 3, 4, 5);
57 expect(arrayLength
).toBe(5);
58 expect(circularArray
.size
).toBe(100);
59 expect(circularArray
.length
).toBe(5);
60 expect(circularArray
).toStrictEqual(new CircularArray(100, 1, 2, 3, 4, 5));
63 it('Verify that circular array splice works as intended', () => {
64 let circularArray
= new CircularArray(1000, 1, 2, 3, 4, 5);
65 let deletedItems
= circularArray
.splice(2);
66 expect(deletedItems
).toStrictEqual(new CircularArray(3, 3, 4, 5));
67 expect(circularArray
.length
).toBe(2);
68 expect(circularArray
).toStrictEqual(new CircularArray(1000, 1, 2));
69 circularArray
= new CircularArray(1000, 1, 2, 3, 4, 5);
70 deletedItems
= circularArray
.splice(2, 1);
71 expect(deletedItems
).toStrictEqual(new CircularArray(1, 3));
72 expect(circularArray
.length
).toBe(4);
73 expect(circularArray
).toStrictEqual(new CircularArray(1000, 1, 2, 4, 5));
74 circularArray
= new CircularArray(4, 1, 2, 3, 4);
75 deletedItems
= circularArray
.splice(2, 1, 5, 6);
76 expect(deletedItems
).toStrictEqual(new CircularArray(1, 3));
77 expect(circularArray
.length
).toBe(4);
78 expect(circularArray
).toStrictEqual(new CircularArray(4, 2, 4, 5, 6));
81 it('Verify that circular array concat works as intended', () => {
82 let circularArray
= new CircularArray(5, 1, 2, 3, 4, 5);
83 circularArray
= circularArray
.concat(6, 7);
84 expect(circularArray
.length
).toBe(5);
85 expect(circularArray
).toStrictEqual(new CircularArray(5, 3, 4, 5, 6, 7));
86 circularArray
= new CircularArray(1);
87 circularArray
= circularArray
.concat(6, 7);
88 expect(circularArray
.length
).toBe(1);
89 expect(circularArray
).toStrictEqual(new CircularArray(1, 7));
92 it('Verify that circular array unshift works as intended', () => {
93 let circularArray
= new CircularArray(5, 1, 2, 3, 4, 5);
94 let arrayLength
= circularArray
.unshift(6, 7);
95 expect(arrayLength
).toBe(5);
96 expect(circularArray
.length
).toBe(5);
97 expect(circularArray
).toStrictEqual(new CircularArray(5, 6, 7, 1, 2, 3));
98 circularArray
= new CircularArray(1);
99 arrayLength
= circularArray
.unshift(6, 7);
100 expect(arrayLength
).toBe(1);
101 expect(circularArray
.length
).toBe(1);
102 expect(circularArray
).toStrictEqual(new CircularArray(1, 6));
105 it('Verify that circular array resize works as intended', () => {
106 expect(() => new CircularArray().resize(-1)).toThrowError(
107 new RangeError('Invalid circular array size')
109 let circularArray
= new CircularArray(5, 1, 2, 3, 4, 5);
110 circularArray
.resize(0);
111 expect(circularArray
.size
).toBe(0);
112 expect(circularArray
).toStrictEqual(new CircularArray(0));
113 circularArray
= new CircularArray(5, 1, 2, 3, 4, 5);
114 circularArray
.resize(3);
115 expect(circularArray
.size
).toBe(3);
116 expect(circularArray
).toStrictEqual(new CircularArray(3, 1, 2, 3));
117 circularArray
= new CircularArray(5, 1, 2, 3, 4, 5);
118 circularArray
.resize(8);
119 expect(circularArray
.size
).toBe(8);
120 expect(circularArray
).toStrictEqual(new CircularArray(8, 1, 2, 3, 4, 5));