/** This method tests moving an Item around in the selection list of a query. */
  public void testMoveColumn() throws Exception {
    QueryImpl query = new QueryImpl(new StubDatabaseMapping());
    Container container = new ItemContainer("Container");
    Item item1 = new StringItem("item1");
    container.addItem(item1);
    Item item2 = new StringItem("item2");
    container.addItem(item2);

    Container container2 = new ItemContainer("Container2");
    Item item3 = new StringItem("item3");
    container2.addItem(item3);
    Item item4 = new StringItem("item4");
    container2.addItem(item4);

    query.addTable(container);
    query.addTable(container2);

    query.selectItem(item1);
    query.selectItem(item2);
    query.selectItem(item3);
    query.selectItem(item4);

    assertEquals(item1, query.getSelectedColumns().get(0));
    assertEquals(0, item1.getSelected().intValue());
    assertEquals(item2, query.getSelectedColumns().get(1));
    assertEquals(1, item2.getSelected().intValue());
    assertEquals(item3, query.getSelectedColumns().get(2));
    assertEquals(2, item3.getSelected().intValue());
    assertEquals(item4, query.getSelectedColumns().get(3));
    assertEquals(3, item4.getSelected().intValue());

    query.moveItem(item3, 0);

    assertEquals(item3, query.getSelectedColumns().get(0));
    assertEquals(0, item3.getSelected().intValue());
    assertEquals(item1, query.getSelectedColumns().get(1));
    assertEquals(1, item1.getSelected().intValue());
    assertEquals(item2, query.getSelectedColumns().get(2));
    assertEquals(2, item2.getSelected().intValue());
    assertEquals(item4, query.getSelectedColumns().get(3));
    assertEquals(3, item4.getSelected().intValue());

    query.moveItem(item1, 3);

    assertEquals(item3, query.getSelectedColumns().get(0));
    assertEquals(0, item3.getSelected().intValue());
    assertEquals(item2, query.getSelectedColumns().get(1));
    assertEquals(1, item2.getSelected().intValue());
    assertEquals(item4, query.getSelectedColumns().get(2));
    assertEquals(2, item4.getSelected().intValue());
    assertEquals(item1, query.getSelectedColumns().get(3));
    assertEquals(3, item1.getSelected().intValue());
  }