content: 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");
  	}
  }
  