Initial commit: initial test list and README
GREEN: empty spec
RED: test one: creates a Stack and verifies that IsEmpty is true.

  1) Stack creates a Stack and verifies that IsEmpty is true.
     Failure/Error: stack = Stack.new
     NameError:
       uninitialized constant Stack
     # ./spec/stack_spec.rb:4:in `block (2 levels) in <top (required)>'
RED: test one: creates a Stack and verifies that IsEmpty is true.

  1) Stack creates a Stack and verifies that IsEmpty is true.
     Failure/Error: expect(stack.IsEmpty).to be(true)
     NoMethodError:
       undefined method `IsEmpty' for #<Stack:0x000001018a86d8>
     # ./spec/stack_spec.rb:7:in `block (2 levels) in <top (required)>'
RED: test one: creates a Stack and verifies that IsEmpty is true.

  1) Stack creates a Stack and verifies that IsEmpty is true.
     Failure/Error: expect(stack.IsEmpty).to be(true)

       expected true
            got nil
     # ./spec/stack_spec.rb:7:in `block (2 levels) in <top (required)>'
GREEN: test one: creates a Stack and verifies that IsEmpty is true.

Simplest implementation, just return true
REFACTOR: test one: creates a Stack and verifies that IsEmpty is true.

Using an instance variable that is initialized to true
RED: test two: Pushes a single object on the Stack and verifies that IsEmpty is false

  1) Stack Pushes a single object on the Stack and verifies that IsEmpty is false
     Failure/Error: stack.Push("first element")
     NoMethodError:
       undefined method `Push' for #<Stack:0x007fb9f9c42e70 @is_empty=true>
     # ./spec/stack_spec.rb:12:in `block (2 levels) in <top (required)>'
RED: test two: Pushes a single object on the Stack and verifies that IsEmpty is false

  1) Stack Pushes a single object on the Stack and verifies that IsEmpty is false
     Failure/Error: stack.Push("first element")
     ArgumentError:
       wrong number of arguments (1 for 0)
     # ./lib/stack.rb:10:in `Push'
     # ./spec/stack_spec.rb:12:in `block (2 levels) in <top (required)>'
RED: test two: Pushes a single object on the Stack and verifies that IsEmpty is false

  1) Stack Pushes a single object on the Stack and verifies that IsEmpty is false
     Failure/Error: expect(stack.IsEmpty).to be(false)

       expected false
            got true
     # ./spec/stack_spec.rb:13:in `block (2 levels) in <top (required)>'
GREEN: test two: Pushes a single object on the Stack and verifies that IsEmpty is false
REFACTOR: pulled stack creation into let() method to DRY specs
RED: test three: Push a single object, Pop the object, and verify that IsEmpty is true.

  1) Stack Push a single object, Pop the object, and verify that IsEmpty is true.
     Failure/Error: stack.Pop
     NoMethodError:
       undefined method `Pop' for #<Stack:0x00000102872708 @is_empty=false>
     # ./spec/stack_spec.rb:17:in `block (2 levels) in <top (required)>'
RED: test three: Push a single object, Pop the object, and verify that IsEmpty is true.

  1) Stack Push a single object, Pop the object, and verify that IsEmpty is true.
     Failure/Error: expect(stack.IsEmpty).to be(true)

       expected true
            got false
     # ./spec/stack_spec.rb:18:in `block (2 levels) in <top (required)>'
GREEN: test three: Push a single object, Pop the object, and verify that IsEmpty is true.
RED: test four: Push a single object, remembering what it is; Pop the object, and verify that the two objects are equal.

  1) Stack Push a single object, remembering what it is; Pop the object, and verify that the two objects are equal.
     Failure/Error: expect(actual).to eq(expected)

       expected: 1234
            got: true

       (compared using ==)
     # ./spec/stack_spec.rb:25:in `block (2 levels) in <top (required)>'
RED: test four: Push a single object, remembering what it is; Pop the object, and verify that the two objects are equal.

Unnecessary step. The .NET example required an intermediate step of returning NULL so that the code compiled. In Ruby, the result of setting @is_empty = true (from test three), returns just fine.
GREEN: test four: Push a single object, remembering what it is; Pop the object, and verify that the two objects are equal.
REFACTOR: test four: removed @is_empty variable and just using @element variable
RED: test five: Push three objects, remembering what they are; Pop each one, and verify that they are correct.

  1) Stack Push three objects, remembering what they are; Pop each one, and verify that they are correct.
     Failure/Error: expect(popped).to eq(pushed2)

       expected: "2"
            got: nil

       (compared using ==)
     # ./spec/stack_spec.rb:39:in `block (2 levels) in <top (required)>'