package aima.test.core.unit.logic.propositional.parsing;
import org.junit.Assert;
import org.junit.Test;
import aima.core.logic.propositional.parsing.ast.PropositionSymbol;
public class PropositionSymbolTest {
@Test
public void test_isAlwaysTrueSymbol() {
Assert.assertTrue(PropositionSymbol.isAlwaysTrueSymbol("True"));
Assert.assertTrue(PropositionSymbol.isAlwaysTrueSymbol("tRue"));
Assert.assertTrue(PropositionSymbol.isAlwaysTrueSymbol("trUe"));
Assert.assertTrue(PropositionSymbol.isAlwaysTrueSymbol("truE"));
Assert.assertTrue(PropositionSymbol.isAlwaysTrueSymbol("TRUE"));
Assert.assertTrue(PropositionSymbol.isAlwaysTrueSymbol("true"));
//
Assert.assertFalse(PropositionSymbol.isAlwaysTrueSymbol("Tru3"));
Assert.assertFalse(PropositionSymbol.isAlwaysTrueSymbol("True "));
Assert.assertFalse(PropositionSymbol.isAlwaysTrueSymbol(" True"));
}
@Test
public void test_isAlwaysFalseSymbol() {
Assert.assertTrue(PropositionSymbol.isAlwaysFalseSymbol("False"));
Assert.assertTrue(PropositionSymbol.isAlwaysFalseSymbol("fAlse"));
Assert.assertTrue(PropositionSymbol.isAlwaysFalseSymbol("faLse"));
Assert.assertTrue(PropositionSymbol.isAlwaysFalseSymbol("falSe"));
Assert.assertTrue(PropositionSymbol.isAlwaysFalseSymbol("falsE"));
Assert.assertTrue(PropositionSymbol.isAlwaysFalseSymbol("FALSE"));
Assert.assertTrue(PropositionSymbol.isAlwaysFalseSymbol("false"));
//
Assert.assertFalse(PropositionSymbol.isAlwaysFalseSymbol("Fals3"));
Assert.assertFalse(PropositionSymbol.isAlwaysFalseSymbol("False "));
Assert.assertFalse(PropositionSymbol.isAlwaysFalseSymbol(" False"));
}
@Test
public void test_isPropositionSymbol() {
Assert.assertTrue(PropositionSymbol.isPropositionSymbol("True"));
Assert.assertTrue(PropositionSymbol.isPropositionSymbol("False"));
Assert.assertTrue(PropositionSymbol.isPropositionSymbol("A"));
Assert.assertTrue(PropositionSymbol.isPropositionSymbol("A1"));
Assert.assertTrue(PropositionSymbol.isPropositionSymbol("A_1"));
Assert.assertTrue(PropositionSymbol.isPropositionSymbol("a"));
Assert.assertTrue(PropositionSymbol.isPropositionSymbol("a1"));
Assert.assertTrue(PropositionSymbol.isPropositionSymbol("A_1"));
Assert.assertTrue(PropositionSymbol.isPropositionSymbol("_"));
Assert.assertTrue(PropositionSymbol.isPropositionSymbol("_1"));
Assert.assertTrue(PropositionSymbol.isPropositionSymbol("_1_2"));
Assert.assertTrue(PropositionSymbol.isPropositionSymbol("$"));
Assert.assertTrue(PropositionSymbol.isPropositionSymbol("$1"));
Assert.assertTrue(PropositionSymbol.isPropositionSymbol("$1_1"));
// Commas not allowed (only legal java identifier characters).
Assert.assertFalse(PropositionSymbol.isPropositionSymbol("A1,2"));
Assert.assertFalse(PropositionSymbol.isPropositionSymbol(" A"));
Assert.assertFalse(PropositionSymbol.isPropositionSymbol("A "));
Assert.assertFalse(PropositionSymbol.isPropositionSymbol("A B"));
}
@Test
public void test_isPropositionSymbolDoesNotContainConnectiveChars() {
// '~', '&', '|', '=', '<', '>'
Assert.assertFalse(PropositionSymbol.isPropositionSymbol("~"));
Assert.assertFalse(PropositionSymbol.isPropositionSymbol("&"));
Assert.assertFalse(PropositionSymbol.isPropositionSymbol("|"));
Assert.assertFalse(PropositionSymbol.isPropositionSymbol("="));
Assert.assertFalse(PropositionSymbol.isPropositionSymbol("<"));
Assert.assertFalse(PropositionSymbol.isPropositionSymbol(">"));
Assert.assertFalse(PropositionSymbol.isPropositionSymbol("A~"));
Assert.assertFalse(PropositionSymbol.isPropositionSymbol("A&"));
Assert.assertFalse(PropositionSymbol.isPropositionSymbol("A|"));
Assert.assertFalse(PropositionSymbol.isPropositionSymbol("A="));
Assert.assertFalse(PropositionSymbol.isPropositionSymbol("A<"));
Assert.assertFalse(PropositionSymbol.isPropositionSymbol("A>"));
}
@Test(expected = IllegalArgumentException.class)
public void test_IllegalArgumentOnConstruction() {
new PropositionSymbol("A_1,2");
}
}