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