public void testReadOptional() throws Exception {
HashMap kvp = new HashMap();
kvp.put("bgcolor", "000000");
kvp.put("transparent", "true");
kvp.put("tiled", "true");
kvp.put("tilesorigin", "1.2,3.4");
kvp.put("buffer", "1");
kvp.put("palette", "SAFE");
kvp.put("time", "2006-02-27T22:08:12Z");
kvp.put("elevation", "4");
GetMapRequest request = (GetMapRequest) reader.createRequest();
request = (GetMapRequest) reader.read(request, parseKvp(kvp), kvp);
assertEquals(Color.BLACK, request.getBgColor());
assertTrue(request.isTransparent());
assertTrue(request.isTiled());
assertEquals(new Point2D.Double(1.2, 3.4), request.getTilesOrigin());
assertEquals(1, request.getBuffer());
assertEquals(PaletteManager.safePalette, request.getPalette());
assertEquals(Arrays.asList(4.0), request.getElevation());
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
cal.clear();
cal.set(2006, 1, 27, 22, 8, 12);
List<Object> times = request.getTime();
assertEquals(1, request.getTime().size());
assertEquals(cal.getTime(), ((DateRange) times.get(0)).getMinValue());
}