Apply prettier formating
[e-mobility-charging-stations-simulator.git] / test / utils / CircularArrayTest.ts
CommitLineData
4082efc1
JB
1import { CircularArray } from '../../src/utils/CircularArray';
2import expect from 'expect';
3
4describe('Circular array test suite', () => {
5 it('Verify that circular array can be instantiated', () => {
6 const circularArray = new CircularArray();
7 expect(circularArray).toBeInstanceOf(CircularArray);
8 });
9
10 it('Verify circular array default size at instance creation', () => {
11 const circularArray = new CircularArray();
6c23cbbb 12 expect(circularArray.size).toBe(Number.MAX_SAFE_INTEGER);
4082efc1
JB
13 });
14
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);
18 });
19
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);
27 });
28
e7aeea18
JB
29 it("Verify that circular array size can't be negative at instance creation", () => {
30 expect(() => new CircularArray(-1)).toThrowError(new RangeError('Invalid circular array size'));
4082efc1
JB
31 });
32
33 it('Verify that circular array empty works as intended', () => {
34 const circularArray = new CircularArray();
35 expect(circularArray.empty()).toBe(true);
36 });
37
38 it('Verify that circular array full works as intended', () => {
39 const circularArray = new CircularArray(5, 1, 2, 3, 4, 5);
40 expect(circularArray.full()).toBe(true);
41 });
42
43 it('Verify that circular array push works as intended', () => {
44 let circularArray = new CircularArray(4);
45 let arrayLength = circularArray.push(1, 2, 3, 4, 5);
46 expect(arrayLength).toBe(circularArray.size);
47 expect(circularArray.length).toBe(circularArray.size);
48 expect(circularArray).toStrictEqual(new CircularArray(4, 2, 3, 4, 5));
49 arrayLength = circularArray.push(6, 7);
50 expect(arrayLength).toBe(circularArray.size);
51 expect(circularArray.length).toBe(circularArray.size);
52 expect(circularArray).toStrictEqual(new CircularArray(4, 4, 5, 6, 7));
53 circularArray = new CircularArray(100);
54 arrayLength = circularArray.push(1, 2, 3, 4, 5);
55 expect(arrayLength).toBe(5);
56 expect(circularArray.size).toBe(100);
57 expect(circularArray.length).toBe(5);
58 expect(circularArray).toStrictEqual(new CircularArray(100, 1, 2, 3, 4, 5));
59 });
60
61 it('Verify that circular array splice works as intended', () => {
62 let circularArray = new CircularArray(1000, 1, 2, 3, 4, 5);
63 let deletedItems = circularArray.splice(2);
64 expect(deletedItems).toStrictEqual(new CircularArray(3, 3, 4, 5));
65 expect(circularArray.length).toBe(2);
66 expect(circularArray).toStrictEqual(new CircularArray(1000, 1, 2));
67 circularArray = new CircularArray(1000, 1, 2, 3, 4, 5);
68 deletedItems = circularArray.splice(2, 1);
69 expect(deletedItems).toStrictEqual(new CircularArray(1, 3));
70 expect(circularArray.length).toBe(4);
71 expect(circularArray).toStrictEqual(new CircularArray(1000, 1, 2, 4, 5));
72 circularArray = new CircularArray(4, 1, 2, 3, 4);
73 deletedItems = circularArray.splice(2, 1, 5, 6);
74 expect(deletedItems).toStrictEqual(new CircularArray(1, 3));
75 expect(circularArray.length).toBe(4);
76 expect(circularArray).toStrictEqual(new CircularArray(4, 2, 4, 5, 6));
77 });
78
79 it('Verify that circular array concat works as intended', () => {
80 let circularArray = new CircularArray(5, 1, 2, 3, 4, 5);
81 circularArray = circularArray.concat(6, 7);
82 expect(circularArray.length).toBe(5);
83 expect(circularArray).toStrictEqual(new CircularArray(5, 3, 4, 5, 6, 7));
84 circularArray = new CircularArray(1);
85 circularArray = circularArray.concat(6, 7);
86 expect(circularArray.length).toBe(1);
87 expect(circularArray).toStrictEqual(new CircularArray(1, 7));
88 });
89
90 it('Verify that circular array unshift works as intended', () => {
91 let circularArray = new CircularArray(5, 1, 2, 3, 4, 5);
92 let arrayLength = circularArray.unshift(6, 7);
93 expect(arrayLength).toBe(5);
94 expect(circularArray.length).toBe(5);
95 expect(circularArray).toStrictEqual(new CircularArray(5, 6, 7, 1, 2, 3));
96 circularArray = new CircularArray(1);
97 arrayLength = circularArray.unshift(6, 7);
98 expect(arrayLength).toBe(1);
99 expect(circularArray.length).toBe(1);
100 expect(circularArray).toStrictEqual(new CircularArray(1, 6));
101 });
102
103 it('Verify that circular array resize works as intended', () => {
104 expect(() => new CircularArray().resize(-1)).toThrowError(
105 new RangeError('Invalid circular array size')
106 );
107 let circularArray = new CircularArray(5, 1, 2, 3, 4, 5);
108 circularArray.resize(0);
109 expect(circularArray.size).toBe(0);
110 expect(circularArray).toStrictEqual(new CircularArray(0));
111 circularArray = new CircularArray(5, 1, 2, 3, 4, 5);
112 circularArray.resize(3);
113 expect(circularArray.size).toBe(3);
114 expect(circularArray).toStrictEqual(new CircularArray(3, 1, 2, 3));
115 circularArray = new CircularArray(5, 1, 2, 3, 4, 5);
116 circularArray.resize(8);
117 expect(circularArray.size).toBe(8);
118 expect(circularArray).toStrictEqual(new CircularArray(8, 1, 2, 3, 4, 5));
119 });
120});