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