@Test
  public void testSolverInit() {
    CobwebGraph cw = new CobwebGraph(3);
    CobwebSolver solver = new CobwebSolver(cw.map);
    assertTrue(solver.hasUnreachableNodes());
    solver.setEdge(1, 2, Edge.EdgeOperation.ADDITION, 1);
    solver.setEdge(1, 3, Edge.EdgeOperation.ADDITION, 1);
    assertFalse(solver.hasUnreachableNodes());

    assertEquals(null, solver.getNodeValue(1));
    solver.setNode(1, 5);
    assertTrue(solver.getNodeValue(1).equals(5));
  }
  @Test
  public void testEasyQuad() {
    CobwebGraph quad = new CobwebGraph(4);
    CobwebSolver solver;
    quad.setEdge(1, 2, Edge.EdgeOperation.ADDITION, 6);
    quad.setEdge(2, 3, Edge.EdgeOperation.MULTIPLICATION, 2);
    quad.setEdge(1, 4, Edge.EdgeOperation.MULTIPLICATION, 3);
    quad.setEdge(4, 3, Edge.EdgeOperation.ADDITION, 1);
    solver = new CobwebSolver(quad.map);
    assertEquals(CobwebSolver.SolverState.SINGLE_SOLUTION, solver.numberOfSolutions());

    quad.setNode(4, 33);
    solver = new CobwebSolver(quad.map);
    assertFalse(solver.hasUnreachableNodes());
    assertEquals(CobwebSolver.SolverState.SINGLE_SOLUTION, solver.numberOfSolutions());

    quad.setNode(4, 15);
    solver = new CobwebSolver(quad.map);
    assertEquals(CobwebSolver.SolverState.NO_SOLUTION, solver.numberOfSolutions());
  }
 @Test
 public void testCircularCobweb() {
   CobwebSolver circularSolver = new CobwebSolver(createCircularWeb(5).map);
   assertFalse(circularSolver.hasUnreachableNodes());
 }