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

Source Code of aima.test.core.unit.logic.fol.inference.FOLTFMResolutionTest

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

import org.junit.Ignore;
import org.junit.Test;

import aima.core.logic.fol.inference.FOLTFMResolution;
import aima.test.core.unit.logic.fol.CommonFOLInferenceProcedureTests;

/**
* @author Ciaran O'Reilly
*
*/
public class FOLTFMResolutionTest extends CommonFOLInferenceProcedureTests {

  @Test
  public void testDefiniteClauseKBKingsQueryCriminalXFalse() {
    testDefiniteClauseKBKingsQueryCriminalXFalse(new FOLTFMResolution());
  }

  @Test
  public void testDefiniteClauseKBKingsQueryRichardEvilFalse() {
    testDefiniteClauseKBKingsQueryRichardEvilFalse(new FOLTFMResolution());
  }

  @Test
  public void testDefiniteClauseKBKingsQueryJohnEvilSucceeds() {
    testDefiniteClauseKBKingsQueryJohnEvilSucceeds(new FOLTFMResolution());
  }

  @Test
  public void testDefiniteClauseKBKingsQueryEvilXReturnsJohnSucceeds() {
    testDefiniteClauseKBKingsQueryEvilXReturnsJohnSucceeds(new FOLTFMResolution());
  }

  @Test
  public void testDefiniteClauseKBKingsQueryKingXReturnsJohnAndRichardSucceeds() {
    testDefiniteClauseKBKingsQueryKingXReturnsJohnAndRichardSucceeds(new FOLTFMResolution());
  }

  @Test
  public void testDefiniteClauseKBWeaponsQueryCriminalXReturnsWestSucceeds() {
    testDefiniteClauseKBWeaponsQueryCriminalXReturnsWestSucceeds(new FOLTFMResolution());
  }

  @Test
  public void testHornClauseKBRingOfThievesQuerySkisXReturnsNancyRedBertDrew() {
    // The clauses in this KB can keep creating resolvents infinitely,
    // therefore give it 20 seconds to find the 4 answers to this, should
    // be more than enough.
    testHornClauseKBRingOfThievesQuerySkisXReturnsNancyRedBertDrew(new FOLTFMResolution(
        40 * 1000));
  }

  @Test
  public void testFullFOLKBLovesAnimalQueryKillsCuriosityTunaSucceeds() {
    // 10 seconds should be more than plenty for this query to finish.
    testFullFOLKBLovesAnimalQueryKillsCuriosityTunaSucceeds(
        new FOLTFMResolution(10 * 1000), false);
  }

  @Test
  public void testFullFOLKBLovesAnimalQueryNotKillsJackTunaSucceeds() {
    // 10 seconds should be more than plenty for this query to finish.
    testFullFOLKBLovesAnimalQueryNotKillsJackTunaSucceeds(
        new FOLTFMResolution(10 * 1000), false);
  }

  @Test
  public void testFullFOLKBLovesAnimalQueryKillsJackTunaFalse() {
    // This query will not return using TFM as keep expanding
    // clauses through resolution for this KB.
    testFullFOLKBLovesAnimalQueryKillsJackTunaFalse(new FOLTFMResolution(
        10 * 1000), true);
  }

  @Test
  public void testEqualityAxiomsKBabcAEqualsCSucceeds() {
    testEqualityAxiomsKBabcAEqualsCSucceeds(new FOLTFMResolution(10 * 1000));
  }

  @Test
  public void testEqualityAndSubstitutionAxiomsKBabcdFFASucceeds() {
    testEqualityAndSubstitutionAxiomsKBabcdFFASucceeds(new FOLTFMResolution(
        40 * 1000));
  }

  // Note: Requires VM arguments to be:
  // -Xms256m -Xmx1024m
  // due to the amount of memory it uses.
  // Therefore, ignore by default as people don't normally set this.
  @Ignore
  @Test
  public void testEqualityAndSubstitutionAxiomsKBabcdPDSucceeds() {
    testEqualityAndSubstitutionAxiomsKBabcdPDSucceeds(new FOLTFMResolution(
        10 * 1000));
  }

  @Test
  public void testEqualityAndSubstitutionAxiomsKBabcdPFFASucceeds() {
    // TFM is unable to find the correct answer to this in a reasonable
    // amount of time for a JUnit test.
    testEqualityAndSubstitutionAxiomsKBabcdPFFASucceeds(
        new FOLTFMResolution(10 * 1000), true);
  }

  @Test
  public void testEqualityNoAxiomsKBabcAEqualsCSucceeds() {
    testEqualityNoAxiomsKBabcAEqualsCSucceeds(new FOLTFMResolution(
        10 * 1000), true);
  }

  @Test
  public void testEqualityAndSubstitutionNoAxiomsKBabcdFFASucceeds() {
    testEqualityAndSubstitutionNoAxiomsKBabcdFFASucceeds(
        new FOLTFMResolution(10 * 1000), true);
  }

  @Test
  public void testEqualityAndSubstitutionNoAxiomsKBabcdPDSucceeds() {
    testEqualityAndSubstitutionNoAxiomsKBabcdPDSucceeds(
        new FOLTFMResolution(10 * 1000), true);
  }

  @Test
  public void testEqualityAndSubstitutionNoAxiomsKBabcdPFFASucceeds() {
    testEqualityAndSubstitutionNoAxiomsKBabcdPFFASucceeds(
        new FOLTFMResolution(10 * 1000), true);
  }
}
TOP

Related Classes of aima.test.core.unit.logic.fol.inference.FOLTFMResolutionTest

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.