Skip to content

Instantly share code, notes, and snippets.

@dengsauve
Created February 26, 2018 22:35
Show Gist options
  • Save dengsauve/a48abca0962e0ada5ded232ccd907730 to your computer and use it in GitHub Desktop.
Save dengsauve/a48abca0962e0ada5ded232ccd907730 to your computer and use it in GitHub Desktop.
Ruby Integer to Roman Number TDD, test builder file using assignment (requires 'to_words' gem).
require 'to_words'
require_relative 'roman.rb'
100.times do |n|
# make the test def
puts "def test_#{n}s" if n % 10 == 0
# print the assertions
puts "\tassert_equal( \"#{n.to_roman}\", #{n}.to_roman, \"#{n.to_words.upcase}\")"
puts "end\n\n" if (n + 1) % 10 == 0
end
puts "def test_100"
puts "\tassert_equal( \"C\", 100.to_roman, \"#{100.to_words.upcase}\")"
puts "end"
require_relative 'roman.rb'
require 'test/unit'
class RomanTest < Test::Unit::TestCase
def test_0s
assert_equal('nulla', 0.to_roman, 'ZERO')
assert_equal('I', 1.to_roman, 'ONE')
assert_equal('II', 2.to_roman, 'TWO')
assert_equal('III', 3.to_roman, 'THREE')
assert_equal('IV', 4.to_roman, 'FOUR')
assert_equal('V', 5.to_roman, 'FIVE')
assert_equal('VI', 6.to_roman, 'SIX')
assert_equal('VII', 7.to_roman, 'SEVEN')
assert_equal('VIII', 8.to_roman, 'EIGHT')
assert_equal('IX', 9.to_roman, 'NINE')
end
def test_10s
assert_equal('X', 10.to_roman, 'TEN')
assert_equal('XI', 11.to_roman, 'ELEVEN')
assert_equal('XII', 12.to_roman, 'TWELVE')
assert_equal('XIII', 13.to_roman, 'THIRTEEN')
assert_equal('XIV', 14.to_roman, 'FOURTEEN')
assert_equal('XV', 15.to_roman, 'FIFTEEN')
assert_equal('XVI', 16.to_roman, 'SIXTEEN')
assert_equal('XVII', 17.to_roman, 'SEVENTEEN')
assert_equal('XVIII', 18.to_roman, 'EIGHTEEN')
assert_equal('XIX', 19.to_roman, 'NINETEEN')
end
def test_20s
assert_equal('XX', 20.to_roman, 'TWENTY')
assert_equal('XXI', 21.to_roman, 'TWENTY ONE')
assert_equal('XXII', 22.to_roman, 'TWENTY TWO')
assert_equal('XXIII', 23.to_roman, 'TWENTY THREE')
assert_equal('XXIV', 24.to_roman, 'TWENTY FOUR')
assert_equal('XXV', 25.to_roman, 'TWENTY FIVE')
assert_equal('XXVI', 26.to_roman, 'TWENTY SIX')
assert_equal('XXVII', 27.to_roman, 'TWENTY SEVEN')
assert_equal('XXVIII', 28.to_roman, 'TWENTY EIGHT')
assert_equal('XXIX', 29.to_roman, 'TWENTY NINE')
end
def test_30s
assert_equal('XXX', 30.to_roman, 'THIRTY')
assert_equal('XXXI', 31.to_roman, 'THIRTY ONE')
assert_equal('XXXII', 32.to_roman, 'THIRTY TWO')
assert_equal('XXXIII', 33.to_roman, 'THIRTY THREE')
assert_equal('XXXIV', 34.to_roman, 'THIRTY FOUR')
assert_equal('XXXV', 35.to_roman, 'THIRTY FIVE')
assert_equal('XXXVI', 36.to_roman, 'THIRTY SIX')
assert_equal('XXXVII', 37.to_roman, 'THIRTY SEVEN')
assert_equal('XXXVIII', 38.to_roman, 'THIRTY EIGHT')
assert_equal('XXXIX', 39.to_roman, 'THIRTY NINE')
end
def test_40s
assert_equal('XL', 40.to_roman, 'FORTY')
assert_equal('XLI', 41.to_roman, 'FORTY ONE')
assert_equal('XLII', 42.to_roman, 'FORTY TWO')
assert_equal('XLIII', 43.to_roman, 'FORTY THREE')
assert_equal('XLIV', 44.to_roman, 'FORTY FOUR')
assert_equal('XLV', 45.to_roman, 'FORTY FIVE')
assert_equal('XLVI', 46.to_roman, 'FORTY SIX')
assert_equal('XLVII', 47.to_roman, 'FORTY SEVEN')
assert_equal('XLVIII', 48.to_roman, 'FORTY EIGHT')
assert_equal('XLIX', 49.to_roman, 'FORTY NINE')
end
def test_50s
assert_equal('XL', 50.to_roman, 'FIFTY')
assert_equal('XLI', 51.to_roman, 'FIFTY ONE')
assert_equal('XLII', 52.to_roman, 'FIFTY TWO')
assert_equal('XLIII', 53.to_roman, 'FIFTY THREE')
assert_equal('XLIV', 54.to_roman, 'FIFTY FOUR')
assert_equal('XLV', 55.to_roman, 'FIFTY FIVE')
assert_equal('XLVI', 56.to_roman, 'FIFTY SIX')
assert_equal('XLVII', 57.to_roman, 'FIFTY SEVEN')
assert_equal('XLVIII', 58.to_roman, 'FIFTY EIGHT')
assert_equal('XLIX', 59.to_roman, 'FIFTY NINE')
end
def test_60s
assert_equal('XLX', 60.to_roman, 'SIXTY')
assert_equal('XLXI', 61.to_roman, 'SIXTY ONE')
assert_equal('XLXII', 62.to_roman, 'SIXTY TWO')
assert_equal('XLXIII', 63.to_roman, 'SIXTY THREE')
assert_equal('XLXIV', 64.to_roman, 'SIXTY FOUR')
assert_equal('XLXV', 65.to_roman, 'SIXTY FIVE')
assert_equal('XLXVI', 66.to_roman, 'SIXTY SIX')
assert_equal('XLXVII', 67.to_roman, 'SIXTY SEVEN')
assert_equal('XLXVIII', 68.to_roman, 'SIXTY EIGHT')
assert_equal('XLXIX', 69.to_roman, 'SIXTY NINE')
end
def test_70s
assert_equal('XLXX', 70.to_roman, 'SEVENTY')
assert_equal('XLXXI', 71.to_roman, 'SEVENTY ONE')
assert_equal('XLXXII', 72.to_roman, 'SEVENTY TWO')
assert_equal('XLXXIII', 73.to_roman, 'SEVENTY THREE')
assert_equal('XLXXIV', 74.to_roman, 'SEVENTY FOUR')
assert_equal('XLXXV', 75.to_roman, 'SEVENTY FIVE')
assert_equal('XLXXVI', 76.to_roman, 'SEVENTY SIX')
assert_equal('XLXXVII', 77.to_roman, 'SEVENTY SEVEN')
assert_equal('XLXXVIII', 78.to_roman, 'SEVENTY EIGHT')
assert_equal('XLXXIX', 79.to_roman, 'SEVENTY NINE')
end
def test_80s
assert_equal('XLXXX', 80.to_roman, 'EIGHTY')
assert_equal('XLXXXI', 81.to_roman, 'EIGHTY ONE')
assert_equal('XLXXXII', 82.to_roman, 'EIGHTY TWO')
assert_equal('XLXXXIII', 83.to_roman, 'EIGHTY THREE')
assert_equal('XLXXXIV', 84.to_roman, 'EIGHTY FOUR')
assert_equal('XLXXXV', 85.to_roman, 'EIGHTY FIVE')
assert_equal('XLXXXVI', 86.to_roman, 'EIGHTY SIX')
assert_equal('XLXXXVII', 87.to_roman, 'EIGHTY SEVEN')
assert_equal('XLXXXVIII', 88.to_roman, 'EIGHTY EIGHT')
assert_equal('XLXXXIX', 89.to_roman, 'EIGHTY NINE')
end
def test_90s
assert_equal('XC', 90.to_roman, 'NINETY')
assert_equal('XCI', 91.to_roman, 'NINETY ONE')
assert_equal('XCII', 92.to_roman, 'NINETY TWO')
assert_equal('XCIII', 93.to_roman, 'NINETY THREE')
assert_equal('XCIV', 94.to_roman, 'NINETY FOUR')
assert_equal('XCV', 95.to_roman, 'NINETY FIVE')
assert_equal('XCVI', 96.to_roman, 'NINETY SIX')
assert_equal('XCVII', 97.to_roman, 'NINETY SEVEN')
assert_equal('XCVIII', 98.to_roman, 'NINETY EIGHT')
assert_equal('XCIX', 99.to_roman, 'NINETY NINE')
end
def test_100
assert_equal('C', 100.to_roman, 'ONE HUNDRED')
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment