public void test_iterateOverTable_fixedValues() { RandVar aRV = new RandVar("A", new BooleanDomain()); RandVar bRV = new RandVar("B", new BooleanDomain()); RandVar cRV = new RandVar("C", new BooleanDomain()); ProbabilityTable ptABC = new ProbabilityTable(new double[] { // A = true, B = true, C = true 1.0, // A = true, B = true, C = false 10.0, // A = true, B = false, C = true 100.0, // A = true, B = false, C = false 1000.0, // A = false, B = true, C = true 10000.0, // A = false, B = true, C = false 100000.0, // A = false, B = false, C = true 1000000.0, // A = false, B = false, C = false 10000000.0 }, aRV, bRV, cRV); ICollection <double> answer = CollectionFactory.CreateQueue <double>(); ProbabilityTable.ProbabilityTableIterator pti = new iter(answer); answer.Clear(); ptABC.iterateOverTable(pti, new AssignmentProposition(aRV, true)); Assert.AreEqual(1111.0, sumOf(answer), DELTA_THRESHOLD); answer.Clear(); ptABC.iterateOverTable(pti, new AssignmentProposition(aRV, false)); Assert.AreEqual(11110000.0, sumOf(answer), DELTA_THRESHOLD); answer.Clear(); ptABC.iterateOverTable(pti, new aima.net.probability.proposition.AssignmentProposition(bRV, true)); Assert.AreEqual(110011.0, sumOf(answer), DELTA_THRESHOLD); answer.Clear(); ptABC.iterateOverTable(pti, new AssignmentProposition(bRV, false)); Assert.AreEqual(11001100.0, sumOf(answer), DELTA_THRESHOLD); answer.Clear(); ptABC.iterateOverTable(pti, new AssignmentProposition(cRV, true)); Assert.AreEqual(1010101.0, sumOf(answer), DELTA_THRESHOLD); answer.Clear(); ptABC.iterateOverTable(pti, new AssignmentProposition(cRV, false)); Assert.AreEqual(10101010.0, sumOf(answer), DELTA_THRESHOLD); answer.Clear(); ptABC.iterateOverTable(pti, new AssignmentProposition(bRV, true), new AssignmentProposition(cRV, true)); Assert.AreEqual(10001.0, sumOf(answer), DELTA_THRESHOLD); }
iter = selectMoveSquareMoves(iter, parts.MoveSquare);
iter = selectFromSquareMoves(iter, parts.from);
Write(ref state, fieldNumber, wireType, ref iter, pairSerializer);