1 package edu.uci.ics.jung.graph;
2
3 import junit.framework.TestCase;
4
5 import com.google.common.base.Supplier;
6
7
8 public abstract class AbstractSparseTreeTest extends TestCase {
9
10 protected Tree<String,Integer> tree;
11 protected Supplier<DirectedGraph<String,Integer>> graphFactory;
12 protected Supplier<Integer> edgeFactory;
13
14 public void testRemoveVertex() {
15 tree.addVertex("A");
16 tree.addEdge(edgeFactory.get(), "A", "B");
17 tree.addEdge(edgeFactory.get(), "A", "C");
18 tree.addEdge(edgeFactory.get(), "B", "E");
19 tree.addEdge(edgeFactory.get(), "B", "F");
20
21 tree.removeVertex("B");
22
23 }
24
25 public void testSimpleTree() {
26 tree.addVertex("A");
27 tree.addEdge(edgeFactory.get(), "A", "B");
28 tree.addEdge(edgeFactory.get(), "A", "C");
29 }
30
31 public void testCreateLoop() {
32 try {
33 tree.addVertex("A");
34 tree.addEdge(edgeFactory.get(), "A", "A");
35 fail("should not be able to addChild(v,v)");
36 } catch(IllegalArgumentException e) {
37
38 }
39 try {
40 tree.addEdge(edgeFactory.get(), "A", "B");
41 tree.addEdge(edgeFactory.get(), "B", "A");
42 fail("should not allow loop");
43 } catch(IllegalArgumentException e) {
44
45 }
46 }
47
48 public void testHeightAndDepth() {
49 tree.addVertex("V0");
50 assertEquals(tree.getHeight(), 0);
51 assertEquals(tree.getDepth("V0"), 0);
52 tree.addEdge(edgeFactory.get(), "V0", "V1");
53 assertEquals(tree.getHeight(), 1);
54 assertEquals(tree.getDepth("V1"), 1);
55 tree.addEdge(edgeFactory.get(), "V0", "V2");
56 assertEquals(tree.getHeight(), 1);
57 assertEquals(tree.getDepth("V2"), 1);
58 tree.addEdge(edgeFactory.get(), "V1", "V4");
59 assertEquals(tree.getHeight(), 2);
60 assertEquals(tree.getDepth("V4"), 2);
61 tree.addEdge(edgeFactory.get(), "V2", "V3");
62 assertEquals(tree.getHeight(), 2);
63 assertEquals(tree.getDepth("V3"), 2);
64 tree.addEdge(edgeFactory.get(), "V2", "V5");
65 assertEquals(tree.getHeight(), 2);
66 assertEquals(tree.getDepth("V5"), 2);
67 tree.addEdge(edgeFactory.get(), "V4", "V6");
68 assertEquals(tree.getHeight(), 3);
69 assertEquals(tree.getDepth("V6"), 3);
70 tree.addEdge(edgeFactory.get(), "V4", "V7");
71 assertEquals(tree.getHeight(), 3);
72 assertEquals(tree.getDepth("V7"), 3);
73 tree.addEdge(edgeFactory.get(), "V3", "V8");
74 assertEquals(tree.getHeight(), 3);
75 assertEquals(tree.getDepth("V8"), 3);
76 tree.addEdge(edgeFactory.get(), "V6", "V9");
77 assertEquals(tree.getHeight(), 4);
78 assertEquals(tree.getDepth("V9"), 4);
79 tree.addEdge(edgeFactory.get(), "V4", "V10");
80 assertEquals(tree.getHeight(), 4);
81 assertEquals(tree.getDepth("V10"), 3);
82 tree.addEdge(edgeFactory.get(), "V4", "V11");
83 assertEquals(tree.getHeight(), 4);
84 assertEquals(tree.getDepth("V11"), 3);
85 tree.addEdge(edgeFactory.get(), "V4", "V12");
86 assertEquals(tree.getHeight(), 4);
87 assertEquals(tree.getDepth("V12"), 3);
88 tree.addEdge(edgeFactory.get(), "V6", "V13");
89 assertEquals(tree.getHeight(), 4);
90 assertEquals(tree.getDepth("V13"), 4);
91 tree.addEdge(edgeFactory.get(), "V10", "V14");
92 assertEquals(tree.getHeight(), 4);
93 assertEquals(tree.getDepth("V14"), 4);
94 tree.addEdge(edgeFactory.get(), "V13", "V15");
95 assertEquals(tree.getHeight(), 5);
96 assertEquals(tree.getDepth("V15"), 5);
97 tree.addEdge(edgeFactory.get(), "V13", "V16");
98 assertEquals(tree.getHeight(), 5);
99 assertEquals(tree.getDepth("V16"), 5);
100
101 }
102
103
104 }