Sample app for Nishiwaki.rb & Kobe.rb
Question:
以下のシナリオに登場するチケットや改札機をRubyプログラムとして表現してください。
- テストコード付きで書いてください。テスティングフレームワークは問いません。
- シナリオに登場するテストパターンは最低限網羅してください。それよりも詳細なテストを書いても構いません。
- UI(WebやCUI)の作成は不要です。(テストコード上でのみ動作すればOK)
- リファクタリングは随時実施してもらって構いません。
- レベルA: コード本体もテストコードもすべて回答者自身で考えて書く。
- レベルB: コード本体のAPIのみ、出題者から提示する。回答者はそれを参考にしながらコード本体やテストコードを書く。
- レベルC: コード本体のスケルトン(メソッドの定義だけがあって中身が空のもの)と、一通りのテストシナリオを網羅したテストコード(RSpec)を提供する。回答者はテストコードがすべてパスするようにコード本体を実装する。
乗車駅・降車駅と運賃の関係は以下のとおり。
梅田 | |||
---|---|---|---|
150 | 十三 | ||
180 | 150 | 庄内 | |
220 | 180 | 150 | 岡町 |
- 購入できる切符は150円、180円、220円の3種類のみとする。それ以外の切符は考慮しない。
- 乗車・降車する駅は梅田、十三、庄内、岡町の4つのみとする。それ以外の駅は考慮しない。
- 150円の切符を購入する。
- 梅田で入場し、十三で出場する。
- 期待する結果: 出場できる。
- 150円の切符を購入する。
- 梅田で入場し、庄内で出場する。
- 期待する結果: 出場できない。
- 180円の切符を購入する。
- 梅田で入場し、庄内で出場する。
- 期待する結果: 出場できる。
- 220円の切符を購入する。
- 梅田で入場し、庄内で出場する。
- 期待する結果: 出場できる。
- 180円の切符を購入する。
- 梅田で入場し、岡町で出場する。
- 期待する結果: 出場できない。
- 220円の切符を購入する。
- 梅田で入場し、岡町で出場する。
- 期待する結果: 出場できる。
- 150円の切符を購入する。
- 十三で入場し、岡町で出場する。
- 期待する結果: 出場できない。
- 180円の切符を購入する。
- 十三で入場し、岡町で出場する。
- 期待する結果: 出場できる。
- 梅田方面から岡町方面(下り)だけでなく、岡町方面から梅田方面(上り)に対して上記のようなシナリオが有効であることを確認する。
- 150円の切符を購入する。
- 梅田で入場し、梅田で出場する。
- 期待する結果: 出場できない。(出場できない理由がわかるようにすること)
- 150円の切符を購入する。
- 梅田で入場する。
- さらに同じ切符で梅田から再入場する。
- 期待する結果: 入場できない。(入場できない理由がわかるようにすること)
- 150円の切符を購入する。
- 梅田で入場し、十三で出場する。
- さらに同じ切符で十三で再出場する。
- 期待する結果: 出場できない。(出場できない理由がわかるようにすること)
- 150円の切符を購入する。
- 入場時に改札機を通さないまま梅田で出場する。
- 期待する結果: 出場できない。(出場できない理由がわかるようにすること)
- 実際の改札機を想像しながら、プログラムに新しい機能を追加する。
gem install yard
yardoc lib/*.rb && open ./doc/index.html
Set up libraries:
gem install bundler
bundle install
Run tests:
bundle exec rspec