package edu.hawaii.ics.yucheng;
import java.util.ArrayList;
import junit.framework.TestCase;
/**
* Tests the GraphRandomizer class.
*/
public class GraphRandomizerTest extends TestCase {
/**
* Tests the constructor.
*
* @throws Exception
*/
public void testConstructor() throws Exception {
new GraphRandomizer();
}
/**
* Tests the create method.
*
* @throws Exception
*/
public void testCreate1() throws Exception {
try {
GraphRandomizer.create(0, 1);
fail();
} catch (final IllegalArgumentException e) {
// This is expected.
}
}
/**
* Tests the create method.
*
* @throws Exception
*/
public void testCreate2() throws Exception {
try {
GraphRandomizer.create(1, 1);
fail();
} catch (final IllegalArgumentException e) {
// This is expected.
}
}
/**
* Tests the create method.
*
* @throws Exception
*/
public void testCreate3() throws Exception {
final Graph g = GraphRandomizer.create(1, 2);
assertEquals(1, g.vertices());
assertEquals(0, g.edges());
}
/**
* Tests the create method.
*
* @throws Exception
*/
public void testCreate4() throws Exception {
final Graph g = GraphRandomizer.create(2, 3);
assertEquals(2, g.vertices());
assertEquals(1, g.edges());
}
/**
* Tests the create method.
*
* @throws Exception
*/
public void testCreate5() throws Exception {
// 4 vertices => 6 possible edges; 38 possible trees
//
// [01] 1..2 1..3 1..4
// [02] 1..2 1..3 1..4 2..3
// [03] 1..2 1..3 1..4 2..3 2..4
// [04] 1..2 1..3 1..4 2..3 2..4 3..4
// [05] 1..2 1..3 1..4 2..3 3..4
// [06] 1..2 1..3 1..4 2..4
// [07] 1..2 1..3 1..4 2..4 3..4
// [08] 1..2 1..3 1..4 3..4
// [09] 1..2 1..3 2..3 2..4
// [10] 1..2 1..3 2..3 2..4 3..4
// [11] 1..2 1..3 2..3 3..4
// [12] 1..2 1..3 2..4
// [13] 1..2 1..3 2..4 3..4
// [14] 1..2 1..3 3..4
// [15] 1..2 1..4 2..3
// [16] 1..2 1..4 2..3 2..4
// [17] 1..2 1..4 2..3 2..4 3..4
// [18] 1..2 1..4 2..3 3..4
// [19] 1..2 1..4 2..4 3..4
// [20] 1..2 1..4 3..4
// [21] 1..2 2..3 2..4
// [22] 1..2 2..3 2..4 3..4
// [23] 1..2 2..3 3..4
// [24] 1..2 2..4 3..4
// [25] 1..3 1..4 2..3
// [26] 1..3 1..4 2..3 2..4
// [27] 1..3 1..4 2..3 2..4 3..4
// [28] 1..3 1..4 2..3 3..4
// [29] 1..3 1..4 2..4
// [30] 1..3 1..4 2..4 3..4
// [31] 1..3 2..3 2..4
// [32] 1..3 2..3 2..4 3..4
// [33] 1..3 2..3 3..4
// [34] 1..3 2..4 3..4
// [35] 1..4 2..3 2..4
// [36] 1..4 2..3 2..4 3..4
// [37] 1..4 2..3 3..4
// [38] 1..4 2..4 3..4
//
final ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < 10000; i++) {
final Graph g = GraphRandomizer.create(4, 5);
final StringBuilder builder = new StringBuilder();
for (final Edge e : g)
builder.append(e + " ");
final String edges = builder.toString().trim();
if (list.contains(edges))
continue;
list.add(edges);
if (list.size() == 38)
break;
}
assertEquals(38, list.size());
}
}