rspec
spec/models/main_phase_spec.rb マニュアルの Diagram12、同等戦力のスタンドオフで移動に失敗した German A Mun-Sil が支援付きの Austrian A Boh-Mun に撃退される処理を実装する*1。 これは、移動支援は移動に失敗したユニットの維持には効果がないこと…
spec/models/main_phase_spec.rb マニュアルの Diagram11、French F Gol-Tyn、French F Wes S F Gol-Tyn、Italian F Tyn-Holds、Italian F Rom S F Tyn-Holds を実装する。 繰り返しになるが、MOE3 の地名は jDip 準拠なので "Gol" は "Lyo" となる。 それと…
spec/models/main_phase_spec.rb さくさく行こう。 マニュアルの Diagram10、French F Gol-Tyn、French F Wes S F Gol-Tyn、Italian F Nap-Tyn、Italian F Rom S F Nap-Tyn の支援付きスタンドオフを実装する。 ちなみに MOE3 の地名は jDip 準拠なので、"Gu…
spec/models/main_phase_spec.rb 再掲。 describe MainPhase do describe "#resolve_orders" do let(:phase) { MainPhase.create } let(:resolved_orders) { phase.resolve_orders } #(略) shared_context "Diagram8 移動支援", diagram: 8 do let(:army_m…
spec/models/main_phase_spec.rb いよいよ本番といった感じ。 マニュアルの Diagram8、French A Mar–Bur、French A Gas S A Mar-Bur、German A Bur-Holds の支援、攻撃、敗退処理を実装する。 describe MainPhase do describe "#resolve_orders" do let(:pha…
spec/models/main_phase_spec.rb テスト。 マニュアルの Diagram6、English F Nth–Hol、French A Hol–Bel、French F Bel-Nth の循環移動処理を実装する。 ここまでの実装だと、それぞれ移動先に未解決の移動命令があるため成否が確定しない。 describe MainP…
spec/models/main_phase_spec.rb テスト。 マニュアルの Diagram6、German F Ber–Pru と German A Pru–Ber の交換移動禁止処理を実装する。 describe MainPhase do describe "#resolve_orders" do let(:phase) { MainPhase.create } let(:resolved_orders) {…
spec/models/main_phase_spec.rb テストを書く。 マニュアルの Diagram5、German A Ber–Pru と German A Kie–Ber の移動失敗の連鎖処理を実装する。 describe MainPhase do describe "#resolve_orders" do let(:phase) { MainPhase.create } let(:resolved_o…
Rails Application Preloader そもそもプリローダとは何ぞやと問えば、Rails アプリを事前にロードしておくことで rails rake コマンドを高速化するためのものだ。Spring の他には Zeus や Spork がある。 Spork は少しだけ使っていたことがあるが、事前の設…
spec/models/main_phase_spec.rb まずテストを書く。 マニュアルの Diagram4、German A Ber–Sil と Russian A War–Sil のスタンドオフ処理を実装する。 ちなみに Diagram2 は 1 と同じ単純移動(ただし海軍)なので省略。 Diagram3 は海軍にとっての非隣接地…
MainPhase#resolve_move メソッド 先にテストを書く。 resolve_move 自体は private メソッドの位置付けで*1、実装が進むと名前や扱いが変わる可能性がある、というかその余地を縛りたくないので、テストはあくまで MainPhase#resolve_orders を対象としたも…
OrderStatus の定数 テスト環境でちょっと嵌まった。 OrderStatus のクラス定義はこんな感じ。 class OrderStatus < ActiveRecord::Base UNEXECUTED = OrderStatus.where(code: 0).first INVALID = OrderStatus.where(code:100).first SUCCESS = OrderStatus…
Order#target と Order#target= 理想は TDD なんだけど、実際に処理を書いてみないと挙動のイメージがつかめないことが多いので、どうしてもある程度コードが形になってからテストを用意するスタイルになってしまう。 安定してきたらテスト先行に移れると思…