/** Testet das Verwerfen der Änderungen. */
  @Test
  public final void testCancel() {
    controller.setDialogStage(mockedDialogStage);

    // Alarm vorgeben
    final LocalDateTime now = LocalDateTime.now();
    final Alarm alarm = new Alarm(now, "bla");
    controller.setAlarm(alarm);
    FXTestUtils.awaitEvents();

    // deaktivieren
    click(alarmEnabledCheckbox);
    waitForThreads();

    Platform.runLater(
        new Runnable() {
          public void run() {
            // Datum setzen
            alarmDatePicker.setValue(DateTimeUtil.getLocalDateForString("24.12.2014"));

            // Zeit setzen
            alarmTimePicker.setValue(DateTimeUtil.getLocalTimeForString("12:00:00"));

            // Beschreibung setzen
            alarmDescriptionTextField.setText("Test");
          }
        });
    FXTestUtils.awaitEvents();

    // Sound setzen
    controller.setRingtone("Sound");
    FXTestUtils.awaitEvents();

    // Abbrechen-Schaltfläche betätigen
    final Button alarmCancelButton = (Button) scene.lookup("#alarmCancelButton");
    click(alarmCancelButton);
    waitForThreads();

    // sicherstellen, dass Dialog geschlossen worden wäre
    verify(mockedDialogStage, timeout(WAIT_FOR_EVENT)).close();

    // sicherstellen, dass Alarm ursprüngliche Werte hat
    assertTrue(alarm.isEnabled());
    assertEquals(now, alarm.getDateTime());
    assertEquals("bla", alarm.getDescription());
    assertEquals(null, alarm.getSound());
  }
  /** Testet das Speichern der Änderungen. */
  @Test
  public final void testApplyChanges() {
    controller.setDialogStage(mockedDialogStage);

    // Alarm vorgeben
    final Alarm alarm =
        new Alarm(DateTimeUtil.getLocalDateTimeForString("01.01.1970 00:00:00"), "Bla");
    controller.setAlarm(alarm);
    FXTestUtils.awaitEvents();

    // deaktivieren
    click(alarmEnabledCheckbox);
    waitForThreads();

    Platform.runLater(
        new Runnable() {
          public void run() {
            // Datum setzen
            alarmDatePicker.setValue(DateTimeUtil.getLocalDateForString("24.12.2014"));

            // Zeit setzen
            alarmTimePicker.setValue(DateTimeUtil.getLocalTimeForString("12:00:00"));

            // Beschreibung setzen
            alarmDescriptionTextField.setText("Test");
          }
        });
    FXTestUtils.awaitEvents();

    // Sound setzen
    controller.setRingtone("Sound");
    FXTestUtils.awaitEvents();

    // Speichern-Schaltfläche betätigen
    click(alarmSaveButton);
    waitForThreads();

    // sicherstellen, dass Dialog geschlossen worden wäre
    verify(mockedDialogStage, timeout(WAIT_FOR_EVENT)).close();

    // sicherstellen, dass Alarm neue Werte hat
    assertFalse(alarm.isEnabled());
    assertEquals(
        DateTimeUtil.getLocalDateTimeForString("24.12.2014 12:00:00"), alarm.getDateTime());
    assertEquals("Test", alarm.getDescription());
    assertEquals("Sound", alarm.getSound());
  }