@Test
  public void testFullSelection() throws Exception {
    tester.startPage(
        new FormTestPage(
            new ComponentBuilder() {

              public Component buildComponent(String id) {
                return new IntegerTable(id, true);
              }
            }));
    tester.assertComponent("form:panel", IntegerTable.class);
    IntegerTable table = (IntegerTable) tester.getComponentFromLastRenderedPage("form:panel");

    // check the select all check and the row check are there
    String selectAllPath = "form:panel:listContainer:selectAllContainer:selectAll";
    String selectFirstPath = "form:panel:listContainer:items:1:selectItemContainer:selectItem";
    tester.assertComponent(selectAllPath, CheckBox.class);
    tester.assertComponent(selectFirstPath, CheckBox.class);

    // test full selection
    assertEquals(0, table.getSelection().size());
    FormTester ft = tester.newFormTester("form");
    ft.setValue("panel:listContainer:selectAllContainer:selectAll", "true");
    tester.executeAjaxEvent(selectAllPath, "onclick");
    assertEquals(10, table.getSelection().size());
    assertEquals(new Integer(0), table.getSelection().get(0));

    // reset selection
    table.setSelection(false);
    assertEquals(0, table.getSelection().size());
  }
  @Test
  public void testSingleSelection() throws Exception {
    tester.startPage(
        new FormTestPage(
            new ComponentBuilder() {

              public Component buildComponent(String id) {
                return new IntegerTable(id, true);
              }
            }));
    tester.assertComponent("form:panel", IntegerTable.class);
    IntegerTable table = (IntegerTable) tester.getComponentFromLastRenderedPage("form:panel");
    assertEquals(0, table.getSelection().size());

    // select just one
    FormTester ft = tester.newFormTester("form");
    ft.setValue("panel:listContainer:items:1:selectItemContainer:selectItem", "true");
    ft.setValue("panel:listContainer:items:7:selectItemContainer:selectItem", "true");
    ft.submit();
    assertEquals(2, table.getSelection().size());
    assertEquals(new Integer(0), table.getSelection().get(0));
    assertEquals(new Integer(6), table.getSelection().get(1));
  }
  @Test
  public void testSingleSelectionByObjectAndIndex() throws Exception {
    tester.startPage(
        new FormTestPage(
            new ComponentBuilder() {

              public Component buildComponent(String id) {
                return new IntegerTable(id, true);
              }
            }));
    tester.assertComponent("form:panel", IntegerTable.class);

    IntegerTable table = (IntegerTable) tester.getComponentFromLastRenderedPage("form:panel");
    assertEquals(0, table.getSelection().size());

    table.selectObject(new Integer(5));
    assertEquals(1, table.getSelection().size());
    assertEquals(new Integer(5), table.getSelection().get(0));

    table.selectObject(7);
    assertEquals(2, table.getSelection().size());
    assertEquals(new Integer(5), table.getSelection().get(0));
    assertEquals(new Integer(7), table.getSelection().get(1));
  }