104 lines
2.3 KiB
Crystal
104 lines
2.3 KiB
Crystal
describe Lifo::Queue do
|
|
describe "#initialize" do
|
|
it "sets capacity to -1 if none is given" do
|
|
queue = Lifo::Queue(Int32).new
|
|
queue.capacity.should eq -1
|
|
end
|
|
end
|
|
|
|
describe "#enqueue" do
|
|
it "enqueues to the queue" do
|
|
queue = Lifo::Queue(Int32).new
|
|
queue.enqueue(1)
|
|
queue.peek.should eq(1)
|
|
queue.enqueue(3)
|
|
queue.peek.should eq(1)
|
|
queue.enqueue(5)
|
|
queue.peek.should eq(1)
|
|
end
|
|
|
|
it "returns queue size" do
|
|
queue = Lifo::Queue(Int32).new
|
|
queue.enqueue(1)
|
|
queue.enqueue(3)
|
|
queue.size.should eq(2)
|
|
end
|
|
|
|
it "raises OverflowError if queue is full" do
|
|
queue = Lifo::Queue(Int32).new(0)
|
|
|
|
expect_raises(Lifo::OverflowError) do
|
|
queue.enqueue(1)
|
|
end
|
|
end
|
|
|
|
it "doesn't raise an error when queue is infinite" do
|
|
queue = Lifo::Queue(Int32).new
|
|
queue.enqueue(1)
|
|
end
|
|
end
|
|
|
|
describe "#enqueue?" do
|
|
it "enqueues to the queue" do
|
|
queue = Lifo::Queue(Int32).new
|
|
queue.enqueue?(1)
|
|
queue.peek.should eq(1)
|
|
queue.enqueue?(3)
|
|
queue.peek.should eq(1)
|
|
queue.enqueue?(5)
|
|
queue.peek.should eq(1)
|
|
end
|
|
|
|
it "returns queue size" do
|
|
queue = Lifo::Queue(Int32).new
|
|
queue.enqueue?(1)
|
|
queue.enqueue?(3)
|
|
queue.size.should eq(2)
|
|
end
|
|
|
|
it "returns nil if error raised" do
|
|
queue = Lifo::Queue(Int32).new(0)
|
|
queue.enqueue?(1).should be_nil
|
|
end
|
|
end
|
|
|
|
describe "#dequeue" do
|
|
it "dequeues from the queue" do
|
|
queue = Lifo::Queue(Int32).new
|
|
queue.enqueue(1)
|
|
queue.enqueue(3)
|
|
queue.peek.should eq(1)
|
|
queue.dequeue
|
|
queue.peek.should eq(3)
|
|
queue.dequeue
|
|
end
|
|
|
|
it "returns dequeued element" do
|
|
queue = Lifo::Queue(Int32).new
|
|
queue.enqueue(1)
|
|
queue.enqueue(3)
|
|
queue.peek.should eq(1)
|
|
queue.dequeue.should eq(1)
|
|
queue.dequeue.should eq(3)
|
|
end
|
|
|
|
it "raises UnderflowError if queue is empty" do
|
|
queue = Lifo::Queue(Int32).new(0)
|
|
expect_raises(Lifo::UnderflowError) do
|
|
queue.dequeue
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "#dequeue?" do
|
|
it "dequeues from the queue" do
|
|
queue = Lifo::Queue(Int32).new
|
|
queue.enqueue(1)
|
|
queue.enqueue(3)
|
|
queue.peek.should eq(1)
|
|
queue.dequeue?
|
|
queue.peek.should eq(3)
|
|
queue.dequeue?
|
|
end
|
|
end
|
|
end
|