### Question:
DefaultIntervalCategoryDataset extends AbstractSeriesDataset implements IntervalCategoryDataset { public void setEndValue(int series, Comparable category, Number value) { if ((series < 0) || (series > getSeriesCount() - 1)) { throw new IllegalArgumentException( "DefaultIntervalCategoryDataset.setValue: " + "series outside valid range."); } int categoryIndex = getCategoryIndex(category); if (categoryIndex < 0) { throw new IllegalArgumentException( "DefaultIntervalCategoryDataset.setValue: " + "unrecognised category."); } this.endData[series][categoryIndex] = value; fireDatasetChanged(); } DefaultIntervalCategoryDataset(double[][] starts, double[][] ends);  DefaultIntervalCategoryDataset(Number[][] starts, Number[][] ends);  DefaultIntervalCategoryDataset(String[] seriesNames,
                                          Number[][] starts,
                                          Number[][] ends);  DefaultIntervalCategoryDataset(Comparable[] seriesKeys,
                                          Comparable[] categoryKeys,
                                          Number[][] starts,
                                          Number[][] ends); @Override int getSeriesCount(); int getSeriesIndex(Comparable seriesKey); @Override Comparable getSeriesKey(int series); void setSeriesKeys(Comparable[] seriesKeys); int getCategoryCount(); @Override List<Comparable> getColumnKeys(); void setCategoryKeys(Comparable[] categoryKeys); @Override Number getValue(Comparable series, Comparable category); @Override Number getValue(int series, int category); @Override Number getStartValue(Comparable series, Comparable category); @Override Number getStartValue(int series, int category); @Override Number getEndValue(Comparable series, Comparable category); @Override Number getEndValue(int series, int category); void setStartValue(int series, Comparable category, Number value); void setEndValue(int series, Comparable category, Number value); int getCategoryIndex(Comparable category); @Override Comparable getColumnKey(int column); @Override int getColumnIndex(Comparable columnKey); @Override int getRowIndex(Comparable rowKey); @Override List<Comparable> getRowKeys(); @Override Comparable getRowKey(int row); @Override int getColumnCount(); @Override int getRowCount(); @Override boolean equals(Object obj); @Override Object clone();  }### Answer:
@Test public void testSetEndValue() { double[] starts_S1 = new double[] {0.1, 0.2, 0.3}; double[] starts_S2 = new double[] {0.3, 0.4, 0.5}; double[] ends_S1 = new double[] {0.5, 0.6, 0.7}; double[] ends_S2 = new double[] {0.7, 0.8, 0.9}; double[][] starts = new double[][] {starts_S1, starts_S2}; double[][] ends = new double[][] {ends_S1, ends_S2}; DefaultIntervalCategoryDataset d1 = new DefaultIntervalCategoryDataset( new Comparable[] {"Series 1", "Series 2"}, new Comparable[] {"Category 1", "Category 2", "Category 3"}, DataUtilities.createNumberArray2D(starts), DataUtilities.createNumberArray2D(ends)); d1.setEndValue(0, "Category 2", 99.9); assertEquals(99.9, d1.getEndValue("Series 1", "Category 2")); try { d1.setEndValue(-1, "Category 2", 99.9); fail("IllegalArgumentException should have been thrown on negative key"); } catch (IllegalArgumentException e) { assertEquals("DefaultIntervalCategoryDataset.setValue: series outside valid range.", e.getMessage()); } try { d1.setEndValue(2, "Category 2", 99.9); fail("IllegalArgumentException should have been thrown on index out of range"); } catch (IllegalArgumentException e) { assertEquals("DefaultIntervalCategoryDataset.setValue: series outside valid range.", e.getMessage()); } }