Last active
August 29, 2015 14:05
-
-
Save gatukgl/a255d9afb911693664f9 to your computer and use it in GitHub Desktop.
Roman Number
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
######### Kata: Roman Number 1-30 ######### | |
import unittest | |
class RomanNumberTest(unittest.TestCase): | |
def setUp(self): | |
self.roman_number = RomanNumber() | |
def test_number_1_should_return_I(self): | |
result = self.roman_number.take(1) | |
self.assertEqual(result, 'I') | |
def test_number_2_should_return_II(self): | |
result = self.roman_number.take(2) | |
self.assertEqual(result, 'II') | |
def test_number_3_should_return_III(self): | |
result = self.roman_number.take(3) | |
self.assertEqual(result, 'III') | |
def test_number_4_should_return_IV(self): | |
result = self.roman_number.take(4) | |
self.assertEqual(result, 'IV') | |
def test_number_5_should_return_V(self): | |
result = self.roman_number.take(5) | |
self.assertEqual(result, 'V') | |
def test_number_6_should_return_VI(self): | |
result = self.roman_number.take(6) | |
self.assertEqual(result, 'VI') | |
def test_number_7_should_return_VII(self): | |
result = self.roman_number.take(7) | |
self.assertEqual(result, 'VII') | |
def test_number_9_should_return_IX(self): | |
result = self.roman_number.take(9) | |
self.assertEqual(result, 'IX') | |
def test_number_10_should_return_X(self): | |
result = self.roman_number.take(10) | |
self.assertEqual(result, 'X') | |
def test_number_11_should_return_XI(self): | |
result = self.roman_number.take(11) | |
self.assertEqual(result, 'XI') | |
def test_number_14_should_return_XIV(self): | |
result = self.roman_number.take(14) | |
self.assertEqual(result, 'XIV') | |
def test_number_18_should_return_XVIII(self): | |
result = self.roman_number.take(18) | |
self.assertEqual(result, 'XVIII') | |
def test_number_20_should_return_XX(self): | |
result = self.roman_number.take(20) | |
self.assertEqual(result, 'XX') | |
def test_number_21_should_return_XXI(self): | |
result = self.roman_number.take(21) | |
self.assertEqual(result, 'XXI') | |
def test_number_22_should_return_XXII(self): | |
result = self.roman_number.take(22) | |
self.assertEqual(result, 'XXII') | |
def test_number_24_should_return_XXIV(self): | |
result = self.roman_number.take(24) | |
self.assertEqual(result, 'XXIV') | |
def test_number_28_should_return_XXVIII(self): | |
result = self.roman_number.take(28) | |
self.assertEqual(result, 'XXVIII') | |
def test_number_29_should_return_XXIX(self): | |
result = self.roman_number.take(29) | |
self.assertEqual(result, 'XXIX') | |
def test_number_30_should_return_XXX(self): | |
result = self.roman_number.take(30) | |
self.assertEqual(result, 'XXX') | |
class RomanNumber: | |
def take(self, number): | |
result = '' | |
round = 1 | |
if number >= 20: | |
round = number / 10 | |
number = number % 10 | |
result = round * 'X' | |
if number >=9: | |
if number == 9: | |
result += 'I' | |
number += 1 | |
result += 'X' | |
number -= 10 | |
if number >= 4: | |
if number <= 4: | |
result += 'I' | |
number += 1 | |
result += 'V' | |
number -= 5 | |
result += number * 'I' | |
return result | |
if __name__ == "__main__": | |
unittest.main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment