package edu.hawaii.ics.yucheng;
import java.util.Scanner;
import junit.framework.TestCase;
/**
* Tests the Edge class.
*/
public class EdgeTest extends TestCase {
/**
* Tests the compareTo method.
*
* @throws Exception
*/
public void testCompareTo() throws Exception {
final Edge edge = new Edge(1, 3);
assertEquals(1, edge.compareTo(null));
assertEquals(0, edge.compareTo(new Edge(1, 3)));
assertEquals(0, edge.compareTo(new Edge(3, 1)));
assertTrue(edge.compareTo(new Edge(0, 3)) > 0);
assertTrue(edge.compareTo(new Edge(2, 3)) < 0);
assertTrue(edge.compareTo(new Edge(1, 2)) > 0);
assertTrue(edge.compareTo(new Edge(1, 4)) < 0);
}
/**
* Tests the first constructor executes normally.
*
* @throws Exception
*/
public void testConstructor1a() throws Exception {
final Edge edge = new Edge(0, 1);
assertEquals(0, edge.first());
assertEquals(1, edge.second());
}
/**
* Tests the first constructor executes normally.
*
* @throws Exception
*/
public void testConstructor1b() throws Exception {
final Edge edge = new Edge(1, 0);
assertEquals(0, edge.first());
assertEquals(1, edge.second());
}
/**
* Tests the first constructor rejects bad arguments.
*
* @throws Exception
*/
public void testConstructor1c() throws Exception {
try {
new Edge(-1, 0);
} catch (final GraphException e) {
// This is expected.
}
}
/**
* Tests the first constructor rejects bad arguments.
*
* @throws Exception
*/
public void testConstructor1d() throws Exception {
try {
new Edge(0, -1);
} catch (final GraphException e) {
// This is expected.
}
}
/**
* Tests the first constructor rejects bad arguments.
*
* @throws Exception
*/
public void testConstructor1e() throws Exception {
try {
new Edge(0, 0);
} catch (final GraphException e) {
// This is expected.
}
}
/**
* Tests the second constructor executes normally.
*
* @throws Exception
*/
public void testConstructor2a() throws Exception {
final Edge edge = new Edge(new Scanner("1,2"));
assertEquals(0, edge.first());
assertEquals(1, edge.second());
}
/**
* Tests the second constructor executes normally.
*
* @throws Exception
*/
public void testConstructor2b() throws Exception {
final Edge edge = new Edge(new Scanner("2,1"));
assertEquals(0, edge.first());
assertEquals(1, edge.second());
}
/**
* Tests the second constructor rejects a null scanner.
*
* @throws Exception
*/
public void testConstructor2c() throws Exception {
try {
new Edge(null);
fail();
} catch (final NullPointerException e) {
// This is expected.
}
}
/**
* Tests the second constructor rejects too many vertices.
*
* @throws Exception
*/
public void testConstructor2d() throws Exception {
try {
new Edge(new Scanner("1,2,3"));
fail();
} catch (final GraphException e) {
// This is expected.
}
}
/**
* Tests the second constructor rejects a small first vertex.
*
* @throws Exception
*/
public void testConstructor2e() throws Exception {
try {
new Edge(new Scanner("0,1"));
fail();
} catch (final GraphException e) {
// This is expected.
}
}
/**
* Tests the second constructor rejects a small second vertex.
*
* @throws Exception
*/
public void testConstructor2f() throws Exception {
try {
new Edge(new Scanner("1,0"));
fail();
} catch (final GraphException e) {
// This is expected.
}
}
/**
* Tests the second constructor rejects vertices equal to each other.
*
* @throws Exception
*/
public void testConstructor2g() throws Exception {
try {
new Edge(new Scanner("1,1"));
fail();
} catch (final GraphException e) {
// This is expected.
}
}
/**
* Tests the second constructor rejects non-ASCII values.
*
* @throws Exception
*/
public void testConstructor2h() throws Exception {
try {
new Edge(new Scanner("a,b"));
fail();
} catch (final GraphException e) {
// This is expected.
}
}
/**
* Tests the contains method.
*
* @throws Exception
*/
public void testContains() throws Exception {
final Edge edge = new Edge(0, 1);
assertTrue(edge.contains(0));
assertTrue(edge.contains(1));
assertFalse(edge.contains(2));
}
/**
* Tests the equals method.
*
* @throws Exception
*/
public void testEquals() throws Exception {
final Edge edge = new Edge(0, 1);
assertFalse(edge.equals(null));
assertFalse(edge.equals(""));
assertFalse(edge.equals(new Edge(1, 2)));
assertTrue(edge.equals(edge));
assertTrue(edge.equals(new Edge(0, 1)));
}
/**
* Tests the first method.
*
* @throws Exception
*/
public void testFirst() throws Exception {
final Edge edge = new Edge(0, 1);
assertEquals(0, edge.first());
}
/**
* Tests the getOpposite method.
*
* @throws Exception
*/
public void testGetOpposite1() throws Exception {
final Edge edge = new Edge(0, 1);
assertEquals(1, edge.getOpposite(0));
assertEquals(0, edge.getOpposite(1));
}
/**
* Tests the getOpposite method.
*
* @throws Exception
*/
public void testGetOpposite2() throws Exception {
final Edge edge = new Edge(0, 1);
try {
edge.getOpposite(2);
fail();
} catch (final GraphException e) {
// This is expected.
}
}
/**
* Tests the second method.
*
* @throws Exception
*/
public void testSecond() throws Exception {
final Edge edge = new Edge(0, 1);
assertEquals(1, edge.second());
}
/**
* Tests the toString method.
*
* @throws Exception
*/
public void testToString() throws Exception {
final Edge edge = new Edge(0, 1);
assertEquals("1..2", edge.toString());
}
}