let rtSize = queue.enqueue(1)
expect(queue.size).toBe(1)
expect(rtSize).toBe(queue.size)
- expect(queue.head).toBe(0)
- expect(queue.tail).toBe(1)
- expect(queue.items).toStrictEqual({ 0: 1 })
+ expect(queue.offset).toBe(0)
+ expect(queue.maxSize).toBe(1)
+ expect(queue.items).toStrictEqual([1])
rtSize = queue.enqueue(2)
expect(queue.size).toBe(2)
expect(rtSize).toBe(queue.size)
- expect(queue.head).toBe(0)
- expect(queue.tail).toBe(2)
- expect(queue.items).toStrictEqual({ 0: 1, 1: 2 })
+ expect(queue.offset).toBe(0)
+ expect(queue.maxSize).toBe(2)
+ expect(queue.items).toStrictEqual([1, 2])
rtSize = queue.enqueue(3)
expect(queue.size).toBe(3)
expect(rtSize).toBe(queue.size)
- expect(queue.head).toBe(0)
- expect(queue.tail).toBe(3)
- expect(queue.items).toStrictEqual({ 0: 1, 1: 2, 2: 3 })
+ expect(queue.offset).toBe(0)
+ expect(queue.maxSize).toBe(3)
+ expect(queue.items).toStrictEqual([1, 2, 3])
})
it('Verify dequeue() behavior', () => {
let rtItem = queue.dequeue()
expect(queue.size).toBe(2)
expect(rtItem).toBe(1)
- expect(queue.head).toBe(1)
- expect(queue.tail).toBe(3)
- expect(queue.items).toStrictEqual({ 1: 2, 2: 3 })
+ expect(queue.offset).toBe(1)
+ expect(queue.maxSize).toBe(3)
+ expect(queue.items).toStrictEqual([1, 2, 3])
rtItem = queue.dequeue()
expect(queue.size).toBe(1)
expect(rtItem).toBe(2)
- expect(queue.head).toBe(2)
- expect(queue.tail).toBe(3)
- expect(queue.items).toStrictEqual({ 2: 3 })
+ expect(queue.offset).toBe(0)
+ expect(queue.maxSize).toBe(3)
+ expect(queue.items).toStrictEqual([3])
rtItem = queue.dequeue()
expect(queue.size).toBe(0)
expect(rtItem).toBe(3)
- expect(queue.head).toBe(0)
- expect(queue.tail).toBe(0)
- expect(queue.items).toStrictEqual({})
+ expect(queue.offset).toBe(0)
+ expect(queue.maxSize).toBe(3)
+ expect(queue.items).toStrictEqual([])
+ })
+
+ it('Verify clear() behavior', () => {
+ const queue = new Queue()
+ queue.enqueue(1)
+ queue.enqueue(2)
+ queue.enqueue(3)
+ expect(queue.size).toBe(3)
+ expect(queue.maxSize).toBe(3)
+ queue.clear()
+ expect(queue.size).toBe(0)
+ expect(queue.maxSize).toBe(0)
+ expect(queue.items).toStrictEqual([])
+ expect(queue.offset).toBe(0)
+ })
+
+ it('Verify iterator behavior', () => {
+ const queue = new Queue()
+ queue.enqueue(1)
+ queue.enqueue(2)
+ queue.enqueue(3)
+ let i = 1
+ for (const item of queue) {
+ expect(item).toBe(i)
+ ++i
+ }
})
})