public void TestMethod6() { string x = "3div2>3*1>4-1"; string expected = "False"; Parser2 pasre = new Parser2(); Result res = pasre.Evaluate0(x); string actual = res.GetValue(); Assert.AreEqual(expected, actual); }
public void TestMethod1() { string x = "min(2+5div2,4)=(45-37)/2"; string expected = "True"; Parser2 pasre = new Parser2(); Result res = pasre.Evaluate0(x); string actual = res.GetValue(); Assert.AreEqual(expected, actual); }
public void TestMethod4() { string x = "min(34,12+2)>max(32,12+2)"; string expected = "False"; Parser2 pasre = new Parser2(); Result res = pasre.Evaluate0(x); string actual = res.GetValue(); Assert.AreEqual(expected, actual); }
public void AddNewValue(string expression, int r, int c, bool k) { int Count = 0; Result result1; table[r, c].exp = expression; int h = 0; // expression.Replace(" ",""); //MessageBox.Show(expression); if (expression != null) { while (h < expression.Length) { string str = null; int t2, t1 = (int)expression[h]; str += expression[h]; h++; if (t1 > 64 && t1 < 91 && h < expression.Length) { str += expression[h]; t2 = (int)expression[h] - 48; h++; if (h < expression.Length && expression[h] != ' ' && expression[h] > 47 && expression[h] < 58) { str += expression[h]; t2 *= 10; t2 += (int)expression[h] - 48; } if (k == true) { table[t2, t1 - 65].depends.Add(table[r, c].getName(c, r)); table[r, c].dependend.Add(table[t2, t1 - 65]); } if (circle(table[r, c], r, c, r, c) == false) { table[t2, t1 - 65].depends.RemoveAt(table[t2, t1 - 65].depends.Count - 1); MessageBox.Show("Неможливо застосувати формулу, клітинка вказує сама на себе"); Table.Rows[Table.CurrentCell.RowIndex].Cells[Table.CurrentCell.ColumnIndex].Value = ""; table[r, c].value = "0"; table[r, c].exp = null; AddNewValue(table[r, c].exp, r, c, true); break; } expression = expression.Replace(str, table[t2, t1 - 65].value); Count++; } } } if (circle(table[r, c], r, c, r, c) == true) { if (expression.Contains(">") || expression.Contains("<") || expression.Contains("=")) { result1 = parser2.Evaluate0(expression); } else { result1 = parser2.Evaluate(expression); } if (result1.Except()) { table[r, c].value = result1.GetValue(); // MessageBox.Show(table[r, c].value); Table.Rows[r].Cells[c].Value = result1.GetValue(); /////////// update(table[r, c], r, c); } else { Table.Rows[r].Cells[c].Value = result1.GetValue(); } } else { MessageBox.Show("Неможливо застосувати формулу, клітинка вказує сама на себе"); Table.Rows[Table.CurrentCell.RowIndex].Cells[Table.CurrentCell.ColumnIndex].Value = ""; } }