テスト駆動開発で「スタック」クラスを作ってみよう。
複数のデータを保持する。
push
で順に要素を追加できること。pop
で最後から順に要素を取り出せること。
このような動作を LIFO (Last In, First Out) という。
empty?
- スタックが空なら真、空でなければ偽を返す。
size
- スタックの要素数を返す。
push(val)
- 引数の値をスタックの最後に積む。
pop
- スタックの最後の値を取り除いて返す。
- スタックが空なら
Stack::EmptyStackError
を発生させる。
- 新しいスタックの
empty?
は真であること。 - まずテストが失敗することを確認しよう。(Red)
Stack#empty?
で真を返そう。(Fake it!)
- 新しいスタックに 3 を
push
して、pop
すると 3 が返ること。 - テストが失敗することを確認しよう。(Red)
pop
で 3 を返そう。(Fake it!)
- 新しいスタックに 3 を
push
するとsize
が 1 になること。 - テストが失敗することを確認しよう。(Red)
Stack#size
で 1 を返そう。(Fake it!)
- 新しいスタックに 3 を
push
した後、5 をpush
するとsize
が 2 になること。 - Fake it が通らなくなることを確認しよう。(Triangulate)
- テストが通るように修正しよう。(Green)
- 新しいスタックに 3 を
push
するとempty?
は偽であること。 - Fake it が通らなくなることを確認しよう。(Triangulate)
- テストが通るように修正しよう。(Green)
- 新しいスタックから
pop
するとStack::EmptyStackError
が発生すること。
- 新しいスタックに 3 を
push
した後、5 をpush
し、pop
するとsize
が 1 であること。
- 新しいスタックに 3 を
push
した後、5 をpush
し、pop
すると 5 が返ること。