/** Tests that adding and removing a container will fire the correct event from the query. */
  public void testContainerFiresEvent() throws Exception {
    CountingChangeListener listener = new CountingChangeListener();
    QueryImpl query = new QueryImpl(new StubDatabaseMapping());
    query.addQueryChangeListener(listener);
    Container container = new ItemContainer("container");
    Item item = new StringItem("name");
    container.addItem(item);

    assertEquals(0, listener.getContainerAddedCount());
    query.addTable(container);

    assertEquals(1, listener.getContainerAddedCount());
    QueryChangeEvent evt = listener.getLastQueryChangeEvent();
    assertEquals(container, evt.getContainerChanged());
    assertEquals(query, evt.getSource());

    assertEquals(0, listener.getContainerRemovedCount());
    query.removeTable(container);

    assertEquals(1, listener.getContainerRemovedCount());
    evt = listener.getLastQueryChangeEvent();
    assertEquals(container, evt.getContainerChanged());
    assertEquals(query, evt.getSource());
  }