examples/stack.rb in armin-joellenbeck-rdbc-0.0.5 vs examples/stack.rb in armin-joellenbeck-rdbc-0.0.6
- old
+ new
@@ -6,39 +6,74 @@
class NoPopForEmptyStack < RuntimeError
end
def initialize
- @elements = []
+ @objects = []
end
def initialize_copy(orig)
- @elements = orig.elements
+ @objects = orig.objects
end
- def elements
- @elements.dup
+ def objects
+ @objects.dup
end
def size
- @elements.size
+ @objects.size
end
+ # doctest: A new Stack should be empty.
+ # >> stack = Stack.new
+ # >> stack.empty?
+ # => true
def empty?
size == 0
end
+ # doctest: A new Stack should have no object on top.
+ # >> stack = Stack.new
+ # >> begin
+ # ?> stack.top
+ # ?> rescue Test::Unit::AssertionFailedError
+ # ?> true
+ # ?> else
+ # ?> false
+ # ?> end
+ # => true
def top
- @elements.last
+ @objects.last
end
- def push(element)
- @elements.push(element)
- nil
+ # doctest: From a new Stack no object can be popped.
+ # >> stack = Stack.new
+ # >> begin
+ # ?> stack.pop
+ # ?> rescue Test::Unit::AssertionFailedError
+ # ?> true
+ # ?> else
+ # ?> false
+ # ?> end
+ # => true
+ def pop
+ @objects.pop
end
- def pop
- raise NoPopForEmptyStack if empty?
- @elements.pop
+ # doctest: A pushed object should be on the top.
+ # >> stack = Stack.new
+ # >> object = Object.new
+ # >> stack.push(object)
+ # >> stack.empty?
+ # => false
+ # >> stack.top
+ # => object
+ # >> stack.pop
+ # => object
+ # >> stack.empty?
+ # => true
+ def push(object)
+ @objects.push(object)
+ nil
end
end