/** Confirm that the equals method can distinguish all the required fields. */
  public void testEquals() {
    StandardDialRange r1 = new StandardDialRange();
    StandardDialRange r2 = new StandardDialRange();
    assertTrue(r1.equals(r2));

    // lowerBound
    r1.setLowerBound(1.1);
    assertFalse(r1.equals(r2));
    r2.setLowerBound(1.1);
    assertTrue(r1.equals(r2));

    // upperBound
    r1.setUpperBound(11.1);
    assertFalse(r1.equals(r2));
    r2.setUpperBound(11.1);
    assertTrue(r1.equals(r2));

    // paint
    r1.setPaint(new GradientPaint(1.0f, 2.0f, Color.RED, 3.0f, 4.0f, Color.BLUE));
    assertFalse(r1.equals(r2));
    r2.setPaint(new GradientPaint(1.0f, 2.0f, Color.RED, 3.0f, 4.0f, Color.BLUE));
    assertTrue(r1.equals(r2));

    // check an inherited attribute
    r1.setVisible(false);
    assertFalse(r1.equals(r2));
    r2.setVisible(false);
    assertTrue(r1.equals(r2));
  }
 /** Two objects that are equal are required to return the same hashCode. */
 public void testHashCode() {
   StandardDialRange r1 = new StandardDialRange();
   StandardDialRange r2 = new StandardDialRange();
   assertTrue(r1.equals(r2));
   int h1 = r1.hashCode();
   int h2 = r2.hashCode();
   assertEquals(h1, h2);
 }
  /** Confirm that cloning works. */
  public void testCloning() {
    StandardDialRange r1 = new StandardDialRange();
    StandardDialRange r2 = null;
    try {
      r2 = (StandardDialRange) r1.clone();
    } catch (CloneNotSupportedException e) {
      e.printStackTrace();
    }
    assertTrue(r1 != r2);
    assertTrue(r1.getClass() == r2.getClass());
    assertTrue(r1.equals(r2));

    // check that the listener lists are independent
    MyDialLayerChangeListener l1 = new MyDialLayerChangeListener();
    r1.addChangeListener(l1);
    assertTrue(r1.hasListener(l1));
    assertFalse(r2.hasListener(l1));
  }