Package aima.test.core.unit.logic.propositional.algorithms

Source Code of aima.test.core.unit.logic.propositional.algorithms.ModelTest

package aima.test.core.unit.logic.propositional.algorithms;

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

import aima.core.logic.propositional.algorithms.Model;
import aima.core.logic.propositional.parsing.PEParser;
import aima.core.logic.propositional.parsing.ast.Sentence;
import aima.core.logic.propositional.parsing.ast.Symbol;

/**
* @author Ravi Mohan
*
*/
public class ModelTest {
  private Model m;

  private PEParser parser;

  Sentence trueSentence, falseSentence, andSentence, orSentence,
      impliedSentence, biConditionalSentence;

  @Before
  public void setUp() {
    parser = new PEParser();
    trueSentence = (Sentence) parser.parse("true");
    falseSentence = (Sentence) parser.parse("false");
    andSentence = (Sentence) parser.parse("(P  AND  Q)");
    orSentence = (Sentence) parser.parse("(P  OR  Q)");
    impliedSentence = (Sentence) parser.parse("(P  =>  Q)");
    biConditionalSentence = (Sentence) parser.parse("(P  <=>  Q)");
    m = new Model();
  }

  @Test
  public void testEmptyModel() {
    Assert.assertEquals(null, m.getStatus(new Symbol("P")));
    Assert.assertEquals(true, m.isUnknown(new Symbol("P")));
  }

  @Test
  public void testExtendModel() {
    String p = "P";
    m = m.extend(new Symbol(p), true);
    Assert.assertEquals(Boolean.TRUE, m.getStatus(new Symbol("P")));
  }

  @Test
  public void testTrueFalseEvaluation() {
    Assert.assertEquals(true, m.isTrue(trueSentence));
    Assert.assertEquals(false, m.isFalse(trueSentence));
    Assert.assertEquals(false, m.isTrue(falseSentence));
    Assert.assertEquals(true, m.isFalse(falseSentence));
  }

  @Test
  public void testSentenceStatusWhenPTrueAndQTrue() {
    String p = "P";
    String q = "Q";
    m = m.extend(new Symbol(p), true);
    m = m.extend(new Symbol(q), true);
    Assert.assertEquals(true, m.isTrue(andSentence));
    Assert.assertEquals(true, m.isTrue(orSentence));
    Assert.assertEquals(true, m.isTrue(impliedSentence));
    Assert.assertEquals(true, m.isTrue(biConditionalSentence));
  }

  @Test
  public void testSentenceStatusWhenPFalseAndQFalse() {
    String p = "P";
    String q = "Q";
    m = m.extend(new Symbol(p), false);
    m = m.extend(new Symbol(q), false);
    Assert.assertEquals(true, m.isFalse(andSentence));
    Assert.assertEquals(true, m.isFalse(orSentence));
    Assert.assertEquals(true, m.isTrue(impliedSentence));
    Assert.assertEquals(true, m.isTrue(biConditionalSentence));
  }

  @Test
  public void testSentenceStatusWhenPTrueAndQFalse() {
    String p = "P";
    String q = "Q";
    m = m.extend(new Symbol(p), true);
    m = m.extend(new Symbol(q), false);
    Assert.assertEquals(true, m.isFalse(andSentence));
    Assert.assertEquals(true, m.isTrue(orSentence));
    Assert.assertEquals(true, m.isFalse(impliedSentence));
    Assert.assertEquals(true, m.isFalse(biConditionalSentence));
  }

  @Test
  public void testSentenceStatusWhenPFalseAndQTrue() {
    String p = "P";
    String q = "Q";
    m = m.extend(new Symbol(p), false);
    m = m.extend(new Symbol(q), true);
    Assert.assertEquals(true, m.isFalse(andSentence));
    Assert.assertEquals(true, m.isTrue(orSentence));
    Assert.assertEquals(true, m.isTrue(impliedSentence));
    Assert.assertEquals(true, m.isFalse(biConditionalSentence));
  }

  @Test
  public void testComplexSentence() {
    String p = "P";
    String q = "Q";
    m = m.extend(new Symbol(p), true);
    m = m.extend(new Symbol(q), false);
    Sentence sent = (Sentence) parser.parse("((P OR Q) AND  (P => Q))");
    Assert.assertFalse(m.isTrue(sent));
    Assert.assertTrue(m.isFalse(sent));
    Sentence sent2 = (Sentence) parser.parse("((P OR Q) AND  (Q))");
    Assert.assertFalse(m.isTrue(sent2));
    Assert.assertTrue(m.isFalse(sent2));
  }
}
TOP

Related Classes of aima.test.core.unit.logic.propositional.algorithms.ModelTest

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.