Пример #1
0
        public void SingleRomanDigitTest()
        {
            int expectedValue = 1;
            int actualValue   = RomanToDecimalConverter.Convert("I");

            Assert.Equal(expectedValue, actualValue);
        }
        public void LNeverCanSubtracted()
        {
            var exceptionForLL = false;
            var exceptionForLC = false;
            var exceptionForLD = false;
            var exceptionForLM = false;

            Assert.AreEqual(51, RomanToDecimalConverter.Convert("LI"));
            Assert.AreEqual(55, RomanToDecimalConverter.Convert("LV"));
            Assert.AreEqual(60, RomanToDecimalConverter.Convert("LX"));

            try { RomanToDecimalConverter.Convert("LL"); }
            catch (InvalidRomanNumberException) { exceptionForLL = true; }
            try { RomanToDecimalConverter.Convert("LC"); }
            catch (InvalidRomanNumberException) { exceptionForLC = true; }
            try { RomanToDecimalConverter.Convert("LD"); }
            catch (InvalidRomanNumberException) { exceptionForLD = true; }
            try { RomanToDecimalConverter.Convert("LM"); }
            catch (InvalidRomanNumberException) { exceptionForLM = true; }

            Assert.IsTrue(exceptionForLL);
            Assert.IsTrue(exceptionForLC);
            Assert.IsTrue(exceptionForLD);
            Assert.IsTrue(exceptionForLM);
        }
        public void VNeverCanSubtracted()
        {
            Assert.AreEqual(6, RomanToDecimalConverter.Convert("VI"));

            var exceptionForVV = false;
            var exceptionForVX = false;
            var exceptionForVL = false;
            var exceptionForVC = false;
            var exceptionForVD = false;
            var exceptionForVM = false;

            try { RomanToDecimalConverter.Convert("VV"); }
            catch (InvalidRomanNumberException) { exceptionForVV = true; }
            try { RomanToDecimalConverter.Convert("VX"); }
            catch (InvalidRomanNumberException) { exceptionForVX = true; }
            try { RomanToDecimalConverter.Convert("VL"); }
            catch (InvalidRomanNumberException) { exceptionForVL = true; }
            try { RomanToDecimalConverter.Convert("VC"); }
            catch (InvalidRomanNumberException) { exceptionForVC = true; }
            try { RomanToDecimalConverter.Convert("VD"); }
            catch (InvalidRomanNumberException) { exceptionForVD = true; }
            try { RomanToDecimalConverter.Convert("VM"); }
            catch (InvalidRomanNumberException) { exceptionForVM = true; }

            Assert.IsTrue(exceptionForVV);
            Assert.IsTrue(exceptionForVX);
            Assert.IsTrue(exceptionForVL);
            Assert.IsTrue(exceptionForVC);
            Assert.IsTrue(exceptionForVD);
            Assert.IsTrue(exceptionForVM);
        }
 public void CorrectSubstractionsForC()
 {
     Assert.AreEqual(101, RomanToDecimalConverter.Convert("CI"));
     Assert.AreEqual(105, RomanToDecimalConverter.Convert("CV"));
     Assert.AreEqual(110, RomanToDecimalConverter.Convert("CX"));
     Assert.AreEqual(150, RomanToDecimalConverter.Convert("CL"));
     Assert.AreEqual(200, RomanToDecimalConverter.Convert("CC"));
     Assert.AreEqual(400, RomanToDecimalConverter.Convert("CD"));
     Assert.AreEqual(900, RomanToDecimalConverter.Convert("CM"));
 }
Пример #5
0
        private double GetDecimalValue(IEnumerable <ConstantSymbol> constants)
        {
            var romanSymbols = new StringBuilder();

            constants.Select(c => ConstantsTable[c])
            .ToList().ForEach(r => romanSymbols.Append(r));

            var romanNumber = romanSymbols.ToString();

            return(RomanToDecimalConverter.Convert(romanNumber));
        }
        public void CanConvertAdditions()
        {
            var resultForVIII  = RomanToDecimalConverter.Convert("VIII");
            var resultForXIII  = RomanToDecimalConverter.Convert("XIII");
            var resultForXV    = RomanToDecimalConverter.Convert("XV");
            var resultForXVIII = RomanToDecimalConverter.Convert("XVIII");

            Assert.AreEqual(8, resultForVIII);
            Assert.AreEqual(13, resultForXIII);
            Assert.AreEqual(15, resultForXV);
            Assert.AreEqual(18, resultForXVIII);
        }
        public void CanConvertRepetitions()
        {
            var resultForIII = RomanToDecimalConverter.Convert("III");
            var resultForXXX = RomanToDecimalConverter.Convert("XXX");
            var resultForCCC = RomanToDecimalConverter.Convert("CCC");
            var resultForMMM = RomanToDecimalConverter.Convert("MMM");

            Assert.AreEqual(3, resultForIII);
            Assert.AreEqual(30, resultForXXX);
            Assert.AreEqual(300, resultForCCC);
            Assert.AreEqual(3000, resultForMMM);
        }
        public void CanConvertSubtractions()
        {
            var resultForIV = RomanToDecimalConverter.Convert("IV");
            var resultForIX = RomanToDecimalConverter.Convert("IX");
            var resultForXL = RomanToDecimalConverter.Convert("XL");
            var resultForXC = RomanToDecimalConverter.Convert("XC");
            var resultForCD = RomanToDecimalConverter.Convert("CD");
            var resultForCM = RomanToDecimalConverter.Convert("CM");

            Assert.AreEqual(4, resultForIV);
            Assert.AreEqual(9, resultForIX);
            Assert.AreEqual(40, resultForXL);
            Assert.AreEqual(90, resultForXC);
            Assert.AreEqual(400, resultForCD);
            Assert.AreEqual(900, resultForCM);
        }
        public void CanConvertPrimarySymbols()
        {
            var resultForI = RomanToDecimalConverter.Convert("I");
            var resultForV = RomanToDecimalConverter.Convert("V");
            var resultForX = RomanToDecimalConverter.Convert("X");
            var resultForL = RomanToDecimalConverter.Convert("L");
            var resultForC = RomanToDecimalConverter.Convert("C");
            var resultForD = RomanToDecimalConverter.Convert("D");
            var resultForM = RomanToDecimalConverter.Convert("M");

            Assert.AreEqual(1, resultForI);
            Assert.AreEqual(5, resultForV);
            Assert.AreEqual(10, resultForX);
            Assert.AreEqual(50, resultForL);
            Assert.AreEqual(100, resultForC);
            Assert.AreEqual(500, resultForD);
            Assert.AreEqual(1000, resultForM);
        }
        public void ThrowsExceptionForSubstractionFaultForX()
        {
            var exceptionForD = false;
            var exceptionForM = false;

            try { RomanToDecimalConverter.Convert("ID"); }
            catch (InvalidRomanNumberException) { exceptionForD = true; }
            try { RomanToDecimalConverter.Convert("IM"); }
            catch (InvalidRomanNumberException) { exceptionForM = true; }

            Assert.AreEqual(11, RomanToDecimalConverter.Convert("XI"));
            Assert.AreEqual(15, RomanToDecimalConverter.Convert("XV"));
            Assert.AreEqual(20, RomanToDecimalConverter.Convert("XX"));
            Assert.AreEqual(40, RomanToDecimalConverter.Convert("XL"));
            Assert.AreEqual(90, RomanToDecimalConverter.Convert("XC"));
            Assert.IsTrue(exceptionForD);
            Assert.IsTrue(exceptionForM);
        }
        public void DNeverCanSubtracted()
        {
            var exceptionForDD = false;
            var exceptionForDM = false;

            Assert.AreEqual(501, RomanToDecimalConverter.Convert("DI"));
            Assert.AreEqual(505, RomanToDecimalConverter.Convert("DV"));
            Assert.AreEqual(510, RomanToDecimalConverter.Convert("DX"));
            Assert.AreEqual(550, RomanToDecimalConverter.Convert("DL"));
            Assert.AreEqual(600, RomanToDecimalConverter.Convert("DC"));

            try { RomanToDecimalConverter.Convert("DD"); }
            catch (InvalidRomanNumberException) { exceptionForDD = true; }
            try { RomanToDecimalConverter.Convert("DM"); }
            catch (InvalidRomanNumberException) { exceptionForDM = true; }

            Assert.IsTrue(exceptionForDD);
            Assert.IsTrue(exceptionForDM);
        }
        public void ThrowsExceptionForSubstractionFaultForI()
        {
            var exceptionForL = false;
            var exceptionForC = false;
            var exceptionForD = false;
            var exceptionForM = false;

            try{ RomanToDecimalConverter.Convert("IL"); }
            catch (InvalidRomanNumberException) { exceptionForL = true; }
            try { RomanToDecimalConverter.Convert("IC"); }
            catch (InvalidRomanNumberException) { exceptionForC = true; }
            try { RomanToDecimalConverter.Convert("ID"); }
            catch (InvalidRomanNumberException) { exceptionForD = true; }
            try { RomanToDecimalConverter.Convert("IM"); }
            catch (InvalidRomanNumberException) { exceptionForM = true; }

            Assert.IsTrue(exceptionForL);
            Assert.IsTrue(exceptionForC);
            Assert.IsTrue(exceptionForD);
            Assert.IsTrue(exceptionForM);
            Assert.AreEqual(4, RomanToDecimalConverter.Convert("IV"));
            Assert.AreEqual(9, RomanToDecimalConverter.Convert("IX"));
        }
 public void ThrowsExceptionForRepettitionFaultForM()
 {
     RomanToDecimalConverter.Convert("MMMM");
 }