Programming Ruby 2 nd読書ノート5
C12 Unit Test
ディレクトリ構造は次のとおりです.
lib/
person.rb
test/
tc_person.rb
ディレクトリ構造は次のとおりです.
lib/
person.rb
test/
tc_person.rb
#person.rb
class OldAgeException < StandardError
def initialize(info)
super(info)
end
end
class Person
attr_reader :name, :age, :gender
attr_writer :name, :age, :gender
def initialize(name, age, gender)
@name = name
@age = age
@gender = gender
end
def to_s
"[Person Name: #@name -- Age: #@age -- Gender: #@gender]"
end
def male?
@gender == 'Male' || @gender == 'male'
end
def old?
@age > 80
end
def climb
if old?
raise OldAgeException.new("The age #@age is too old!!!")
end
"#{self} climbs"
end
end
#tc_person.rb
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
require 'test/unit'
require 'person'
class TestPerson < Test::Unit::TestCase
def test_init
p = Person.new('AnkyHe', 27, 'Male')
assert_equal('AnkyHe', p.name)
assert_equal(27, p.age)
assert_equal('Male', p.gender)
end
def test_to_s
p = Person.new('AnkyHe', 27, 'Male')
assert_equal('[Person Name: AnkyHe -- Age: 27 -- Gender: Male]', p.to_s)
end
def test_male
p = Person.new('AnkyHe', 27, 'Male')
assert(p.male?)
p = Person.new('Xiaoli', 27, 'Female')
assert(!p.male?)
end
def test_old
p = Person.new('AnkyHe', 27, 'Male')
assert(!p.old?)
p = Person.new('Laoren', 81, 'Female')
assert(p.old?)
end
def test_climb
p = Person.new('AnkyHe', 27, 'Male')
assert_nothing_raised(){p.climb}
assert_equal('[Person Name: AnkyHe -- Age: 27 -- Gender: Male] climbs', p.climb)
p = Person.new('Laoren', 81, 'Female')
assert_raise(OldAgeException){p.climb}
end
end