コード例 #1
0
        public void ConvertShouldConvertToReversePolishNotation()
        {
            var input = new[] // 3 + 4 * 2 / (1 - 5)^2
            {
                InputCell.Number(3),
                InputCell.Symbol("+"),
                InputCell.Number(4),
                InputCell.Symbol("*"),
                InputCell.Number(2),
                InputCell.Symbol("/"),
                InputCell.Symbol("("),
                InputCell.Number(1),
                InputCell.Symbol("-"),
                InputCell.Number(5),
                InputCell.Symbol(")"),
                InputCell.Symbol("^"),
                InputCell.Number(2),
            };

            var result = new RpnConverter(new InputChecker()).Convert(input);

            // 3 4 2 * 1 5 - 2 ^ / +

            Assert.AreEqual(3, result[0].Value);
            Assert.AreEqual(4, result[1].Value);
            Assert.AreEqual(2, result[2].Value);
            Assert.AreEqual("*", result[3].Value);
            Assert.AreEqual(1, result[4].Value);
            Assert.AreEqual(5, result[5].Value);
            Assert.AreEqual("-", result[6].Value);
            Assert.AreEqual(2, result[7].Value);
            Assert.AreEqual("^", result[8].Value);
            Assert.AreEqual("/", result[9].Value);
            Assert.AreEqual("+", result[10].Value);
        }
コード例 #2
0
 public void WeightShouldReturnCorrectWeigth()
 {
     Assert.AreEqual(0, InputCell.Number(1).Weight);
     Assert.AreEqual(1, InputCell.Symbol(")").Weight);
     Assert.AreEqual(1, InputCell.Symbol("(").Weight);
     Assert.AreEqual(2, InputCell.Symbol("+").Weight);
     Assert.AreEqual(2, InputCell.Symbol("-").Weight);
     Assert.AreEqual(3, InputCell.Symbol("*").Weight);
     Assert.AreEqual(3, InputCell.Symbol("/").Weight);
     Assert.AreEqual(4, InputCell.Symbol("^").Weight);
 }
コード例 #3
0
        public void CheckShouldThrowExceptionIfThereIsOpeartionsInLastCell()
        {
            var input = new[]
            {
                InputCell.Number(2),
                InputCell.Symbol("+"),
                InputCell.Number(2),
                InputCell.Symbol("+")
            };

            Assert.Throws <ArgumentException>(() =>
                                              new InputChecker().Check(input));
        }
コード例 #4
0
        public void CountShouldReturn3Dot5()
        {
            // 3 + 4 * 2 / (1 - 5)^2 = 3.5
            // 3 4 2 * 1 5 - 2 ^ / +
            var input = new[]
            {
                InputCell.Number(3),
                InputCell.Number(4),
                InputCell.Number(2),
                InputCell.Symbol("*"),
                InputCell.Number(1),
                InputCell.Number(5),
                InputCell.Symbol("-"),
                InputCell.Number(2),
                InputCell.Symbol("^"),
                InputCell.Symbol("/"),
                InputCell.Symbol("+")
            };

            var result = new RpnCounter().Count(input);

            Assert.AreEqual(3.5, result);
        }
コード例 #5
0
 public void IsNumberShouldReturnTrue()
 {
     Assert.IsTrue(InputCell.Number(1).IsNumber());
 }