TDD
テスト駆動飲み会で bash による テスト駆動 を体験して感動した
飲み会が始まって
cyber-dojo を見て bash, bats の選択肢にわくわく!
Fizz Buzz やってみた
ここからは 記憶を頼りにした再現してみる 感動を追体験できるかな
1 のとき 1
test
@test "1 is 1" {
local actual=$(answer 1)
[ "$actual" == "1" ]
}
product
answer()
{
echo 1
}
3 のとき Fizz
test
@test "3 is Fizz" {
local actual=$(answer 3)
[ "$actual" == "Fizz" ]
}
product
answer()
{
if [ $1 == 3 ]
then
echo Fizz
else
echo 1
fi
}
3 の倍数のとき Fizz
test
@test "6 is Fizz" {
local actual=$(answer 6)
[ "$actual" == "Fizz" ]
}
product
answer()
{
if [ $(($1 % 3)) == 0 ]
then
echo Fizz
else
echo 1
fi
}
5 の倍数のとき Buzz
test
@test "5 is Buzz" {
local actual=$(answer 5)
[ "$actual" == "Buzz" ]
}
product
answer()
{
if [ $(($1 % 3)) == 0 ]
then
echo Fizz
elif [ $(($1 % 5)) == 0 ]
then
echo Buzz
else
echo 1
fi
}
15 の倍数のとき FizzBuzz
test
@test "15 is FizzBuzz" {
local actual=$(answer 15)
[ "$actual" == "FizzBuzz" ]
}
product
answer()
{
if [ $(($1 % 3 + $1 % 5)) == 0 ]
then
echo FizzBuzz
elif [ $(($1 % 3)) == 0 ]
then
echo Fizz
elif [ $(($1 % 5)) == 0 ]
then
echo Buzz
else
echo 1
fi
}
後略
- このままだと 2 のとき 1 が返ってくるとか
- 1 から 100 までのループとか
- 0 や 101 の考慮とか
飲み会が終わって
- 沢山飲んだ、コーラをコップで10杯くらい貰いました
- 飲めない人に強要する人もいないし良い飲み会ですよー
- 今回使ったテストフレームワーク
Bats: Bash Automated Testing System- 結構直感でテストの書き方が想像ついた
- 皆が知ってる言語なのにテストを書いた経験者ゼロだった
- 今後は bash も安心してリファクタリングできる
- たのしい
おしまい