/* * Copyright 2003-2011 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jetbrains.mps.make.dependencies; import jetbrains.mps.make.dependencies.graph.Graph; import jetbrains.mps.make.dependencies.graph.IVertex; import org.jetbrains.annotations.TestOnly; import java.util.*; @TestOnly public class IntGraph { private final Graph myGraph = new Graph(); private final IntVertex[] myVertexes; public IntGraph(int n) { myVertexes = new IntVertex[n]; for (int i = 0; i < n; i++) { myVertexes[i] = new IntVertex(i); myGraph.add(myVertexes[i]); } } public void addEdges(int from, int... to) { for (int i = 0; i < to.length; i++) { myVertexes[from].myNext.add(myVertexes[to[i]]); } } @TestOnly public static class IntVertex implements IVertex, Comparable<IntVertex> { private final Set<IntVertex> myNext = new TreeSet<IntVertex>(); private final Integer myID; public Integer getID() { return myID; } public IntVertex(Integer id) { myID = id; } public Set<IntVertex> getNexts() { return Collections.unmodifiableSet(myNext); } public int compareTo(IntVertex o) { return myID.compareTo(o.myID); } public boolean equals(Object obj) { if (obj instanceof IntVertex) { return ((IntVertex) obj).myID.equals(myID); } return super.equals(obj); //To change body of overridden methods use File | Settings | File Templates. } public int hashCode() { return myID.hashCode(); //To change body of overridden methods use File | Settings | File Templates. } @Override public String toString() { return "" + myID; //To change body of overridden methods use File | Settings | File Templates. } } public Graph getGraph() { return myGraph; } }