public void testAIMA2eExample()
{
// 2nd Edition Pg 221
Sentence sentence = (Sentence)parser
.parse("(((A OR (NOT B)) AND ((NOT B) OR (NOT C))) AND (C OR A))");
List<Symbol> neg = classifier.getNegativeSymbolsIn(sentence);
List<Symbol> pos = classifier.getPositiveSymbolsIn(sentence);
List<Symbol> pureNeg = classifier.getPureNegativeSymbolsIn(sentence);
List<Symbol> purePos = classifier.getPurePositiveSymbolsIn(sentence);
List<Symbol> pure = classifier.getPureSymbolsIn(sentence);
List<Symbol> impure = classifier.getImpureSymbolsIn(sentence);
Sentence a = (Sentence)parser.parse("A");
Sentence b = (Sentence)parser.parse("B");
Sentence c = (Sentence)parser.parse("C");
Assert.AreEqual(2, neg.Count);
Assert.IsTrue(FindSentence(neg, b));
Assert.IsTrue(FindSentence(neg, c));
Assert.AreEqual(2, pos.Count);
Assert.IsTrue(FindSentence(pos, a));
Assert.IsTrue(FindSentence(pos, c));
Assert.AreEqual(1, pureNeg.Count);
Assert.IsTrue(FindSentence(pureNeg, b));
Assert.AreEqual(1, purePos.Count);
Assert.IsTrue(FindSentence(purePos, a));
Assert.AreEqual(2, pure.Count);
Assert.IsTrue(FindSentence(pure, a));
Assert.IsTrue(FindSentence(pure, b));
Assert.AreEqual(1, impure.Count);
Assert.IsTrue(FindSentence(impure, c));
}
}