package aima.test.core.unit.logic.propositional.visitors;
import java.util.Set;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import aima.core.logic.propositional.parsing.PEParser;
import aima.core.logic.propositional.parsing.ast.Sentence;
import aima.core.logic.propositional.parsing.ast.Symbol;
import aima.core.logic.propositional.visitors.SymbolCollector;
/**
* @author Ravi Mohan
*
*/
public class SymbolCollectorTest {
private PEParser parser;
private SymbolCollector collector;
@Before
public void setUp() {
parser = new PEParser();
collector = new SymbolCollector();
}
@Test
public void testCollectSymbolsFromComplexSentence() {
Sentence sentence = (Sentence) parser
.parse(" ( ( ( NOT B11 ) OR ( P12 OR P21 ) ) AND ( ( B11 OR ( NOT P12 ) ) AND ( B11 OR ( NOT P21 ) ) ) )");
Set<Symbol> s = collector.getSymbolsIn(sentence);
Assert.assertEquals(3, s.size());
Sentence b11 = (Sentence) parser.parse("B11");
Sentence p21 = (Sentence) parser.parse("P21");
Sentence p12 = (Sentence) parser.parse("P12");
Assert.assertTrue(s.contains(b11));
Assert.assertTrue(s.contains(p21));
Assert.assertTrue(s.contains(p12));
}
}