!Mac OS X-10.15.7 !ruby-2.7.1p83
assert_equal
講義ページリンク
内容
テスト駆動開発において頻繁に使用するassert_equalを作成する
課題
2つの引数が等しいかどうかを出力するメソッドassert_equalの作成
解答例
#!/usr/bin/env ruby
require 'colorize'
def assert_equal(expected, result)
puts "expected: #{expected}"
puts "result: #{result}"
if expected == result
puts "succeeded in #{__method__}.".green
else
puts "failed in #{__method__}.".red
end
end
def assert_not_equal(expected, result)
puts "expected: #{expected}"
puts "result: #{result}"
if expected != result
puts "succeeded in #{__method__}.".green
else
puts "failed in #{__method__}.".red
end
end
assert_equal(1, 1)
assert_equal(1, 2)
assert_not_equal(1, 1)
assert_not_equal(1, 2)
出力
> ruby assert_equal.rb
expected: 1
result: 1
succeeded in assert_equal.
expected: 1
result: 2
failed in assert_equal.
expected: 1
result: 1
failed in assert_not_equal.
expected: 1
result: 2
succeeded in assert_not_equal.
successedのとこは緑で,failedのとこは赤で表示される
NOTE
- 今回は使ってないが,小数を比較するときは
.to_d
を使う(using BigDecimal) - 関数内から関数名を取得するには
__method__
を使う - テストの部分を
if $PROGRAM_NAME == __FILE__
内に入れることで,このassert_equalを外部から利用することができる - 前回orgmodeでincludeしたソースコードにシンタックスを適用する方法がわからなかったが,ソースコードに
#+begin_src ruby
と#+end_src
を書けばできた- あまりソースコードに書き込みたくないけど
- また,シェバン(#!のやつ)がソースコードの上に出てくる
- シェバンの上に#+を書いたらシェバンがコメント扱いされる
- ちょっと気持ち悪いけど妥協する
- source ~/multiscalesim_toku/grad_members_20f/members/lynd2299/mss9.org