「1から100までの数に対して3で割り切れる数はFIZZ、5で割り切れる数はBUZZ、 3でも5でも割り切れる数はFIZZBUZZと表示する。それ以外の数は数字のまま表示する。」
describe 'FizzBuzz' do context '数が1より小さいとき' do it { expect(fizzbuzz 0).to eq '' } end context '数が100より大きいとき' do it { expect(fizzbuzz 101).to eq '' } end context '数が3で割り切れるとき' do it { expect(fizzbuzz 3).to eq 'FIZZ' } it { expect(fizzbuzz 6).to eq 'FIZZ' } it { expect(fizzbuzz 9).to eq 'FIZZ' } end context '数が5で割り切れるとき' do it { expect(fizzbuzz 5).to eq 'BUZZ' } it { expect(fizzbuzz 10).to eq 'BUZZ' } it { expect(fizzbuzz 20).to eq 'BUZZ' } end context '数が15で割り切れるとき' do it { expect(fizzbuzz 15).to eq 'FIZZBUZZ' } it { expect(fizzbuzz 30).to eq 'FIZZBUZZ' } it { expect(fizzbuzz 45).to eq 'FIZZBUZZ' } end context '数が3でも5でも割り切れないとき' do it { expect(fizzbuzz 1).to eq '1' } it { expect(fizzbuzz 2).to eq '2' } it { expect(fizzbuzz 4).to eq '4' } it { expect(fizzbuzz 7).to eq '7' } it { expect(fizzbuzz 8).to eq '8' } it { expect(fizzbuzz 11).to eq '11' } it { expect(fizzbuzz 13).to eq '13' } it { expect(fizzbuzz 14).to eq '14' } it { expect(fizzbuzz 16).to eq '16' } end end def fizzbuzz(number) case number in i if number <= 0 '' in i if i % 15 == 0 'FIZZBUZZ' in i if i % 5 == 0 'BUZZ' in i if i % 3 == 0 'FIZZ' in i if number > 100 '' else number.to_s end end
問題文では0以下と101以上の時の動作は未定義なので、勝手に空文字を返す事にしました。