public void Verify_infix_to_postfix_conversion()
        {
            var converter = new InfixToPostfixConverter();
            Assert.AreEqual(converter.Convert("()"), "");
            Assert.AreEqual(converter.Convert("( true && (true) ) || false"), "true true && false ||");
            Assert.AreEqual(converter.Convert(
                "(true || ((true || (false || true)))) || (true && true && false || (false || true && (true && true || ((false))))) && false"),
                "true true false true || || || true true false false true true true false || && && || || && && false && ||");
            Assert.AreEqual(converter.Convert("!!((!(!!true))) && true"), "true ! ! ! ! ! true &&");

            try
            {
                converter.Convert("(");
            }
            catch (Exception e)
            {
                Assert.IsTrue(e is ArgumentException);
            }

            try
            {
                converter.Convert(")");
            }
            catch (Exception e)
            {
                Assert.IsTrue(e is ArgumentException);
            }

            try
            {
                converter.Convert("(( true )");
            }
            catch (Exception e)
            {
                Assert.IsTrue(e is ArgumentException);
            }

            try
            {
                converter.Convert("( true && false ))");
            }
            catch (Exception e)
            {
                Assert.IsTrue(e is ArgumentException);
            }
        }
コード例 #2
0
 public Evaluator()
 {
     _converter = new InfixToPostfixConverter();
     _parser = new PostfixParser();
 }