/** Some checks for the update(RegularTimePeriod...method). */
 @Test
 public void testUpdate_RegularTimePeriod() {
   TimeSeries s1 = new TimeSeries("S1");
   s1.add(new Year(2010), 1.1);
   s1.add(new Year(2011), 2.2);
   s1.add(new Year(2012), 3.3);
   s1.update(new Year(2012), 4.4);
   assertEquals(4.4, s1.getMaxY(), EPSILON);
   s1.update(new Year(2010), 0.5);
   assertEquals(0.5, s1.getMinY(), EPSILON);
   s1.update(new Year(2012), null);
   assertEquals(2.2, s1.getMaxY(), EPSILON);
   s1.update(new Year(2010), null);
   assertEquals(2.2, s1.getMinY(), EPSILON);
 }
  /**
   * Checks that the min and max y values are updated correctly when copying a subset.
   *
   * @throws java.lang.CloneNotSupportedException
   */
  @Test
  public void testCreateCopy3() throws CloneNotSupportedException {
    TimeSeries s1 = new TimeSeries("S1");
    s1.add(new Year(2009), 100.0);
    s1.add(new Year(2010), 101.0);
    s1.add(new Year(2011), 102.0);
    assertEquals(100.0, s1.getMinY(), EPSILON);
    assertEquals(102.0, s1.getMaxY(), EPSILON);

    TimeSeries s2 = s1.createCopy(0, 1);
    assertEquals(100.0, s2.getMinY(), EPSILON);
    assertEquals(101.0, s2.getMaxY(), EPSILON);

    TimeSeries s3 = s1.createCopy(1, 2);
    assertEquals(101.0, s3.getMinY(), EPSILON);
    assertEquals(102.0, s3.getMaxY(), EPSILON);
  }
 /** Test for bug report 3446965. */
 @Test
 public void testBug3446965() {
   TimeSeries s = new TimeSeries("s");
   s.addOrUpdate(new Year(2011), 100.0);
   s.addOrUpdate(new Year(2012), 150.0);
   s.addOrUpdate(new Year(2013), 200.0);
   s.addOrUpdate(new Year(2012), 250.0); // this line triggers the defect
   assertEquals(100.0, s.getMinY(), EPSILON);
   assertEquals(250.0, s.getMaxY(), EPSILON);
 }
 /**
  * Check that the item bounds are determined correctly when there is a maximum item count and a
  * new value is added.
  */
 @Test
 public void testAdd() {
   TimeSeries s1 = new TimeSeries("S1");
   s1.setMaximumItemCount(2);
   s1.add(new Year(2010), 1.1);
   s1.add(new Year(2011), 2.2);
   s1.add(new Year(2012), 3.3);
   assertEquals(2, s1.getItemCount());
   assertEquals(2.2, s1.getMinY(), EPSILON);
   assertEquals(3.3, s1.getMaxY(), EPSILON);
 }
 /**
  * Check that the item bounds are determined correctly when there is a maximum item count and a
  * new value is added.
  */
 @Test
 public void testDelete_RegularTimePeriod() {
   TimeSeries s1 = new TimeSeries("S1");
   s1.add(new Year(2010), 1.1);
   s1.add(new Year(2011), 2.2);
   s1.add(new Year(2012), 3.3);
   s1.add(new Year(2013), 4.4);
   s1.delete(new Year(2010));
   s1.delete(new Year(2013));
   assertEquals(2.2, s1.getMinY(), EPSILON);
   assertEquals(3.3, s1.getMaxY(), EPSILON);
 }
  /** A test for the clear method. */
  @Test
  public void testClear() {
    TimeSeries s1 = new TimeSeries("S1");
    s1.add(new Year(2009), 1.1);
    s1.add(new Year(2010), 2.2);

    assertEquals(2, s1.getItemCount());

    s1.clear();
    assertEquals(0, s1.getItemCount());
    assertTrue(Double.isNaN(s1.getMinY()));
    assertTrue(Double.isNaN(s1.getMaxY()));
  }
 /** Check that the item bounds are determined correctly after a call to removeAgedItems(). */
 @Test
 public void testRemoveAgedItems5() {
   TimeSeries s1 = new TimeSeries("S1");
   s1.setMaximumItemAge(4);
   s1.add(new Year(2010), 1.1);
   s1.add(new Year(2011), 2.2);
   s1.add(new Year(2012), 3.3);
   s1.add(new Year(2013), 2.5);
   s1.removeAgedItems(new Year(2015).getMiddleMillisecond(), true);
   assertEquals(3, s1.getItemCount());
   assertEquals(2.2, s1.getMinY(), EPSILON);
   assertEquals(3.3, s1.getMaxY(), EPSILON);
 }
 /** Some checks for the delete(int, int) method. */
 @Test
 public void testDelete3() {
   TimeSeries s1 = new TimeSeries("S1");
   s1.add(new Year(2011), 1.1);
   s1.add(new Year(2012), 2.2);
   s1.add(new Year(2013), 3.3);
   s1.add(new Year(2014), 4.4);
   s1.add(new Year(2015), 5.5);
   s1.add(new Year(2016), 6.6);
   s1.delete(2, 5);
   assertEquals(2, s1.getItemCount());
   assertEquals(new Year(2011), s1.getTimePeriod(0));
   assertEquals(new Year(2012), s1.getTimePeriod(1));
   assertEquals(1.1, s1.getMinY(), EPSILON);
   assertEquals(2.2, s1.getMaxY(), EPSILON);
 }
  /**
   * Test the setMaximumItemCount() method to ensure that it removes items from the series if
   * necessary.
   */
  @Test
  public void testSetMaximumItemCount() {
    TimeSeries s1 = new TimeSeries("S1", Year.class);
    s1.add(new Year(2000), 13.75);
    s1.add(new Year(2001), 11.90);
    s1.add(new Year(2002), null);
    s1.add(new Year(2005), 19.32);
    s1.add(new Year(2007), 16.89);
    assertTrue(s1.getItemCount() == 5);

    s1.setMaximumItemCount(3);
    assertTrue(s1.getItemCount() == 3);
    TimeSeriesDataItem item = s1.getDataItem(0);
    assertTrue(item.getPeriod().equals(new Year(2002)));
    assertEquals(16.89, s1.getMinY(), EPSILON);
    assertEquals(19.32, s1.getMaxY(), EPSILON);
  }
  /** Some checks for the getMaxY() method. */
  @Test
  public void testGetMaxY() {
    TimeSeries s1 = new TimeSeries("S1");
    assertTrue(Double.isNaN(s1.getMaxY()));

    s1.add(new Year(2008), 1.1);
    assertEquals(1.1, s1.getMaxY(), EPSILON);

    s1.add(new Year(2009), 2.2);
    assertEquals(2.2, s1.getMaxY(), EPSILON);

    s1.add(new Year(2000), 99.9);
    assertEquals(99.9, s1.getMaxY(), EPSILON);

    s1.add(new Year(2002), -1.1);
    assertEquals(99.9, s1.getMaxY(), EPSILON);

    s1.add(new Year(2003), null);
    assertEquals(99.9, s1.getMaxY(), EPSILON);

    s1.addOrUpdate(new Year(2000), null);
    assertEquals(2.2, s1.getMaxY(), EPSILON);
  }