Graphs { public static <E extends ConnectionData> List<Point> shortestPathEuclideanDistance( Graph<E> graph, final Point from, final Point to) { return Graphs.shortestPath(graph, from, to, GeomHeuristics.euclidean()); } private  Graphs(); static void addPath(Graph<E> graph,
      Point... path); static void addPath(Graph<E> graph,
      Iterable<Point> path); static void addBiPath(Graph<E> graph,
      Point... path); static void addBiPath(Graph<E> graph,
      Iterable<Point> path); static Graph<E> unmodifiableGraph(
      Graph<E> graph); static boolean equal(Graph<?> g1, @Nullable Object other); static List<Point> shortestPathEuclideanDistance(
      Graph<E> graph, final Point from, final Point to); static List<Point> shortestPath(
      Graph<E> graph, final Point from, final Point to, GeomHeuristic h); @Nullable static T findClosestObject(Point pos, Collection<T> objects,
      Function<T, Point> transformation); static List<T> findClosestObjects(Point pos,
      Collection<T> objects, Function<T, Point> transformation, int n); static double pathLength(List<Point> path); static ImmutableList<Point> getExtremes(Graph<?> graph);  }
@Test(expected = IllegalArgumentException.class) public void shortestPathNull() { Graphs.shortestPathEuclideanDistance(graph, null, new Point(2, 3)); }
@Test(expected = IllegalArgumentException.class) public void shortestPathNotExistingPoint() { Graphs.shortestPathEuclideanDistance(graph, new Point(1, 2), new Point(2, 3)); }