@Test
  public void setAnalysisDate_throws_ISE_when_called_twice() {
    expectedException.expect(IllegalStateException.class);
    expectedException.expectMessage("Analysis date has already been set");

    ReportAnalysisMetadataHolder underTest = new ReportAnalysisMetadataHolder();

    underTest.setAnalysisDate(someDate);
    underTest.setAnalysisDate(someDate);
  }
  @Test
  public void getAnalysisDate_returns_date_with_same_time_as_the_one_set_with_setAnalysisDate()
      throws InterruptedException {
    ReportAnalysisMetadataHolder underTest = new ReportAnalysisMetadataHolder();

    underTest.setAnalysisDate(someDate);

    Thread.sleep(10);

    Date analysisDate = underTest.getAnalysisDate();
    assertThat(analysisDate.getTime()).isEqualTo(someDate.getTime());
    assertThat(analysisDate).isNotSameAs(someDate);
  }