const { Stack } = require('../../utils')

const MyQueue = (function () {
	let stackNewest, stackOldest
	const shiftStacks = () => {
		if (stackOldest.isEmpty()) {
			while (!stackNewest.isEmpty()) {
				stackOldest.push(stackNewest.pop())
			}
		}
	}
	class MyQueue {
		constructor() {
			stackNewest = new Stack()
			stackOldest = new Stack()
		}
		add(value) {
			stackNewest.push(value)
		}
		peek() {
			shiftStacks()
			return stackOldest.peek()
		}
		remove() {
			shiftStacks()
			return stackOldest.pop() // pop the oldest item.
		}
	}
	return MyQueue
})()

// Tests

const q = new MyQueue()
q.add(1)
q.add(2)
q.add(3)
console.log(q.remove())
console.log(q)
console.log(q.peek())