@Test public void testGenerateRules_PreOutVrf_PreOutInterfaceDisposition_individual() { Map<String, Map<String, Map<String, BDD>>> dispositionBddMap = ImmutableMap.of( NODE1, ImmutableMap.of(VRF1, ImmutableMap.of(IFACE1, DSTIP1)), NODE2, ImmutableMap.of(VRF1, ImmutableMap.of(IFACE1, DSTIP1))); assertThat( BDDFibGenerator.generateRules_PreOutVrf_PreOutInterfaceDisposition( NODE1::equals, dispositionBddMap, TestPreOutVrf::new, TestPreOutInterfaceExitsNetwork::new) .collect(ImmutableList.toImmutableList()), contains( new Edge( new TestPreOutVrf(NODE1, VRF1), new TestPreOutInterfaceExitsNetwork(NODE1, IFACE1), DSTIP1))); }
@Nonnull @VisibleForTesting Stream<Edge> generateRules_PreOutVrf_PreOutInterfaceDisposition( Predicate<String> includedNode, StateExprConstructor2 preOutVrf, StateExprConstructor2 preOutInterfaceDeliveredToSubnet, StateExprConstructor2 preOutInterfaceExitsNetwork, StateExprConstructor2 preOutInterfaceInsufficientInfo, StateExprConstructor2 preOutInterfaceNeighborUnreachable) { return Streams.concat( generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _deliveredToSubnetBDDs, preOutVrf, preOutInterfaceDeliveredToSubnet), generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _exitsNetworkBDDs, preOutVrf, preOutInterfaceExitsNetwork), generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _insufficientInfoBDDs, preOutVrf, preOutInterfaceInsufficientInfo), generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _neighborUnreachableBDDs, preOutVrf, preOutInterfaceNeighborUnreachable)); }
BDDFibGenerator { @Nonnull @VisibleForTesting Stream<Edge> generateRules_PreOutVrf_PreOutInterfaceDisposition( Predicate<String> includedNode, StateExprConstructor2 preOutVrf, StateExprConstructor2 preOutInterfaceDeliveredToSubnet, StateExprConstructor2 preOutInterfaceExitsNetwork, StateExprConstructor2 preOutInterfaceInsufficientInfo, StateExprConstructor2 preOutInterfaceNeighborUnreachable) { return Streams.concat( generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _deliveredToSubnetBDDs, preOutVrf, preOutInterfaceDeliveredToSubnet), generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _exitsNetworkBDDs, preOutVrf, preOutInterfaceExitsNetwork), generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _insufficientInfoBDDs, preOutVrf, preOutInterfaceInsufficientInfo), generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _neighborUnreachableBDDs, preOutVrf, preOutInterfaceNeighborUnreachable)); } }
BDDFibGenerator { @Nonnull @VisibleForTesting Stream<Edge> generateRules_PreOutVrf_PreOutInterfaceDisposition( Predicate<String> includedNode, StateExprConstructor2 preOutVrf, StateExprConstructor2 preOutInterfaceDeliveredToSubnet, StateExprConstructor2 preOutInterfaceExitsNetwork, StateExprConstructor2 preOutInterfaceInsufficientInfo, StateExprConstructor2 preOutInterfaceNeighborUnreachable) { return Streams.concat( generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _deliveredToSubnetBDDs, preOutVrf, preOutInterfaceDeliveredToSubnet), generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _exitsNetworkBDDs, preOutVrf, preOutInterfaceExitsNetwork), generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _insufficientInfoBDDs, preOutVrf, preOutInterfaceInsufficientInfo), generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _neighborUnreachableBDDs, preOutVrf, preOutInterfaceNeighborUnreachable)); } BDDFibGenerator(
      Map<String, Map<String, Map<org.batfish.datamodel.Edge, BDD>>> arpTrueEdgeBDDs,
      Map<String, Map<String, Map<String, BDD>>> neighborUnreachableBDDs,
      Map<String, Map<String, Map<String, BDD>>> deliveredToSubnetBDDs,
      Map<String, Map<String, Map<String, BDD>>> exitsNetworkBDDs,
      Map<String, Map<String, Map<String, BDD>>> insufficientInfoBDDs,
      Map<String, Map<String, Map<String, BDD>>> ifaceAcceptBDDs,
      Map<String, Map<String, BDD>> vrfAcceptBDDs,
      Map<String, Map<String, BDD>> routableBDDs,
      Map<String, Map<String, Map<String, BDD>>> nextVrfBDDs,
      Map<String, Map<String, BDD>> nullRoutedBDDs); }
BDDFibGenerator { @Nonnull @VisibleForTesting Stream<Edge> generateRules_PreOutVrf_PreOutInterfaceDisposition( Predicate<String> includedNode, StateExprConstructor2 preOutVrf, StateExprConstructor2 preOutInterfaceDeliveredToSubnet, StateExprConstructor2 preOutInterfaceExitsNetwork, StateExprConstructor2 preOutInterfaceInsufficientInfo, StateExprConstructor2 preOutInterfaceNeighborUnreachable) { return Streams.concat( generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _deliveredToSubnetBDDs, preOutVrf, preOutInterfaceDeliveredToSubnet), generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _exitsNetworkBDDs, preOutVrf, preOutInterfaceExitsNetwork), generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _insufficientInfoBDDs, preOutVrf, preOutInterfaceInsufficientInfo), generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _neighborUnreachableBDDs, preOutVrf, preOutInterfaceNeighborUnreachable)); } BDDFibGenerator(
      Map<String, Map<String, Map<org.batfish.datamodel.Edge, BDD>>> arpTrueEdgeBDDs,
      Map<String, Map<String, Map<String, BDD>>> neighborUnreachableBDDs,
      Map<String, Map<String, Map<String, BDD>>> deliveredToSubnetBDDs,
      Map<String, Map<String, Map<String, BDD>>> exitsNetworkBDDs,
      Map<String, Map<String, Map<String, BDD>>> insufficientInfoBDDs,
      Map<String, Map<String, Map<String, BDD>>> ifaceAcceptBDDs,
      Map<String, Map<String, BDD>> vrfAcceptBDDs,
      Map<String, Map<String, BDD>> routableBDDs,
      Map<String, Map<String, Map<String, BDD>>> nextVrfBDDs,
      Map<String, Map<String, BDD>> nullRoutedBDDs); @Nonnull Stream<Edge> generateForwardingEdges(
      Predicate<String> includedNode,
      StateExprConstructor2 postInVrf,
      StateExprConstructor4 preOutEdge,
      StateExprConstructor2 preOutVrf,
      StateExprConstructor2 preOutInterfaceDeliveredToSubnet,
      StateExprConstructor2 preOutInterfaceExitsNetwork,
      StateExprConstructor2 preOutInterfaceInsufficientInfo,
      StateExprConstructor2 preOutInterfaceNeighborUnreachable); }
BDDFibGenerator { @Nonnull @VisibleForTesting Stream<Edge> generateRules_PreOutVrf_PreOutInterfaceDisposition( Predicate<String> includedNode, StateExprConstructor2 preOutVrf, StateExprConstructor2 preOutInterfaceDeliveredToSubnet, StateExprConstructor2 preOutInterfaceExitsNetwork, StateExprConstructor2 preOutInterfaceInsufficientInfo, StateExprConstructor2 preOutInterfaceNeighborUnreachable) { return Streams.concat( generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _deliveredToSubnetBDDs, preOutVrf, preOutInterfaceDeliveredToSubnet), generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _exitsNetworkBDDs, preOutVrf, preOutInterfaceExitsNetwork), generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _insufficientInfoBDDs, preOutVrf, preOutInterfaceInsufficientInfo), generateRules_PreOutVrf_PreOutInterfaceDisposition( includedNode, _neighborUnreachableBDDs, preOutVrf, preOutInterfaceNeighborUnreachable)); } BDDFibGenerator(
      Map<String, Map<String, Map<org.batfish.datamodel.Edge, BDD>>> arpTrueEdgeBDDs,
      Map<String, Map<String, Map<String, BDD>>> neighborUnreachableBDDs,
      Map<String, Map<String, Map<String, BDD>>> deliveredToSubnetBDDs,
      Map<String, Map<String, Map<String, BDD>>> exitsNetworkBDDs,
      Map<String, Map<String, Map<String, BDD>>> insufficientInfoBDDs,
      Map<String, Map<String, Map<String, BDD>>> ifaceAcceptBDDs,
      Map<String, Map<String, BDD>> vrfAcceptBDDs,
      Map<String, Map<String, BDD>> routableBDDs,
      Map<String, Map<String, Map<String, BDD>>> nextVrfBDDs,
      Map<String, Map<String, BDD>> nullRoutedBDDs); @Nonnull Stream<Edge> generateForwardingEdges(
      Predicate<String> includedNode,
      StateExprConstructor2 postInVrf,
      StateExprConstructor4 preOutEdge,
      StateExprConstructor2 preOutVrf,
      StateExprConstructor2 preOutInterfaceDeliveredToSubnet,
      StateExprConstructor2 preOutInterfaceExitsNetwork,
      StateExprConstructor2 preOutInterfaceInsufficientInfo,
      StateExprConstructor2 preOutInterfaceNeighborUnreachable);  }