@Test
  public void testTimeRange() throws Exception {
    setupRasterDimension(
        TIMERANGES, ResourceInfo.TIME, DimensionPresentation.LIST, null, null, null);
    setupRasterDimension(
        TIMERANGES, ResourceInfo.ELEVATION, DimensionPresentation.LIST, null, UNITS, UNIT_SYMBOL);
    setupRasterDimension(TIMERANGES, "wavelength", DimensionPresentation.LIST, null, null, null);
    setupRasterDimension(TIMERANGES, "date", DimensionPresentation.LIST, null, null, null);

    String layer = getLayerId(TIMERANGES);
    String baseUrl =
        "wms?LAYERS="
            + layer
            + "&STYLES=temperature&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetFeatureInfo&SRS=EPSG:4326"
            + "&BBOX=-0.89131513678082,40.246933882167,15.721292974683,44.873229811941&WIDTH=200&HEIGHT=80&query_layers="
            + layer;

    // last range
    String url = baseUrl + "&TIME=2008-11-05T00:00:00.000Z/2008-11-06T12:00:00.000Z";
    assertEquals(-30000, getFeatureAt(url, 36, 31, layer), EPS);
    assertEquals(14.782, getFeatureAt(url, 68, 72, layer), EPS);

    // in the middle hole, no data
    url = baseUrl + "&TIME=2008-11-04T12:00:00.000Z/2008-11-04T16:00:00.000Z";
    assertNull(getFeatureAt(url, 36, 31, layer));

    // first range
    url = baseUrl + "&TIME=2008-10-31T12:00:00.000Z/2008-10-31T16:00:00.000Z";
    assertEquals(-30000, getFeatureAt(url, 36, 31, layer), EPS);
    assertEquals(20.027, getFeatureAt(url, 68, 72, layer), EPS);
  }
  @Test
  public void testDefaultValues() throws Exception {
    setupRasterDimension(
        WATTEMP, ResourceInfo.ELEVATION, DimensionPresentation.LIST, null, UNITS, UNIT_SYMBOL);
    setupRasterDimension(WATTEMP, ResourceInfo.TIME, DimensionPresentation.LIST, null, null, null);

    // this one should be medium
    assertEquals(14.51, getFeatureAt(BASE_URL, 36, 31, "sf:watertemp"), EPS);
    // this one hot
    assertEquals(19.15, getFeatureAt(BASE_URL, 68, 72, "sf:watertemp"), EPS);
  }
  @Test
  public void testTime() throws Exception {
    setupRasterDimension(
        WATTEMP, ResourceInfo.ELEVATION, DimensionPresentation.LIST, null, UNITS, UNIT_SYMBOL);
    setupRasterDimension(WATTEMP, ResourceInfo.TIME, DimensionPresentation.LIST, null, null, null);

    String url = BASE_URL + "&time=2008-10-31T00:00:00.000Z";

    // should be similar to the default, but with different shades of color
    assertEquals(14.592, getFeatureAt(url, 36, 31, "sf:watertemp"), EPS);
    assertEquals(19.371, getFeatureAt(url, 68, 72, "sf:watertemp"), EPS);
  }
  @Test
  public void testElevation() throws Exception {
    setupRasterDimension(
        WATTEMP, ResourceInfo.ELEVATION, DimensionPresentation.LIST, null, UNITS, UNIT_SYMBOL);
    setupRasterDimension(WATTEMP, ResourceInfo.TIME, DimensionPresentation.LIST, null, null, null);

    // this one should be the no-data
    String url = BASE_URL + "&elevation=100";
    assertEquals(-30000, getFeatureAt(url, 36, 31, "sf:watertemp"), EPS);
    // and this one should be medium
    assertEquals(14.492, getFeatureAt(url, 68, 72, "sf:watertemp"), EPS);
  }