package edu.hawaii.ics.yucheng; import java.util.ArrayList; import java.util.Collection; import junit.framework.TestCase; /** * Tests the JadeSolver class. */ public class JadeSolverTest extends TestCase { static Graph newGraph(final float[] vertices, final int[] edges) { final Collection<Edge> collection = new ArrayList<Edge>(); for (int i = 0; i < edges.length; i += 2) collection.add(new Edge(edges[i], edges[i + 1])); return new Graph(vertices, collection); } /** * Tests the animate method. * * @throws Exception */ public void testAnimate() throws Exception { final JadeSolver solver = new JadeSolver(); solver.startAnimation(1, 0); final float[] v = { 0, 1, 2, 3 }; final int[] e = { 0, 1, 1, 2, 2, 3 }; final Graph g = newGraph(v, e); solver.solve(g); } /** * Tests the constructor. * * @throws Exception */ public void testConstructor() throws Exception { new JadeSolver(); } /** * Tests the getSolution method. * * @throws Exception */ public void testGetSolution1() throws Exception { try { JadeSolver.getSolution(0.0f, null, null); fail(); } catch (final NullPointerException e) { // This is expected. } } /** * Tests the getSolution method. * * @throws Exception */ public void testGetSolution2() throws Exception { new JadeSolver() { void test() { final float[] v = { 0, 1, 2, 3 }; final int[] e = { 0, 1, 1, 2, 2, 3 }; final Graph g = newGraph(v, e); final GraphData gd = new GraphData(g); new SolutionMatrix(gd).getSolution(); } }.test(); } /** * Tests the getSolution method. * * @throws Exception */ public void testGetSolution3() throws Exception { new JadeSolver() { void test() { try { final float[] v = { 0, 1, 2, 3 }; final int[] e = { 0, 1, 1, 2, 2, 3 }; final Graph g = newGraph(v, e); final GraphData gd = new GraphData(g); new SolutionMatrix(gd).getSolution(null, 1.0f); fail(); } catch (final NullPointerException e) { // This is expected. } } }.test(); } /** * Tests the GraphData constructor method. * * @throws Exception */ public void testGraphDataConstructor() throws Exception { new JadeSolver() { void test() { try { new GraphData(null); fail(); } catch (final NullPointerException e) { // This is expected. } } }.test(); } /** * Tests the GraphSolution getSolution method. * * @throws Exception */ public void testGraphDataGetSolution() throws Exception { new JadeSolver() { void test() { try { final float[] v = { 0, 1, 2, 3 }; final int[] e = { 0, 1, 1, 2, 2, 3 }; final Graph g = newGraph(v, e); final GraphData gd = new GraphData(g); new VertexNode(gd, 100); fail(); } catch (final IndexOutOfBoundsException e) { // This is expected. } } }.test(); } /** * Tests the GraphData toString method. * * @throws Exception */ public void testGraphDataToString() throws Exception { new JadeSolver() { void test() { final float[] v = { 0.0f }; final int[] e = {}; final String s = new GraphData(newGraph(v, e)).toString(); assertEquals("{\n [0:0.0] --> null\n}", s); } }.test(); } /** * Tests the mark method. * * @throws Exception */ public void testMark1() throws Exception { new JadeSolver() { void test() { try { final float[] v = { 0, 1, 2, 3 }; final int[] e = { 0, 1, 1, 2, 2, 3 }; final Graph g = newGraph(v, e); final GraphData gd = new GraphData(g); new SolutionMatrix(gd).mark(null, gd.nodeAt(0)); fail(); } catch (final NullPointerException e) { // This is expected. } } }.test(); } /** * Tests the mark method. * * @throws Exception */ public void testMark2() throws Exception { new JadeSolver() { void test() { try { final float[] v = { 0, 1, 2, 3 }; final int[] e = { 0, 1, 1, 2, 2, 3 }; final Graph g = newGraph(v, e); final GraphData gd = new GraphData(g); new SolutionMatrix(gd).mark(gd.nodeAt(0), null); fail(); } catch (final NullPointerException e) { // This is expected. } } }.test(); } /** * Tests the constructor. * * @throws Exception */ public void testSolve1() throws Exception { final JadeSolver solver = new JadeSolver(); try { solver.solve(null); fail(); } catch (final NullPointerException e) { // This is expected. } } /** * Tests the constructor. * * @throws Exception */ public void testSolve2() throws Exception { final JadeSolver solver = new JadeSolver(); final float[] v = { 0, 1, 2, 3 }; final int[] e = { 0, 1, 1, 2, 2, 3 }; final Graph g = newGraph(v, e); final GraphSolution s = solver.solve(g); assertTrue(s.hasRoot()); assertEquals(2, s.root()); assertTrue(s.hasWeight()); assertEquals(4.0f, s.weight(), 0.0001f); } /** * Tests the toString method. * * @throws Exception */ public void testToString() throws Exception { new JadeSolver() { void test() { final float[] v = { 0, 1, 2, 3 }; final int[] e = { 0, 1, 1, 2, 2, 3 }; final Graph g = newGraph(v, e); final GraphData gd = new GraphData(g); assertEquals("[1:1.0] --> { 0 2 }", gd.nodeAt(1).toString()); } }.test(); } /** * Tests the VertexNode constructor. * * @throws Exception */ public void testVertexNodeConstructor() throws Exception { new JadeSolver() { void test() { try { final float[] v = { 0, 1, 2, 3 }; final int[] e = { 0, 1, 1, 2, 2, 3 }; final Graph g = newGraph(v, e); final GraphData gd = new GraphData(g); new SolutionMatrix(gd).mark(gd.nodeAt(0), null); fail(); } catch (final NullPointerException e) { // This is expected. } } }.test(); } /** * Tests the VertexNode constructor. * * @throws Exception */ public void testVertexNodeConstructor1() throws Exception { new JadeSolver() { void test() { try { new VertexNode(null, 0); fail(); } catch (final NullPointerException e) { // This is expected. } } }.test(); } /** * Tests the VertexNode constructor. * * @throws Exception */ public void testVertexNodeConstructor2() throws Exception { new JadeSolver() { void test() { try { new VertexNode(null, 0); fail(); } catch (final NullPointerException e) { // This is expected. } } }.test(); } }