Package aima.test.core.unit.logic.fol.parsing

Source Code of aima.test.core.unit.logic.fol.parsing.FOLLexerTest

package aima.test.core.unit.logic.fol.parsing;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import aima.core.logic.common.LogicTokenTypes;
import aima.core.logic.common.Token;
import aima.core.logic.fol.domain.FOLDomain;
import aima.core.logic.fol.parsing.FOLLexer;

/**
* @author Ravi Mohan
*
*/
public class FOLLexerTest {
  FOLLexer lexer;

  @Before
  public void setUp() {
    FOLDomain domain = new FOLDomain();
    domain.addConstant("P");
    domain.addConstant("John");
    domain.addConstant("Saladin");
    domain.addFunction("LeftLeg");
    domain.addFunction("BrotherOf");
    domain.addFunction("EnemyOf");
    domain.addPredicate("HasColor");
    domain.addPredicate("King");
    lexer = new FOLLexer(domain);
  }

  @Test
  public void testLexBasicExpression() {
    lexer.setInput("( P )");
    Assert.assertEquals(new Token(LogicTokenTypes.LPAREN, "("),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.CONSTANT, "P"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.RPAREN, ")"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.EOI, "EOI"),
        lexer.nextToken());
  }

  @Test
  public void testConnectors() {
    lexer.setInput(" p  AND q");
    Assert.assertEquals(new Token(LogicTokenTypes.VARIABLE, "p"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.CONNECTOR, "AND"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.VARIABLE, "q"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.EOI, "EOI"),
        lexer.nextToken());
  }

  @Test
  public void testFunctions() {
    lexer.setInput(" LeftLeg(q)");
    Assert.assertEquals(new Token(LogicTokenTypes.FUNCTION, "LeftLeg"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.LPAREN, "("),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.VARIABLE, "q"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.RPAREN, ")"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.EOI, "EOI"),
        lexer.nextToken());
  }

  @Test
  public void testPredicate() {
    lexer.setInput(" HasColor(r)");
    Assert.assertEquals(new Token(LogicTokenTypes.PREDICATE, "HasColor"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.LPAREN, "("),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.VARIABLE, "r"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.RPAREN, ")"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.EOI, "EOI"),
        lexer.nextToken());
  }

  @Test
  public void testMultiArgPredicate() {
    lexer.setInput(" King(x,y)");
    Assert.assertEquals(new Token(LogicTokenTypes.PREDICATE, "King"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.LPAREN, "("),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.VARIABLE, "x"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.COMMA, ","),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.VARIABLE, "y"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.RPAREN, ")"),
        lexer.nextToken());
  }

  @Test
  public void testQuantifier() {
    lexer.setInput("FORALL x,y");
    Assert.assertEquals(new Token(LogicTokenTypes.QUANTIFIER, "FORALL"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.VARIABLE, "x"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.COMMA, ","),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.VARIABLE, "y"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.EOI, "EOI"),
        lexer.nextToken());
  }

  @Test
  public void testTermEquality() {
    lexer.setInput("BrotherOf(John) = EnemyOf(Saladin)");
    Assert.assertEquals(new Token(LogicTokenTypes.FUNCTION, "BrotherOf"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.LPAREN, "("),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.CONSTANT, "John"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.RPAREN, ")"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.EQUALS, "="),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.FUNCTION, "EnemyOf"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.LPAREN, "("),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.CONSTANT, "Saladin"),
        lexer.nextToken());
    Assert.assertEquals(new Token(LogicTokenTypes.RPAREN, ")"),
        lexer.nextToken());
  }
}
TOP

Related Classes of aima.test.core.unit.logic.fol.parsing.FOLLexerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.