/** Test method for {@link net.sf.hajdbc.balancer.AbstractBalancer#iterator()}. */
  @Test
  public void iterator() {
    Balancer<Void, MockDatabase> balancer =
        this.factory.createBalancer(Collections.<MockDatabase>emptySet());

    Iterator<MockDatabase> result = balancer.iterator();
    assertFalse(result.hasNext());

    balancer = this.factory.createBalancer(Collections.singleton(this.databases[0]));

    result = balancer.iterator();
    assertTrue(result.hasNext());
    assertEquals(this.databases[0], result.next());
    assertFalse(result.hasNext());

    balancer =
        this.factory.createBalancer(
            new HashSet<MockDatabase>(Arrays.asList(this.databases[0], this.databases[1])));

    result = balancer.iterator();
    assertTrue(result.hasNext());
    assertEquals(this.databases[0], result.next());
    assertTrue(result.hasNext());
    assertEquals(this.databases[1], result.next());
    assertFalse(result.hasNext());

    balancer =
        this.factory.createBalancer(new HashSet<MockDatabase>(Arrays.asList(this.databases)));

    result = balancer.iterator();
    assertTrue(result.hasNext());
    assertEquals(this.databases[0], result.next());
    assertTrue(result.hasNext());
    assertEquals(this.databases[1], result.next());
    assertTrue(result.hasNext());
    assertEquals(this.databases[2], result.next());
    assertFalse(result.hasNext());
  }