Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/port80/graph/dot/impl/VirtualGraph_Test01.java


1   //
2   // Copyright(c) 2002, Chris Leung
3   //
4   
5   package com.port80.graph.dot.impl;
6   
7   import java.util.HashMap;
8   import java.util.Map;
9   
10  import junit.framework.Assert;
11  import junit.framework.Test;
12  import junit.framework.TestCase;
13  import junit.framework.TestSuite;
14  
15  import com.port80.graph.IGraph;
16  import com.port80.graph.dot.impl.VirtualGraph.MinimiumSpacingIterator;
17  import com.port80.util.Debug;
18  import com.port80.util.msg;
19  
20  /**
21   * @author chrisl
22   */
23  public class VirtualGraph_Test01 extends TestCase {
24  
25    private static boolean VERBOSE = false;
26    private static boolean CHECK = true;
27  
28    ////////////////////////////////////////////////////////////////////////
29  
30    public VirtualGraph_Test01(String name) {
31      super(name);
32    }
33  
34    ////////////////////////////////////////////////////////////////////////
35  
36    public void testMinimiumSpacingIterator_01() {
37      final String PREFIX = "testMinimiumSpacingIterator_01";
38      final String testGraph =
39        "digraph testMinimiumSpacingIterator_01 "
40          + "{ a->b; b->c; b->d; b->e; a->c; a->d; a->e; c->c; }";
41      IGraph graph = TestUtil.createGraph(testGraph);
42      //
43      VirtualGraph vgraph = new VirtualGraph(graph);
44      if (VERBOSE) {
45        msg.println(graph.sprintGraph());
46        msg.println("VirtualGraph: minRank=" + vgraph.minRank + ", maxRank=" + vgraph.maxRank);
47      }
48      Assert.assertTrue(vgraph.minRank == 0);
49      Assert.assertTrue(vgraph.maxRank == 2);
50      vgraph.buildRanks(0);
51      //
52      VirtualGraph.MinimiumSpacingIterator it;
53      int min, max;
54      //
55      it = vgraph.new MinimiumSpacingIterator(vgraph.minRank + 1);
56      if (VERBOSE)
57        msg.println("MinimiumSpacingIterator: 1: left=" + it.left.getName() + ", index=" + it.index);
58      Assert.assertTrue(it.left != null);
59      min = Integer.MAX_VALUE;
60      max = 0;
61      int width = Integer.MAX_VALUE;
62      for (int i = 0; it.hasNext(); ++i) {
63        int w = it.left.leftWidth + it.left.rightWidth;
64        if (w < width)
65          width = w;
66        w = it.next();
67        if (w > max)
68          max = w;
69        if (w < min)
70          min = w;
71        if (VERBOSE)
72          msg.println("i=" + i + ", spacing=" + w + ", left=" + it.right.getName());
73      }
74      checkEESpacing(min, width, vgraph);
75      checkXESpacing(max, vgraph);
76      //
77      it = vgraph.new MinimiumSpacingIterator(vgraph.minRank + 2);
78      if (VERBOSE)
79        msg.println("MinimiumSpacingIterator: 2: left=" + it.left.getName() + ", index=" + it.index);
80      Assert.assertTrue(it.left != null);
81      min = Integer.MAX_VALUE;
82      max = 0;
83      for (int i = 0; it.hasNext(); ++i) {
84        int w = it.next();
85        if (w > max)
86          max = w;
87        if (w < min)
88          min = w;
89        if (VERBOSE)
90          msg.println("i=" + i + ", spacing=" + w + ", left=" + it.right.getName());
91      }
92      checkVSpacing(min, max, vgraph);
93    }
94  
95    private void checkVSpacing(int min, int max, VirtualGraph vgraph) {
96      int vspacing = vgraph.getVertexSpacing();
97      Assert.assertTrue(min == vspacing); // Without self edge.
98      Assert.assertTrue(max == 2 * vspacing); // With self edge.
99    }
100 
101   private void checkXESpacing(int spacing, VirtualGraph vgraph) {
102     int xespacing = vgraph.getVertexSpacing() / vgraph.fXDIV_XEDGE;
103     Assert.assertTrue(spacing == xespacing);
104   }
105 
106   private void checkEESpacing(int spacing, int width, VirtualGraph vgraph) {
107     Assert.assertTrue(spacing == 0);
108     int espacing = vgraph.getVertexSpacing() / vgraph.fXDIV_EDGES;
109     Assert.assertTrue(width == espacing);
110   }
111 
112   ////////////////////////////////////////////////////////////////////////
113 
114   public static Test suite() {
115     TestSuite suite = new TestSuite(VirtualGraph_Test01.class);
116     return suite;
117   }
118 
119   public static void main(String[] args) {
120     Map opts = new HashMap();
121     args = msg.getArgs(opts, "VirtualGraphTest_01", args, "- verbose=v nocheck=c");
122     if (opts.get("verbose") != null) {
123       Debug.enable("verbose");
124       VERBOSE = true;
125     }
126     if (opts.get("nocheck") != null) {
127       CHECK = false;
128     }
129     junit.textui.TestRunner.run(suite());
130     // junit.swingui.TestRunner.run(new TestVirtualGraph("TestVirtualGraph").getClass());
131   }
132 
133   ////////////////////////////////////////////////////////////////////////
134 }