コード例 #1
0
ファイル: UnitTest.cs プロジェクト: lizejia/ProblemThree
        public void TestCheckTrue()
        {
            RuleMain calculate = new RuleMain("MMCMMIII");
            var      output    = calculate.Check();

            Assert.AreEqual(true, output);
        }
コード例 #2
0
ファイル: UnitTest.cs プロジェクト: lizejia/ProblemThree
        public void TestCheckFalse()
        {
            RuleMain calculate = new RuleMain("MCMXLIVV");
            var      output    = calculate.Check();

            Assert.AreEqual(false, output);
        }
コード例 #3
0
        public void NumberCalculate()
        {
            StringBuilder stringBuilder = new StringBuilder();

            foreach (var item in GalaxyNumber)
            {
                stringBuilder.Append(GalaxyNumberMapper[item].ToString());
            }
            string   romanStr = stringBuilder.ToString();
            RuleMain ruleMain = new RuleMain(romanStr);

            if (ruleMain.Check())
            {
                var _calculateSymbolList = romanStr.ToList();
                for (int i = 0; i < _calculateSymbolList.Count; i++)
                {
                    int nextIndex    = i + 1;
                    var currentPrice = (decimal)Tool.ToRomanNumeral(_calculateSymbolList[i].ToString());
                    var nextPrice    = nextIndex < _calculateSymbolList.Count ? (decimal)Tool.ToRomanNumeral(_calculateSymbolList[nextIndex].ToString()) : 0M;
                    if (currentPrice < nextPrice)
                    {
                        GalaxyNumberPrice += nextPrice - currentPrice;
                        i++;
                    }
                    else
                    {
                        GalaxyNumberPrice += currentPrice;
                    }
                }
            }
            else
            {
                throw new NotImplementedException("Check失败");
            }
        }