Ray's playground

 

Unit Testing(Chapter 13 of Programming Ruby)

Roman
 1 class Roman
 2   MAX_ROMAN = 4999
 3   def initialize(value)
 4     if value <= 0 || value > MAX_ROMAN
 5       fail "Roman values must be > 0 and <= #{MAX_ROMAN}"
 6     end
 7     @value = value
 8   end
 9   
10   FACTORS = [["m"1000], ["cm"900], ["d"500], ["cd"400],
11   ["c"100], ["xc"90], ["l"50], ["xl"40],
12   ["x"10], ["ix"9], ["v"5], ["iv"4],
13   ["i"1]]
14   
15   def to_s
16     value = @value
17     roman = ""
18     for code, factor in FACTORS
19       count, value = value.divmod(factor)
20       roman << (code * count)
21     end
22     roman
23   end
24 end

 

Test
 1 require 'roman'
 2 require 'test/unit'
 3 
 4 class RomanTest < MiniTest::Unit::TestCase
 5   def test_simple
 6     assert_equal("i", Roman.new(1).to_s)
 7     assert_equal("ii", Roman.new(2).to_s)
 8     assert_equal("iii", Roman.new(3).to_s)
 9     assert_equal("iv", Roman.new(4).to_s)
10     assert_equal("ix", Roman.new(9).to_s)
11   end
12 end

 

 

posted on 2010-07-06 12:53  Ray Z  阅读(152)  评论(0编辑  收藏  举报

导航