Skip to content

Instantly share code, notes, and snippets.

@n0nick
Last active August 29, 2015 13:56
Show Gist options
  • Save n0nick/9305202 to your computer and use it in GitHub Desktop.
Save n0nick/9305202 to your computer and use it in GitHub Desktop.
require './stack'
class Staqueue
def initialize
@s1 = Stack.new
@s2 = Stack.new
end
def empty?
@s1.empty?
end
def enqueue(item)
while [email protected]?
@s2.push(@s1.pop)
end
@s1.push(item)
while [email protected]?
@s1.push(@s2.pop)
end
end
def dequeue
@s1.pop()
end
def size
@s1.size
end
end
require './staqueue'
describe Staqueue do
subject do
Staqueue.new
end
it "initializes as empty queue" do
subject.should be_empty
end
describe "#enqueue" do
it "adds an item to queue" do
subject.enqueue(double)
subject.should_not be_empty
end
end
describe "#dequeue" do
it "returns nil if empty" do
subject.dequeue.should be_nil
end
it "removes an item from queue" do
subject.enqueue(double)
subject.dequeue
subject.should be_empty
end
it "removes and returns the oldest item from queue" do
subject.enqueue(:item1)
subject.enqueue(:item2)
subject.enqueue(:item3)
subject.dequeue.should == :item1
subject.dequeue.should == :item2
subject.dequeue.should == :item3
end
end
describe "#size" do
it "returns the number of items added to queue" do
16.times { subject.enqueue(double) }
subject.size.should == 16
3.times { subject.dequeue }
subject.size.should == 13
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment