/** No inconsistencies since there are very few paths. */
@Test
public void testCheckFanoutInconsistency4()
{
MarkovUniversalLearner m = new MarkovUniversalLearner(2);
Set<List<Label>> plusStrings = buildSet(new String[][] { new String[]{"a","b"},new String[]{"c","b"},new String[]{"c","u"} },config,converter), minusStrings = buildSet(new String[][] { new String[]{"a","u"} },config,converter);
m.createMarkovLearner(plusStrings, minusStrings,false);
final LearnerGraph graph = FsmParser.buildLearnerGraph("A-a->D-b->C / A-c->B-b->C / B-u->E / T-b->T-u->T","testCheckFanoutInconsistency4",config, converter);
Configuration shallowCopy = graph.config.copy();shallowCopy.setLearnerCloneGraph(false);
LearnerGraphND Inverse_Graph = new LearnerGraphND(shallowCopy);
AbstractPathRoutines.buildInverse(graph,LearnerGraphND.ignoreNone,Inverse_Graph); // do the inverse to the tentative graph
Assert.assertEquals(0,m.checkFanoutInconsistency(Inverse_Graph,true,graph,graph.findVertex("B"),m.getChunkLen(), new MarkovUniversalLearner.DifferentPredictionsInconsistency(graph)));// everything as expected.
Assert.assertEquals(0,m.checkFanoutInconsistency(Inverse_Graph,true,graph,graph.findVertex("D"),m.getChunkLen(), new MarkovUniversalLearner.DifferentPredictionsInconsistency(graph)));// missing reject-transition with label u is ignored because we are only considering actual outgoing transitions
}