public void testComplexSentenceParse()
{
BinarySentence sen = (BinarySentence)parser
.parse("((OR NORVIG AIMA LISP) AND TRUE)");
Assert.AreEqual(typeof(BinarySentence), sen.GetType());
sen = (BinarySentence)parser
.parse("((OR NORVIG AIMA LISP) AND (((LISP => COOL))))");
Assert.AreEqual(typeof(BinarySentence), sen.GetType());
Assert.AreEqual(
" ( ( OR NORVIG AIMA LISP ) AND ( LISP => COOL ) )", sen
.ToString());
String s = "((NOT (P AND Q )) AND ((NOT (R AND S))))";
sen = (BinarySentence)parser.parse(s);
Assert.AreEqual(
" ( ( NOT ( P AND Q ) ) AND ( NOT ( R AND S ) ) )", sen
.ToString());
s = "((P AND Q) OR (S AND T))";
sen = (BinarySentence)parser.parse(s);
Assert
.AreEqual(" ( ( P AND Q ) OR ( S AND T ) )", sen
.ToString());
Assert.AreEqual("OR", sen.getOperator());
s = "(NOT ((P AND Q) => (S AND T)))";
UnarySentence nsen = (UnarySentence)parser.parse(s);
// AreEqual("=>",sen.getOperator());
s = "(NOT (P <=> (S AND T)))";
nsen = (UnarySentence)parser.parse(s);
Assert.AreEqual(" ( NOT ( P <=> ( S AND T ) ) ) ", nsen
.ToString());
s = "(P <=> (S AND T))";
sen = (BinarySentence)parser.parse(s);
s = "(P => Q)";
sen = (BinarySentence)parser.parse(s);
s = "((P AND Q) => R)";
sen = (BinarySentence)parser.parse(s);
}
}