四则运算-词频统计

本实验用了vs2015自带的cppunit。


[TestMethod()] public void IsNumbericTest() { string input; bool expected; bool actual; //test1 input = "sd13d"; expected = false; actual = Program.IsNumberic(input); Assert.AreEqual(expected, actual); //test2 input = "123.456"; expected = true; actual = Program.IsNumberic(input); Assert.AreEqual(expected, actual); }

该段代码用来测试字符串是否为数字,用bool类型来表示,是数字返回1,不是返回0.

[TestMethod()]
        public void isOperateorsTest()
        {
            string input;
            bool expected;
            bool actual;

            //test1
            input = "2";
            expected = false;
            actual = Program.isOperateors(input);
            Assert.AreEqual(expected, actual);

            //test2
            input = "+";
            expected = true;
            actual = Program.isOperateors(input);
            Assert.AreEqual(expected, actual);
        }

 该段代码为判断是否为运算符,给出两个测试输入,一个是,一个不是,用人工预测的expected和事实输出的actual进行比较。

public static int[,] m_priorityTable = new int[,]
        {
          /*行为入栈运算符,列为栈顶运算符,2表示等于号,1表示大于号,
           0表示小于号,-1表示错误的匹配*/
          //////* '+','-','*','/','(',')','#'*/
          /*'+'*/{ 1,  1,  0,  0,  0,  1,  1},
          /*'-'*/{ 1,  1,  0,  0,  0,  1,  1},
          /*'*'*/{ 1,  1,  1,  1,  0,  1,  1},
          /*'/'*/{ 1,  1,  1,  1,  0,  1,  1},
          /*'('*/{ 0,  0,  0,  0,  0,  2, -1},
          /*')'*/{ 0,  0,  0,  0, -1,  1,  1},
          /*'#'*/{ 0,  0,  0,  0,  0, -1,  2},
        };

 这个是从网上下载的符号优先级表,把它存入二维数组中来实现,行列来比较。

[TestMethod()]
        public void IsPriorityTest()
        {
            int input1;
            int input2;
            int expected;
            int actual;

            //test1
            input1 = 3;
            input2 = 2;
            expected = 1;
            actual = Program.IsPriority(input1, input2);
            Assert.AreEqual(expected, actual);
        }

 测试符号优先级。

[TestMethod()]
        public void IsPositiveIntTest()
        {
            string input;
            bool expected;
            bool actual;

            //test1
            input = "-1";
            expected = false;
            actual = Program.IsPositiveInt(input);
            Assert.AreEqual(expected, actual);

            //test1
            input = "3";
            expected = true;
            actual = Program.IsPositiveInt(input);
            Assert.AreEqual(expected, actual);
        }

 测试一个数是否是正负数。

public void SplitExpressTest()
        {
            string input;
            Queue<string> expected;
            Queue<string> actual;

            //test
            input = "(0/2)+4+4";
            expected = new Queue<string>();
            expected.Enqueue("(");
            expected.Enqueue("0");
            expected.Enqueue("/");
            expected.Enqueue("2");
            expected.Enqueue(")");
            expected.Enqueue("+");
            expected.Enqueue("4");
            expected.Enqueue("+");
            expected.Enqueue("4");
            expected.Enqueue("#");

            actual = Program.SplitExpress(input);
            CollectionAssert.AreEqual(expected, actual);
        }

 将表达式分割成一个一个的字符存入队列。

[TestMethod()]
        public void InorderToPostorderTest()
        {
            Queue<string> input = new Queue<string>();
            List<string> expected;
            List<string> actual;

            //test
            input.Enqueue("0");
            input.Enqueue("-");
            input.Enqueue("(");
            input.Enqueue("7");
            input.Enqueue("/");
            input.Enqueue("2");
            input.Enqueue(")");
            input.Enqueue("+");
            input.Enqueue("4");
            input.Enqueue("#");

            expected = new List<string>() { "0", "7", "2", "/", "-", "4", "+" };
            actual = Program.InorderToPostorder(input);

            CollectionAssert.AreEqual(expected, actual);
        }

 测试由中缀表达式转换为后缀表达式是否正确。

[TestMethod()]
        public void IsResultTest()
        {
            List<string> input;
            double expected;
            double actual;

            //test
            input = new List<string>() { "5", "2", "/", "3", "*", "8", "-" };
            expected = -0.5;
            Program.IsResult(input, out actual);
            Assert.AreEqual(expected, actual);
        }

 测试最后表达式的值是否正确。

预测结果:

结对照片:

感悟:

这个过程以李俞寰同学为主导,我在旁边学习。

原文地址:https://www.cnblogs.com/duq11/p/5918383.html