@Test
  public void testMixedEntries() {
    final SortBuilder builder =
        new SortBuilder(
            SortBy.DATABASE,
            SortBy.DOC_ID_DECREASING,
            new SortBuilder(),
            new SortBuilder(
                SortBy.DATABASE,
                SortBy.AUTN_RANK,
                new SortBuilder(SortBy.DOC_ID_INCREASING, SortBy.DATABASE, SortBy.DATE),
                SortBy.DATABASE));

    assertEquals("database+dociddecreasing+autnrank+docidincreasing+date", builder.toString());
    assertEquals(5, builder.size());
    assertFalse(builder.isEmpty());

    final Iterator<SortBy> iterator = builder.iterator();

    assertTrue(iterator.hasNext());
    assertEquals(SortBy.DATABASE, iterator.next());
    assertTrue(iterator.hasNext());
    assertEquals(SortBy.DOC_ID_DECREASING, iterator.next());
    assertTrue(iterator.hasNext());
    assertEquals(SortBy.AUTN_RANK, iterator.next());
    assertTrue(iterator.hasNext());
    assertEquals(SortBy.DOC_ID_INCREASING, iterator.next());
    assertTrue(iterator.hasNext());
    assertEquals(SortBy.DATE, iterator.next());
    assertFalse(iterator.hasNext());
  }
  @Test
  public void testEmptySortBuilder() {
    final SortBuilder builder = new SortBuilder();

    assertEquals("", builder.toString());
    assertEquals(0, builder.size());
    assertTrue(builder.isEmpty());
    assertFalse(builder.iterator().hasNext());
  }
  @Test
  public void testSingleEntrySortBuilder() {
    final SortBuilder builder = new SortBuilder(SortBy.DATABASE);

    assertEquals("database", builder.toString());
    assertEquals(1, builder.size());
    assertFalse(builder.isEmpty());

    final Iterator<SortBy> iterator = builder.iterator();

    assertTrue(iterator.hasNext());
    assertEquals(SortBy.DATABASE, iterator.next());
    assertFalse(iterator.hasNext());
  }
  @Test
  public void testTwoEntriesSortBuilder() {
    final SortBuilder builder = new SortBuilder(SortBy.DATABASE, SortBy.DOC_ID_DECREASING);

    assertEquals("database+dociddecreasing", builder.toString());
    assertEquals(2, builder.size());
    assertFalse(builder.isEmpty());

    final Iterator<SortBy> iterator = builder.iterator();

    assertTrue(iterator.hasNext());
    assertEquals(SortBy.DATABASE, iterator.next());
    assertTrue(iterator.hasNext());
    assertEquals(SortBy.DOC_ID_DECREASING, iterator.next());
    assertFalse(iterator.hasNext());
  }