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