| // Flags: --expose-internals |
| 'use strict'; |
| |
| require('../common'); |
| |
| const assert = require('assert'); |
| const FixedQueue = require('internal/fixed_queue'); |
| |
| { |
| const queue = new FixedQueue(); |
| assert.strictEqual(queue.head, queue.tail); |
| assert(queue.isEmpty()); |
| queue.push('a'); |
| assert(!queue.isEmpty()); |
| assert.strictEqual(queue.shift(), 'a'); |
| assert.strictEqual(queue.shift(), null); |
| } |
| |
| { |
| const queue = new FixedQueue(); |
| for (let i = 0; i < 2047; i++) |
| queue.push('a'); |
| assert(queue.head.isFull()); |
| queue.push('a'); |
| assert(!queue.head.isFull()); |
| |
| assert.notStrictEqual(queue.head, queue.tail); |
| for (let i = 0; i < 2047; i++) |
| assert.strictEqual(queue.shift(), 'a'); |
| assert.strictEqual(queue.head, queue.tail); |
| assert(!queue.isEmpty()); |
| assert.strictEqual(queue.shift(), 'a'); |
| assert(queue.isEmpty()); |
| } |