`

Programming Ruby 2nd 读书笔记5

阅读更多

C12 Unit Test

目录结构如下

 

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


 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics