// Path: src/main/java/uk/me/mjt/ch/status/DiscardingStatusMonitor.java
// public class DiscardingStatusMonitor implements StatusMonitor {
//     @Override
//     public void updateStatus(MonitoredProcess process, long completed, long total) { }
// }


import java.util.*;
import uk.me.mjt.ch.status.DiscardingStatusMonitor;
    /**
     * No right turn 3->2->5
     * <pre>
     *   1   4
     *   |   |
     *   2---5
     *   |   |
     *   3   6
     * </pre>
     */
    public static MapData makeTurnRestrictedH() {
        HashMap<Long,Node> nodes = new HashMap();
        for (long i=1 ; i<=6 ; i++) {
            nodes.put(i, new Node(i, 52f, 0f, Barrier.FALSE));
        }
        
        makeBidirectionalEdgesAndAddToNodes(nodes.get(1L), nodes.get(2L));
        makeBidirectionalEdgesAndAddToNodes(nodes.get(2L), nodes.get(3L));
        
        makeBidirectionalEdgesAndAddToNodes(nodes.get(4L), nodes.get(5L));
        makeBidirectionalEdgesAndAddToNodes(nodes.get(5L), nodes.get(6L));
        
        makeBidirectionalEdgesAndAddToNodes(nodes.get(2L), nodes.get(5L));
        
        List<Long> noRight = new ArrayList();
        noRight.add(3000002L);
        noRight.add(2000005L);
        TurnRestriction tr = new TurnRestriction(12345, TurnRestriction.TurnRestrictionType.NOT_ALLOWED, noRight);
        
        Node.sortNeighborListsAll(nodes.values());
// Path: src/main/java/uk/me/mjt/ch/status/DiscardingStatusMonitor.java
// public class DiscardingStatusMonitor implements StatusMonitor {
//     @Override
//     public void updateStatus(MonitoredProcess process, long completed, long total) { }
// }


// Path: src/test/java/uk/me/mjt/ch/MakeTestData.java
import java.util.*;
import uk.me.mjt.ch.status.DiscardingStatusMonitor;

    /**
     * No right turn 3->2->5
     * <pre>
     *   1   4
     *   |   |
     *   2---5
     *   |   |
     *   3   6
     * </pre>
     */
    public static MapData makeTurnRestrictedH() {
        HashMap<Long,Node> nodes = new HashMap();
        for (long i=1 ; i<=6 ; i++) {
            nodes.put(i, new Node(i, 52f, 0f, Barrier.FALSE));
        }
        
        makeBidirectionalEdgesAndAddToNodes(nodes.get(1L), nodes.get(2L));
        makeBidirectionalEdgesAndAddToNodes(nodes.get(2L), nodes.get(3L));
        
        makeBidirectionalEdgesAndAddToNodes(nodes.get(4L), nodes.get(5L));
        makeBidirectionalEdgesAndAddToNodes(nodes.get(5L), nodes.get(6L));
        
        makeBidirectionalEdgesAndAddToNodes(nodes.get(2L), nodes.get(5L));
        
        List<Long> noRight = new ArrayList();
        noRight.add(3000002L);
        noRight.add(2000005L);
        TurnRestriction tr = new TurnRestriction(12345, TurnRestriction.TurnRestrictionType.NOT_ALLOWED, noRight);
        
        Node.sortNeighborListsAll(nodes.values());
        return new MapData(nodes,Collections.singleton(tr), new DiscardingStatusMonitor());