Skip to content
This repository was archived by the owner on Jun 18, 2026. It is now read-only.

Commit 08419dc

Browse files
Merge pull request #150 from sauravbhattacharya001/add-famous-graph-tests
test: add tests for FamousGraphLibrary
2 parents f80665d + 21e9986 commit 08419dc

1 file changed

Lines changed: 184 additions & 0 deletions

File tree

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
package gvisual;
2+
3+
import edu.uci.ics.jung.graph.Graph;
4+
import org.junit.Test;
5+
6+
import java.util.LinkedHashMap;
7+
8+
import static org.junit.Assert.*;
9+
10+
/**
11+
* Tests for {@link FamousGraphLibrary} — verifies structural properties
12+
* of each famous named graph.
13+
*/
14+
public class FamousGraphLibraryTest {
15+
16+
// ── Petersen Graph ──────────────────────────────────────
17+
18+
@Test
19+
public void petersen_has_10_vertices_15_edges() {
20+
Graph<String, Edge> g = FamousGraphLibrary.petersen();
21+
assertEquals(10, g.getVertexCount());
22+
assertEquals(15, g.getEdgeCount());
23+
// Petersen graph is 3-regular
24+
for (String v : g.getVertices()) {
25+
assertEquals("Petersen is 3-regular", 3, g.degree(v));
26+
}
27+
}
28+
29+
// ── Zachary's Karate Club ───────────────────────────────
30+
31+
@Test
32+
public void karate_has_34_vertices_78_edges() {
33+
Graph<String, Edge> g = FamousGraphLibrary.karateClub();
34+
assertEquals(34, g.getVertexCount());
35+
assertEquals(78, g.getEdgeCount());
36+
}
37+
38+
// ── Königsberg Bridges ──────────────────────────────────
39+
40+
@Test
41+
public void konigsberg_has_4_vertices_7_edges() {
42+
Graph<String, Edge> g = FamousGraphLibrary.konigsberg();
43+
assertEquals(4, g.getVertexCount());
44+
assertEquals(7, g.getEdgeCount());
45+
}
46+
47+
// ── K₃₃ ────────────────────────────────────────────────
48+
49+
@Test
50+
public void k33_has_6_vertices_9_edges() {
51+
Graph<String, Edge> g = FamousGraphLibrary.k33();
52+
assertEquals(6, g.getVertexCount());
53+
assertEquals(9, g.getEdgeCount());
54+
}
55+
56+
// ── Frucht Graph ────────────────────────────────────────
57+
58+
@Test
59+
public void frucht_has_12_vertices_18_edges() {
60+
Graph<String, Edge> g = FamousGraphLibrary.frucht();
61+
assertEquals(12, g.getVertexCount());
62+
assertEquals(18, g.getEdgeCount());
63+
// Frucht is 3-regular (cubic)
64+
for (String v : g.getVertices()) {
65+
assertEquals("Frucht is cubic", 3, g.degree(v));
66+
}
67+
}
68+
69+
// ── Heawood Graph ───────────────────────────────────────
70+
71+
@Test
72+
public void heawood_has_14_vertices_21_edges() {
73+
Graph<String, Edge> g = FamousGraphLibrary.heawood();
74+
assertEquals(14, g.getVertexCount());
75+
assertEquals(21, g.getEdgeCount());
76+
// Heawood is 3-regular
77+
for (String v : g.getVertices()) {
78+
assertEquals("Heawood is cubic", 3, g.degree(v));
79+
}
80+
}
81+
82+
// ── Dodecahedron ────────────────────────────────────────
83+
84+
@Test
85+
public void dodecahedron_has_20_vertices_30_edges() {
86+
Graph<String, Edge> g = FamousGraphLibrary.dodecahedron();
87+
assertEquals(20, g.getVertexCount());
88+
assertEquals(30, g.getEdgeCount());
89+
// Dodecahedron is 3-regular
90+
for (String v : g.getVertices()) {
91+
assertEquals("Dodecahedron is cubic", 3, g.degree(v));
92+
}
93+
}
94+
95+
// ── Tutte Graph ─────────────────────────────────────────
96+
97+
@Test
98+
public void tutte_has_46_vertices_69_edges() {
99+
Graph<String, Edge> g = FamousGraphLibrary.tutte();
100+
assertEquals(46, g.getVertexCount());
101+
assertEquals(69, g.getEdgeCount());
102+
// Tutte graph is 3-regular
103+
for (String v : g.getVertices()) {
104+
assertEquals("Tutte is cubic", 3, g.degree(v));
105+
}
106+
}
107+
108+
// ── Florentine Families ─────────────────────────────────
109+
110+
@Test
111+
public void florentine_has_15_vertices() {
112+
Graph<String, Edge> g = FamousGraphLibrary.florentine();
113+
assertEquals(15, g.getVertexCount());
114+
assertTrue(g.getEdgeCount() > 0);
115+
// Medici should be a high-degree hub
116+
assertTrue("Medici is a hub", g.degree("Medici") >= 5);
117+
}
118+
119+
// ── Diamond Graph ───────────────────────────────────────
120+
121+
@Test
122+
public void diamond_has_4_vertices_5_edges() {
123+
Graph<String, Edge> g = FamousGraphLibrary.diamond();
124+
assertEquals(4, g.getVertexCount());
125+
assertEquals(5, g.getEdgeCount());
126+
}
127+
128+
// ── Bull Graph ──────────────────────────────────────────
129+
130+
@Test
131+
public void bull_has_5_vertices_5_edges() {
132+
Graph<String, Edge> g = FamousGraphLibrary.bull();
133+
assertEquals(5, g.getVertexCount());
134+
assertEquals(5, g.getEdgeCount());
135+
}
136+
137+
// ── Butterfly Graph ─────────────────────────────────────
138+
139+
@Test
140+
public void butterfly_has_5_vertices_6_edges() {
141+
Graph<String, Edge> g = FamousGraphLibrary.butterfly();
142+
assertEquals(5, g.getVertexCount());
143+
assertEquals(6, g.getEdgeCount());
144+
}
145+
146+
// ── Catalog ─────────────────────────────────────────────
147+
148+
@Test
149+
public void catalog_contains_all_12_graphs() {
150+
LinkedHashMap<String, String> cat = FamousGraphLibrary.catalog();
151+
assertEquals(12, cat.size());
152+
assertTrue(cat.containsKey("petersen"));
153+
assertTrue(cat.containsKey("karate"));
154+
assertTrue(cat.containsKey("butterfly"));
155+
}
156+
157+
// ── byName lookup ───────────────────────────────────────
158+
159+
@Test
160+
public void byName_case_insensitive() {
161+
assertNotNull(FamousGraphLibrary.byName("PETERSEN"));
162+
assertNotNull(FamousGraphLibrary.byName("Petersen"));
163+
assertNotNull(FamousGraphLibrary.byName("petersen"));
164+
}
165+
166+
@Test
167+
public void byName_unknown_returns_null() {
168+
assertNull(FamousGraphLibrary.byName("nonexistent"));
169+
}
170+
171+
@Test
172+
public void byName_null_returns_null() {
173+
assertNull(FamousGraphLibrary.byName(null));
174+
}
175+
176+
@Test
177+
public void byName_all_catalog_entries_resolve() {
178+
for (String name : FamousGraphLibrary.catalog().keySet()) {
179+
Graph<String, Edge> g = FamousGraphLibrary.byName(name);
180+
assertNotNull("byName should resolve: " + name, g);
181+
assertTrue("Graph should have vertices: " + name, g.getVertexCount() > 0);
182+
}
183+
}
184+
}

0 commit comments

Comments
 (0)