@Test
  public void setStarRating_withNull_shouldSetStarRatingToNull() throws Exception {
    // Setting star rating to 0 before each case, so we can detect when it gets set to null
    final double initialStarRating = 0.0;

    subject.setStarRating(initialStarRating);
    subject.setStarRating(null);
    assertThat(subject.getStarRating()).isEqualTo(null);
  }
  @Test
  public void setStarRating_withinValidRange_shouldSetStarRating() throws Exception {
    subject.setStarRating(0.0);
    assertThat(subject.getStarRating()).isEqualTo(0.0);

    subject.setStarRating(5.0);
    assertThat(subject.getStarRating()).isEqualTo(5.0);

    subject.setStarRating(2.5);
    assertThat(subject.getStarRating()).isEqualTo(2.5);
  }
  @Test
  public void setStarRating_withValuesOutsideOfValidRange_shouldNotSetStarRating()
      throws Exception {
    // First, set star rating to a valid value
    final double initialStarRating = 4.9;
    subject.setStarRating(initialStarRating);

    subject.setStarRating(5.0001);
    assertThat(subject.getStarRating()).isEqualTo(initialStarRating);

    subject.setStarRating(-0.001);
    assertThat(subject.getStarRating()).isEqualTo(initialStarRating);
  }
  @Test
  public void setStarRating_withNanOrInf_shouldNotSetStarRating() throws Exception {
    // First, set star rating to a valid value
    final double initialStarRating = 3.75;
    subject.setStarRating(initialStarRating);

    subject.setStarRating(Double.NaN);
    assertThat(subject.getStarRating()).isEqualTo(initialStarRating);

    subject.setStarRating(Double.POSITIVE_INFINITY);
    assertThat(subject.getStarRating()).isEqualTo(initialStarRating);

    subject.setStarRating(Double.NEGATIVE_INFINITY);
    assertThat(subject.getStarRating()).isEqualTo(initialStarRating);
  }