diff --git a/src/RomanNumerals.java b/src/RomanNumerals.java index 20904f0..6e08c5d 100644 --- a/src/RomanNumerals.java +++ b/src/RomanNumerals.java @@ -2,7 +2,174 @@ public class RomanNumerals { public int convertToInteger(String romanNum) { // To be Implemented - return 0; + int resultOfRomanToInt = 0; + + boolean foundIII = romanNum.contains("III"); + + if(foundIII) { + + resultOfRomanToInt += 3; + + }else { + + boolean foundII = romanNum.contains("II"); + + if(foundII) { + + resultOfRomanToInt += 2; + + }else { + boolean foundIV = romanNum.contains("IV"); + + if(foundIV) { + + resultOfRomanToInt += 4; + + }else { + boolean foundIX = romanNum.contains("IX"); + + if(foundIX) { + + resultOfRomanToInt += 9; + + }else { + boolean foundI = romanNum.contains("I"); + + if(foundI) { + + resultOfRomanToInt += 1; + + } + } + } + } + } + + boolean foundIX = romanNum.contains("IX"); + boolean foundXC = romanNum.contains("XC"); + + + if(!foundIX && !foundXC) { + + boolean foundXL = romanNum.contains("XL"); + if(foundXL) { + + resultOfRomanToInt += 40; + }else { + + boolean foundXXX = romanNum.contains("XXX"); + if(foundXXX) { + + resultOfRomanToInt += 30; + }else { + + boolean foundXX = romanNum.contains("XX"); + if(foundXX) { + + resultOfRomanToInt += 20; + }else { + boolean foundX = romanNum.contains("X"); + if(foundX) { + + resultOfRomanToInt += 10; + } + } + } + } + } + + + boolean foundXL = romanNum.contains("XL"); + + + if(!foundXL) { + boolean foundL = romanNum.contains("L"); + if(foundL) { + + resultOfRomanToInt += 50; + } + + } + + boolean foundCD = romanNum.contains("CD"); + boolean foundDC1 = romanNum.contains("DC"); + boolean foundCM = romanNum.contains("CM"); + if(!foundCD && !foundDC1 && !foundCM) { + boolean foundXC1 = romanNum.contains("XC"); + if(foundXC1) { + + resultOfRomanToInt += 90; + }else { + + boolean foundCCC = romanNum.contains("CCC"); + if(foundCCC) { + + resultOfRomanToInt += 300; + }else { + + boolean foundCC = romanNum.contains("CC"); + if(foundCC) { + + resultOfRomanToInt += 200; + }else { + boolean foundC = romanNum.contains("C"); + if(foundC) { + + resultOfRomanToInt += 100; + } + + } + } + } + } + + boolean foundXC1 = romanNum.contains("CD"); + if(foundXC1) { + + resultOfRomanToInt += 400; + }else { + + boolean foundDCCC = romanNum.contains("DCCC"); + if(foundDCCC) { + + resultOfRomanToInt += 800; + }else { + + boolean foundDCC = romanNum.contains("DCC"); + if(foundDCC) { + + resultOfRomanToInt += 700; + }else { + boolean foundDC = romanNum.contains("DC"); + if(foundDC) { + + resultOfRomanToInt += 600; + }else { + boolean foundD = romanNum.contains("D"); + if(foundD) { + + resultOfRomanToInt += 500; + } + } + } + } + } + + boolean foundCM1 = romanNum.contains("CM"); + if(foundCM1) { + + resultOfRomanToInt += 900; + }else { + for(int i = 0; i < romanNum.length(); i++) { + + if(romanNum.charAt(i) == 'M') { + resultOfRomanToInt += 1000; + } + } + + } + + return resultOfRomanToInt; } } diff --git a/tests/TestRomanNumerals.java b/tests/TestRomanNumerals.java index 5d1de75..673435f 100644 --- a/tests/TestRomanNumerals.java +++ b/tests/TestRomanNumerals.java @@ -4,9 +4,65 @@ public class TestRomanNumerals { + private RomanNumerals romanNumerals; @Test public void test() { - fail("Not yet implemented"); + + romanNumerals = new RomanNumerals(); + + //Before implementation of converToInteger of RomanNumerals + int actual = romanNumerals.convertToInteger("X"); + int expected = 10; + assertEquals(expected, actual); + + int actual1 = romanNumerals.convertToInteger("XX"); + int expected1 = 20; + assertEquals(expected1, actual1); + + assertEquals(3 , romanNumerals.convertToInteger("III")); + + assertEquals(2 , romanNumerals.convertToInteger("II")); + + assertEquals(1 , romanNumerals.convertToInteger("I")); + + assertEquals(4 , romanNumerals.convertToInteger("IV")); + + assertEquals(9 , romanNumerals.convertToInteger("IX")); + + assertEquals(10 , romanNumerals.convertToInteger("X")); + + assertEquals(20 , romanNumerals.convertToInteger("XX")); + + assertEquals(30 , romanNumerals.convertToInteger("XXX")); + + assertEquals(40 , romanNumerals.convertToInteger("XL")); + + assertEquals(50 , romanNumerals.convertToInteger("L")); + + assertEquals(60 , romanNumerals.convertToInteger("LX")); + assertEquals(70 , romanNumerals.convertToInteger("LXX")); + assertEquals(80 , romanNumerals.convertToInteger("LXXX")); + + assertEquals(90 , romanNumerals.convertToInteger("XC")); + assertEquals(100 , romanNumerals.convertToInteger("C")); + assertEquals(200 , romanNumerals.convertToInteger("CC")); + assertEquals(300 , romanNumerals.convertToInteger("CCC")); + + assertEquals(400 , romanNumerals.convertToInteger("CD")); + assertEquals(500 , romanNumerals.convertToInteger("D")); + assertEquals(600 , romanNumerals.convertToInteger("DC")); + assertEquals(700 , romanNumerals.convertToInteger("DCC")); + assertEquals(800 , romanNumerals.convertToInteger("DCCC")); + assertEquals(900 , romanNumerals.convertToInteger("CM")); + + assertEquals(900 , romanNumerals.convertToInteger("CM")); + + assertEquals(1000 , romanNumerals.convertToInteger("M")); + + assertEquals(2014 , romanNumerals.convertToInteger(" MMXIV")); + + assertEquals(1984 , romanNumerals.convertToInteger("MCMLXXXIV")); + } }