@Test
  public void walkingBackwardsThroughInputs() throws Exception {
    buildInputTree();
    listener.focusOnPreviousInput();
    assertEquals(input3, listener.getFocusedPanel());

    listener.focusOnPreviousInput();
    assertEquals(input2, listener.getFocusedPanel());

    listener.focusOnPreviousInput();
    assertEquals(input, listener.getFocusedPanel());

    listener.focusOnPreviousInput();
    assertEquals(input3, listener.getFocusedPanel());
  }
  @Test
  public void walkingForwardThroughInputs() throws Exception {
    buildInputTree();
    listener.focusOnNextInput();
    assertEquals(input, listener.getFocusedPanel());

    listener.focusOnNextInput();
    assertEquals(input2, listener.getFocusedPanel());

    listener.focusOnNextInput();
    assertEquals(input3, listener.getFocusedPanel());

    listener.focusOnNextInput();
    assertEquals(input, listener.getFocusedPanel());
  }
  @Test
  public void changeFocus() throws Exception {
    listener.focusOn(panel);

    assertEquals(panel, listener.getFocusedPanel());
    assertEquals(FocusGainedEvent.class, panelEvents.last().getClass());
  }
  @Test
  public void focusIsLostWhenChangingFocus() throws Exception {
    MockPanel panel2 = new MockPanel();

    listener.focusOn(panel);
    listener.focusOn(panel2);

    assertEquals(panel2, listener.getFocusedPanel());
    assertEquals(FocusLostEvent.class, panelEvents.last().getClass());
    assertEquals(FocusGainedEvent.class, panel2.mockEventHandler.last().getClass());
  }
 @Test
 public void focusOnFrameByDefault() throws Exception {
   assertEquals(root, listener.getFocusedPanel());
 }