build(ci): cleanup workflows
[poolifier.git] / tests / deque.test.js
index dec96b3582a28605fca18d24204428e9f93da4c3..73e54590b3956e91ba7b1c2ad39e636c3fa92a95 100644 (file)
@@ -8,20 +8,20 @@ describe('Deque test suite', () => {
     expect(deque.size).toBe(1)
     expect(deque.maxSize).toBe(1)
     expect(rtSize).toBe(deque.size)
-    expect(deque.head).toMatchObject({ value: 1 })
-    expect(deque.tail).toMatchObject({ value: 1 })
+    expect(deque.head).toMatchObject({ data: 1 })
+    expect(deque.tail).toMatchObject({ data: 1 })
     rtSize = deque.push(2)
     expect(deque.size).toBe(2)
     expect(deque.maxSize).toBe(2)
     expect(rtSize).toBe(deque.size)
-    expect(deque.head).toMatchObject({ value: 1 })
-    expect(deque.tail).toMatchObject({ value: 2 })
+    expect(deque.head).toMatchObject({ data: 1 })
+    expect(deque.tail).toMatchObject({ data: 2 })
     rtSize = deque.push(3)
     expect(deque.size).toBe(3)
     expect(deque.maxSize).toBe(3)
     expect(rtSize).toBe(deque.size)
-    expect(deque.head).toMatchObject({ value: 1 })
-    expect(deque.tail).toMatchObject({ value: 3 })
+    expect(deque.head).toMatchObject({ data: 1 })
+    expect(deque.tail).toMatchObject({ data: 3 })
   })
 
   it('Verify unshift() behavior', () => {
@@ -30,20 +30,20 @@ describe('Deque test suite', () => {
     expect(deque.size).toBe(1)
     expect(deque.maxSize).toBe(1)
     expect(rtSize).toBe(deque.size)
-    expect(deque.head).toMatchObject({ value: 1 })
-    expect(deque.tail).toMatchObject({ value: 1 })
+    expect(deque.head).toMatchObject({ data: 1 })
+    expect(deque.tail).toMatchObject({ data: 1 })
     rtSize = deque.unshift(2)
     expect(deque.size).toBe(2)
     expect(deque.maxSize).toBe(2)
     expect(rtSize).toBe(deque.size)
-    expect(deque.head).toMatchObject({ value: 2 })
-    expect(deque.tail).toMatchObject({ value: 1 })
+    expect(deque.head).toMatchObject({ data: 2 })
+    expect(deque.tail).toMatchObject({ data: 1 })
     rtSize = deque.unshift(3)
     expect(deque.size).toBe(3)
     expect(deque.maxSize).toBe(3)
     expect(rtSize).toBe(deque.size)
-    expect(deque.head).toMatchObject({ value: 3 })
-    expect(deque.tail).toMatchObject({ value: 1 })
+    expect(deque.head).toMatchObject({ data: 3 })
+    expect(deque.tail).toMatchObject({ data: 1 })
   })
 
   it('Verify pop() behavior', () => {
@@ -55,14 +55,14 @@ describe('Deque test suite', () => {
     expect(deque.size).toBe(2)
     expect(deque.maxSize).toBe(3)
     expect(rtItem).toBe(3)
-    expect(deque.head).toMatchObject({ value: 1 })
-    expect(deque.tail).toMatchObject({ value: 2 })
+    expect(deque.head).toMatchObject({ data: 1 })
+    expect(deque.tail).toMatchObject({ data: 2 })
     rtItem = deque.pop()
     expect(deque.size).toBe(1)
     expect(deque.maxSize).toBe(3)
     expect(rtItem).toBe(2)
-    expect(deque.head).toMatchObject({ value: 1 })
-    expect(deque.tail).toMatchObject({ value: 1 })
+    expect(deque.head).toMatchObject({ data: 1 })
+    expect(deque.tail).toMatchObject({ data: 1 })
     rtItem = deque.pop()
     expect(deque.size).toBe(0)
     expect(deque.maxSize).toBe(3)
@@ -80,14 +80,14 @@ describe('Deque test suite', () => {
     expect(deque.size).toBe(2)
     expect(deque.maxSize).toBe(3)
     expect(rtItem).toBe(1)
-    expect(deque.head).toMatchObject({ value: 2 })
-    expect(deque.tail).toMatchObject({ value: 3 })
+    expect(deque.head).toMatchObject({ data: 2 })
+    expect(deque.tail).toMatchObject({ data: 3 })
     rtItem = deque.shift()
     expect(deque.size).toBe(1)
     expect(deque.maxSize).toBe(3)
     expect(rtItem).toBe(2)
-    expect(deque.head).toMatchObject({ value: 3 })
-    expect(deque.tail).toMatchObject({ value: 3 })
+    expect(deque.head).toMatchObject({ data: 3 })
+    expect(deque.tail).toMatchObject({ data: 3 })
     rtItem = deque.shift()
     expect(deque.size).toBe(0)
     expect(deque.maxSize).toBe(3)
@@ -96,6 +96,26 @@ describe('Deque test suite', () => {
     expect(deque.tail).toBeUndefined()
   })
 
+  it('Verify peekFirst() behavior', () => {
+    const deque = new Deque()
+    deque.push(1)
+    deque.push(2)
+    deque.push(3)
+    expect(deque.size).toBe(3)
+    expect(deque.peekFirst()).toBe(1)
+    expect(deque.size).toBe(3)
+  })
+
+  it('Verify peekLast() behavior', () => {
+    const deque = new Deque()
+    deque.push(1)
+    deque.push(2)
+    deque.push(3)
+    expect(deque.size).toBe(3)
+    expect(deque.peekLast()).toBe(3)
+    expect(deque.size).toBe(3)
+  })
+
   it('Verify clear() behavior', () => {
     const deque = new Deque()
     deque.push(1)
@@ -103,8 +123,8 @@ describe('Deque test suite', () => {
     deque.push(3)
     expect(deque.size).toBe(3)
     expect(deque.maxSize).toBe(3)
-    expect(deque.head).toMatchObject({ value: 1 })
-    expect(deque.tail).toMatchObject({ value: 3 })
+    expect(deque.head).toMatchObject({ data: 1 })
+    expect(deque.tail).toMatchObject({ data: 3 })
     deque.clear()
     expect(deque.size).toBe(0)
     expect(deque.maxSize).toBe(0)
@@ -123,4 +143,16 @@ describe('Deque test suite', () => {
       ++i
     }
   })
+
+  it('Verify backward() iterator behavior', () => {
+    const deque = new Deque()
+    deque.push(1)
+    deque.push(2)
+    deque.push(3)
+    let i = deque.size
+    for (const value of deque.backward()) {
+      expect(value).toBe(i)
+      --i
+    }
+  })
 })