GraphSolutionTest.java

package edu.hawaii.ics.yucheng;

import java.util.ArrayList;

import junit.framework.TestCase;

/**
 * Tests the GraphSolution class.
 */
public class GraphSolutionTest extends TestCase {

    /**
     * Tests the constructor.
     * 
     * @throws Exception
     */
    public void testConstructor1() throws Exception {
        final GraphSolution s = new GraphSolution(new ArrayList<Edge>());
        assertFalse(s.hasRoot());
        assertFalse(s.hasWeight());
    }


    /**
     * Tests the constructor.
     * 
     * @throws Exception
     */
    public void testConstructor2() throws Exception {
        final ArrayList<Edge> edges = new ArrayList<Edge>();
        edges.add(new Edge(0, 1));
        final GraphSolution s = new GraphSolution(edges, 0);
        assertTrue(s.hasRoot());
        assertEquals(0, s.root());
        assertFalse(s.hasWeight());
    }


    /**
     * Tests the constructor.
     * 
     * @throws Exception
     */
    public void testConstructor3a() throws Exception {
        try {
            new GraphSolution(null, 0, 0.0f);
            fail();
        } catch (final NullPointerException e) {
            // This is expected.
        }
    }


    /**
     * Tests the constructor.
     * 
     * @throws Exception
     */
    public void testConstructor3b() throws Exception {
        final ArrayList<Edge> edges = new ArrayList<Edge>();
        edges.add(null);
        try {
            new GraphSolution(edges, 0, 0.0f);
            fail();
        } catch (final GraphException e) {
            // This is expected.
        }
    }


    /**
     * Tests the constructor.
     * 
     * @throws Exception
     */
    public void testConstructor3c() throws Exception {
        final ArrayList<Edge> edges = new ArrayList<Edge>();
        edges.add(new Edge(0, 1));
        edges.add(new Edge(0, 1));
        try {
            new GraphSolution(edges, 0, 0.0f);
            fail();
        } catch (final GraphException e) {
            // This is expected.
        }
    }


    /**
     * Tests the constructor.
     * 
     * @throws Exception
     */
    public void testConstructor3d() throws Exception {
        final ArrayList<Edge> edges = new ArrayList<Edge>();
        edges.add(new Edge(0, 1));
        try {
            new GraphSolution(edges, 2, 0.0f);
            fail();
        } catch (final GraphException e) {
            // This is expected.
        }
    }


    /**
     * Tests the constructor.
     * 
     * @throws Exception
     */
    public void testConstructor3e() throws Exception {
        final ArrayList<Edge> edges = new ArrayList<Edge>();
        edges.add(new Edge(0, 1));
        try {
            new GraphSolution(edges, -2, 0.0f);
            fail();
        } catch (final GraphException e) {
            // This is expected.
        }
    }


    /**
     * Tests the hasRoot method.
     * 
     * @throws Exception
     */
    public void testHasRoot() throws Exception {
        final ArrayList<Edge> edges = new ArrayList<Edge>();
        edges.add(new Edge(0, 1));
        final GraphSolution s = new GraphSolution(edges, 0, 0.0f);
        assertTrue(s.hasRoot());
    }


    /**
     * Tests the hasWeight method.
     * 
     * @throws Exception
     */
    public void testHasWeight() throws Exception {
        final ArrayList<Edge> edges = new ArrayList<Edge>();
        edges.add(new Edge(0, 1));
        final GraphSolution s = new GraphSolution(edges, 0, 0.0f);
        assertTrue(s.hasWeight());
    }


    /**
     * Tests the iterator method.
     * 
     * @throws Exception
     */
    public void testIterator() throws Exception {
        final ArrayList<Edge> edges = new ArrayList<Edge>();
        edges.add(new Edge(0, 1));
        final GraphSolution s = new GraphSolution(edges, 0, 0.0f);
        int count = 0;
        for (final Edge e : s) {
            assertNotNull(e);
            assertEquals(0, e.first());
            assertEquals(1, e.second());
            count++;
        }
        assertEquals(1, count);
    }


    /**
     * Tests the root method.
     * 
     * @throws Exception
     */
    public void testRoot1() throws Exception {
        final ArrayList<Edge> edges = new ArrayList<Edge>();
        edges.add(new Edge(0, 1));
        final GraphSolution s = new GraphSolution(edges);
        try {
            s.root();
            fail();
        } catch (final GraphException e) {
            // This is expected.
        }
    }


    /**
     * Tests the root method.
     * 
     * @throws Exception
     */
    public void testRoot2() throws Exception {
        final ArrayList<Edge> edges = new ArrayList<Edge>();
        edges.add(new Edge(0, 1));
        final GraphSolution s = new GraphSolution(edges, 0);
        assertEquals(0, s.root());
    }


    /**
     * Tests the weight method.
     * 
     * @throws Exception
     */
    public void testWeight1() throws Exception {
        final ArrayList<Edge> edges = new ArrayList<Edge>();
        edges.add(new Edge(0, 1));
        final GraphSolution s = new GraphSolution(edges);
        try {
            s.weight();
            fail();
        } catch (final GraphException e) {
            // This is expected.
        }
    }


    /**
     * Tests the weight method.
     * 
     * @throws Exception
     */
    public void testWeight2() throws Exception {
        final ArrayList<Edge> edges = new ArrayList<Edge>();
        edges.add(new Edge(0, 1));
        final GraphSolution s = new GraphSolution(edges, 0, 50.0f);
        assertEquals(50.0f, s.weight(), 0.0001f);
    }
}
Valid HTML 4.01 Valid CSS