/* * Copyright (c) 2001 - 2010 TOPP - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.wfs.response; import java.io.StringWriter; import java.util.Calendar; import java.util.TimeZone; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.Point; import com.vividsolutions.jts.geom.PrecisionModel; import com.vividsolutions.jts.io.WKTReader; import junit.framework.TestCase; public class GeoJSONBuilderTest extends TestCase { StringWriter writer; GeoJSONBuilder builder; @Override protected void setUp() throws Exception { writer = new StringWriter(); builder = new GeoJSONBuilder(writer); } public void testWriteNormal() throws Exception { Geometry g = new WKTReader().read("MULTILINESTRING((0 0, 1 1))"); builder.writeGeom(g); assertEquals("{\"type\":\"MultiLineString\",\"coordinates\":[[[0,0],[1,1]]]}", writer.toString()); } public void testWriteGeometrySubclass() throws Exception { builder.writeGeom(new MyPoint(1,2)); assertEquals("{\"type\":\"Point\",\"coordinates\":[1,2]}", writer.toString()); } class MyPoint extends Point { public MyPoint(double x, double y) { super(new Coordinate(x, y), new PrecisionModel(), -1); } } public void testWriteDate() throws Exception{ Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); cal.clear(); cal.set(Calendar.YEAR, 2011); cal.set(Calendar.MONTH, 9); cal.set(Calendar.DAY_OF_MONTH, 25); java.sql.Date date = new java.sql.Date(cal.getTimeInMillis()); builder.object().key("date").value(date).endObject(); assertEquals("{\"date\":\"2011-10-25Z\"}", writer.toString()); } public void testWriteTime() throws Exception{ Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); cal.clear(); cal.set(Calendar.HOUR, 15); cal.set(Calendar.MINUTE, 48); cal.set(Calendar.SECOND, 5); java.sql.Time date = new java.sql.Time(cal.getTimeInMillis()); builder.object().key("time").value(date).endObject(); assertEquals("{\"time\":\"15:48:05Z\"}", writer.toString()); } public void testWriteDateTime() throws Exception{ Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); cal.clear(); cal.set(Calendar.YEAR, 2011); cal.set(Calendar.MONTH, 9); cal.set(Calendar.DAY_OF_MONTH, 25); cal.set(Calendar.HOUR, 15); cal.set(Calendar.MINUTE, 48); cal.set(Calendar.SECOND, 5); java.sql.Timestamp date = new java.sql.Timestamp(cal.getTimeInMillis()); builder.object().key("timestamp").value(date).endObject(); assertEquals("{\"timestamp\":\"2011-10-25T15:48:05Z\"}", writer.toString()); } public void testWriteDateTimeMillis() throws Exception{ Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); cal.clear(); cal.set(Calendar.YEAR, 2011); cal.set(Calendar.MONTH, 9); cal.set(Calendar.DAY_OF_MONTH, 25); cal.set(Calendar.HOUR, 15); cal.set(Calendar.MINUTE, 48); cal.set(Calendar.SECOND, 5); cal.set(Calendar.MILLISECOND, 223); java.sql.Timestamp date = new java.sql.Timestamp(cal.getTimeInMillis()); builder.object().key("timestamp").value(date).endObject(); assertEquals("{\"timestamp\":\"2011-10-25T15:48:05.223Z\"}", writer.toString()); } public void testWriteJavaDate() throws Exception{ Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); cal.clear(); cal.set(Calendar.YEAR, 2011); cal.set(Calendar.MONTH, 9); cal.set(Calendar.DAY_OF_MONTH, 25); cal.set(Calendar.HOUR, 15); cal.set(Calendar.MINUTE, 48); cal.set(Calendar.SECOND, 5); cal.set(Calendar.MILLISECOND, 223); java.util.Date date = new java.util.Date(cal.getTimeInMillis()); builder.object().key("date").value(date).endObject(); assertEquals("{\"date\":\"2011-10-25T15:48:05.223Z\"}", writer.toString()); } public void testWriteCalendar() throws Exception{ Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); cal.clear(); cal.set(Calendar.YEAR, 2011); cal.set(Calendar.MONTH, 9); cal.set(Calendar.DAY_OF_MONTH, 25); builder.object().key("cal").value(cal).endObject(); assertEquals("{\"cal\":\"2011-10-25T00:00:00Z\"}", writer.toString()); } public void testWriteCalendarTZ() throws Exception{ Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT-05:00")); cal.clear(); cal.set(Calendar.YEAR, 2011); cal.set(Calendar.MONTH, 9); cal.set(Calendar.DAY_OF_MONTH, 25); builder.object().key("cal").value(cal).endObject(); assertEquals("{\"cal\":\"2011-10-25T00:00:00-05:00\"}", writer.toString()); } public void testWriteCalendarFull() throws Exception{ Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); cal.clear(); cal.set(Calendar.YEAR, 2011); cal.set(Calendar.MONTH, 9); cal.set(Calendar.DAY_OF_MONTH, 25); cal.set(Calendar.HOUR, 15); cal.set(Calendar.MINUTE, 48); cal.set(Calendar.SECOND, 5); cal.set(Calendar.MILLISECOND, 223); builder.object().key("cal").value(cal).endObject(); assertEquals("{\"cal\":\"2011-10-25T15:48:05.223Z\"}", writer.toString()); } }