Package aima.test.core.unit.probability.util

Source Code of aima.test.core.unit.probability.util.ProbUtilTest

package aima.test.core.unit.probability.util;

import java.util.LinkedHashMap;
import java.util.Map;

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

import aima.core.probability.RandomVariable;
import aima.core.probability.domain.ArbitraryTokenDomain;
import aima.core.probability.domain.BooleanDomain;
import aima.core.probability.util.ProbUtil;
import aima.core.probability.util.RandVar;

public class ProbUtilTest {

  @Test
  public void test_indexOf() {
    RandVar X = new RandVar("X", new BooleanDomain());
    RandVar Y = new RandVar("Y", new ArbitraryTokenDomain("A", "B", "C"));
    RandVar Z = new RandVar("Z", new BooleanDomain());

    // An ordered X,Y,Z enumeration of values should look like:
    // 00: true, A, true
    // 01: true, A, false
    // 02: true, B, true
    // 03: true, B, false
    // 04: true, C, true
    // 05: true, C, false
    // 06: false, A, true
    // 07: false, A, false
    // 08: false, B, true
    // 09: false, B, false
    // 10: false, C, true
    // 11: false, C, false
    RandomVariable[] vars = new RandomVariable[] { X, Y, Z };
    Map<RandomVariable, Object> event = new LinkedHashMap<RandomVariable, Object>();

    event.put(X, Boolean.TRUE);
    event.put(Y, "A");
    event.put(Z, Boolean.TRUE);
    Assert.assertEquals(0, ProbUtil.indexOf(vars, event));
    event.put(Z, Boolean.FALSE);
    Assert.assertEquals(1, ProbUtil.indexOf(vars, event));
    event.put(Y, "B");
    event.put(Z, Boolean.TRUE);
    Assert.assertEquals(2, ProbUtil.indexOf(vars, event));
    event.put(Z, Boolean.FALSE);
    Assert.assertEquals(3, ProbUtil.indexOf(vars, event));
    event.put(Y, "C");
    event.put(Z, Boolean.TRUE);
    Assert.assertEquals(4, ProbUtil.indexOf(vars, event));
    event.put(Z, Boolean.FALSE);
    Assert.assertEquals(5, ProbUtil.indexOf(vars, event));
    //
    event.put(X, Boolean.FALSE);
    event.put(Y, "A");
    event.put(Z, Boolean.TRUE);
    Assert.assertEquals(6, ProbUtil.indexOf(vars, event));
    event.put(Z, Boolean.FALSE);
    Assert.assertEquals(7, ProbUtil.indexOf(vars, event));
    event.put(Y, "B");
    event.put(Z, Boolean.TRUE);
    Assert.assertEquals(8, ProbUtil.indexOf(vars, event));
    event.put(Z, Boolean.FALSE);
    Assert.assertEquals(9, ProbUtil.indexOf(vars, event));
    event.put(Y, "C");
    event.put(Z, Boolean.TRUE);
    Assert.assertEquals(10, ProbUtil.indexOf(vars, event));
    event.put(Z, Boolean.FALSE);
    Assert.assertEquals(11, ProbUtil.indexOf(vars, event));
  }

  @Test
  public void test_indexesOfValue() {
    RandVar X = new RandVar("X", new BooleanDomain());
    RandVar Y = new RandVar("Y", new ArbitraryTokenDomain("A", "B", "C"));
    RandVar Z = new RandVar("Z", new BooleanDomain());

    // An ordered X,Y,Z enumeration of values should look like:
    // 00: true, A, true
    // 01: true, A, false
    // 02: true, B, true
    // 03: true, B, false
    // 04: true, C, true
    // 05: true, C, false
    // 06: false, A, true
    // 07: false, A, false
    // 08: false, B, true
    // 09: false, B, false
    // 10: false, C, true
    // 11: false, C, false
    RandomVariable[] vars = new RandomVariable[] { X, Y, Z };
    Map<RandomVariable, Object> event = new LinkedHashMap<RandomVariable, Object>();

    event.put(X, Boolean.TRUE);
    Assert.assertArrayEquals(new int[] { 0, 1, 2, 3, 4, 5 },
        ProbUtil.indexesOfValue(vars, 0, event));
    event.put(X, Boolean.FALSE);
    Assert.assertArrayEquals(new int[] { 6, 7, 8, 9, 10, 11 },
        ProbUtil.indexesOfValue(vars, 0, event));

    event.put(Y, "A");
    Assert.assertArrayEquals(new int[] { 0, 1, 6, 7 },
        ProbUtil.indexesOfValue(vars, 1, event));
    event.put(Y, "B");
    Assert.assertArrayEquals(new int[] { 2, 3, 8, 9 },
        ProbUtil.indexesOfValue(vars, 1, event));
    event.put(Y, "C");
    Assert.assertArrayEquals(new int[] { 4, 5, 10, 11 },
        ProbUtil.indexesOfValue(vars, 1, event));

    event.put(Z, Boolean.TRUE);
    Assert.assertArrayEquals(new int[] { 0, 2, 4, 6, 8, 10 },
        ProbUtil.indexesOfValue(vars, 2, event));
    event.put(Z, Boolean.FALSE);
    Assert.assertArrayEquals(new int[] { 1, 3, 5, 7, 9, 11 },
        ProbUtil.indexesOfValue(vars, 2, event));
  }
}
TOP

Related Classes of aima.test.core.unit.probability.util.ProbUtilTest

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.