コード例 #1
0
ファイル: CalculateTests.cs プロジェクト: dikirilov/ExpCalc
 public void addToOutput_Test()
 {
     bool k;
     int n, i;
     var proc = new Calculate();
     Regex oper = new Regex("[^a-vA-Z;\\=,?!@`~$%|0-9]()");
     string sub;
     Stack<string> input = new Stack<string>();
     Stack<string> output = new Stack<string>();
     // операции одинакового приоритета
     input.Push("+");
     output.Push("+");
     output.Push("+");
     sub = "+";
     proc.addToOutput(input, sub, oper);
     k = true;
     n = 2;
     i = 0;
     while (i < n)
     {
         k = input.ElementAt(i) == output.ElementAt(i);
         i += 1;
     }
     Assert.IsTrue(k);
     input.Clear();
     output.Clear();
     proc = null;
     // операция в стеке меньшего приоритета
     proc = new Calculate();
     input.Push("+");
     output.Push("+");
     output.Push("*");
     sub = "*";
     proc.addToOutput(input, sub, oper);
     k = true;
     n = 2;
     i = 0;
     while (i < n)
     {
         k = input.ElementAt(i) == output.ElementAt(i);
         i += 1;
     }
     Assert.IsTrue(k);
     input.Clear();
     output.Clear();
     proc = null;
     // операция в стеке бОльшего приоритета
     proc = new Calculate();
     input.Push("+");
     input.Push("*");
     input.Push("/");
     output.Push("+");
     output.Push("-");
     sub = "-";
     proc.addToOutput(input, sub, oper);
     k = true;
     n = 2;
     i = 0;
     while (i < n)
     {
         k = input.ElementAt(i) == output.ElementAt(i);
         i += 1;
     }
     Assert.IsTrue(k);
     input.Clear();
     output.Clear();
     proc = null;
     // закрывающая скобка
     proc = new Calculate();
     input.Push("*");
     input.Push("(");
     input.Push("+");
     input.Push("*");
     output.Push("*");
     sub = ")";
     proc.addToOutput(input, sub, oper);
     k = true;
     n = 1;
     i = 0;
     while (i < n)
     {
         k = input.ElementAt(i) == output.ElementAt(i);
         i += 1;
     }
     Assert.IsTrue(k);
 }