public void testGenerateSafetyAlerts() throws Exception {
    assertEquals(0, observedAdverseEventProfileDao.getAll().size());
    safetyMonitoringService.generateSafetyAlerts();
    observedAdverseEventProfiles = observedAdverseEventProfileDao.getAll();
    for (ObservedAdverseEventProfile observedAdverseEventProfile : observedAdverseEventProfiles) {
      System.out.println(observedAdverseEventProfile);
    }
    assertEquals(6, observedAdverseEventProfiles.size());
    ObservedAdverseEventProfile observedAdverseEventProfile =
        getObservedAdverseEventProfile(-1, -1, Grade.getByCode(1));
    assertEquals(20.0, observedAdverseEventProfile.getExpectedFrequency());
    assertEquals(0.0, observedAdverseEventProfile.getObservedFrequency());
    assertEquals(0, observedAdverseEventProfile.getObservedNoOfAE().intValue());
    assertEquals(5, observedAdverseEventProfile.getTotalNoOfRegistrations().intValue());

    observedAdverseEventProfile = getObservedAdverseEventProfile(-1, -1, Grade.getByCode(2));
    assertEquals(10.0, observedAdverseEventProfile.getExpectedFrequency());
    assertEquals(0.0, observedAdverseEventProfile.getObservedFrequency());
    assertEquals(0, observedAdverseEventProfile.getObservedNoOfAE().intValue());
    assertEquals(5, observedAdverseEventProfile.getTotalNoOfRegistrations().intValue());

    observedAdverseEventProfile = getObservedAdverseEventProfile(-1, -1, Grade.getByCode(3));
    assertEquals("4.34", format(observedAdverseEventProfile.getExpectedFrequency()));
    assertEquals(0.0, observedAdverseEventProfile.getObservedFrequency());
    assertEquals(0, observedAdverseEventProfile.getObservedNoOfAE().intValue());
    assertEquals(5, observedAdverseEventProfile.getTotalNoOfRegistrations().intValue());

    observedAdverseEventProfile = getObservedAdverseEventProfile(-1, -1, Grade.getByCode(4));
    assertEquals("6.23", format(observedAdverseEventProfile.getExpectedFrequency()));
    assertEquals(0.0, observedAdverseEventProfile.getObservedFrequency());
    assertEquals(0, observedAdverseEventProfile.getObservedNoOfAE().intValue());
    assertEquals(5, observedAdverseEventProfile.getTotalNoOfRegistrations().intValue());

    observedAdverseEventProfile = getObservedAdverseEventProfile(-1, -1, Grade.getByCode(5));
    assertEquals("20.00", format(observedAdverseEventProfile.getExpectedFrequency()));
    assertEquals("40.00", format(observedAdverseEventProfile.getObservedFrequency()));
    assertEquals(2, observedAdverseEventProfile.getObservedNoOfAE().intValue());
    assertEquals(5, observedAdverseEventProfile.getTotalNoOfRegistrations().intValue());

    observedAdverseEventProfile = getObservedAdverseEventProfile(-1, -1, null);
    assertEquals("60.00", format(observedAdverseEventProfile.getExpectedFrequency()));
    assertEquals("40.00", format(observedAdverseEventProfile.getObservedFrequency()));
    assertEquals(2, observedAdverseEventProfile.getObservedNoOfAE().intValue());
    assertEquals(5, observedAdverseEventProfile.getTotalNoOfRegistrations().intValue());
  }