CodeKata of Bowling by RSpec for Windows

スはスペックのス〜RSpecによるテスト駆動開発の実演〜
http://www.nicovideo.jp/watch/sm2370458
を見ながらやってみた。


Windowsで初心者(Like Me)がやるときのポイント

  • 色はあきらめる;;
  • game.rbとgame_spec.rbは同じフォルダに置く
  • game_spec.rbでrequireするのは'game'だけ
  • specコマンドのオプションは「(無し)」か「-fs」
  • コーディング中は一時停止する
  • 感動する;;


■エラーが出たら・・


■余談

  • 1.8で試すと、なぜか「133点であること」の「と」で落ちた。
  • 「#!ruby -Ks」も効果なし。
  • 最初は「と」がだめなのかと思ったけど、「あると」ならOK。
  • どうも「こと」で終わるのがよくないらしい。
  • 他にも「にょ」とか「にゃ」で終わる文字列も落ちた。
  • なんということだ・・Shift_JISはJapaneseの敵だった
  • ぬぬぬ・・とりあえずLocalLanguageにしておくか。


■参考コード
[game_spec.rb]

# encoding: sjis
require 'game'

describe Game, "すべてガターの場合" do
  before do
    @game = Game.new
    20.times { roll_gutter }
  end
  
  it "スコアは0点" do
    @game.score.should == 0 #Assert
  end
end

describe Game, "すべて1ピンの場合" do
  before do
    @game = Game.new
    20.times { @game.roll(1) }
  end
  
  it "スコアは20点" do
    @game.score.should == 20
  end
end

describe Game, "ストライクの場合" do
  before do
    @game = Game.new
    roll_strike
    @game.roll(3)
    @game.roll(4) #24
    16.times { roll_gutter }
  end
  
  it "スコアは24点" do
    @game.score.should == 24
  end
end

describe Game, "パーフェクトゲームの場合" do
  before do
    @game = Game.new
    12.times { roll_strike }
  end
  
  it "スコアは300点" do
    @game.score.should == 300
  end
end

describe Game, "スペアの場合" do
  before do
    @game = Game.new
    roll_spare
    @game.roll(4)
    @game.roll(3) #21
    16.times { roll_gutter }
  end
  
  it "スコアは21点" do
    @game.score.should == 21
  end
end

# [1,4,4,5,6,4,5,5, 10, 0,1,7,3,6,4,10,2,8,6] => 133
describe Game, "Uncle Bobの受け入れゲームの場合" do
  before do
    @game = Game.new
    [1,4,4,5,6,4,5,5, 10, 0,1,7,3,6,4,10,2,8,6].each do |pins|
      @game.roll(pins)
    end
  end
  
  it "133点だべか" do
    @game.score.should == 133
  end
end

private
def roll_gutter
  @game.roll(0)
end

def roll_strike
  @game.roll(10)
end

def roll_spare
  @game.roll(5)
  @game.roll(5)
end


■参考
スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)
http://jp.rubyist.net/magazine/?0021-Rspec


ソースコードを色付けして記述する(シンタックス・ハイライト) - はてなダイアリーのヘルプ