/* Copyright (c) Microsoft Open Technologies, Inc. All Rights Reserved See License.txt in the project root for license information. */ package microsoft.aspnet.signalr.client.tests.mocktransport; import static org.junit.Assert.*; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; import microsoft.aspnet.signalr.client.CalendarSerializer; import microsoft.aspnet.signalr.client.DateSerializer; import org.junit.Test; import com.google.gson.JsonPrimitive; public class CustomSerializationTests { @SuppressWarnings("deprecation") @Test public void testSerializeDate() throws Exception { int year = 1990; int month = 11; int day = 15; int hour = 10; int minute = 50; int seconds = 30; Date date = new Date(Date.UTC(year - 1900, month - 1, day, hour, minute, seconds)); DateSerializer dateSerializer = new DateSerializer(); String strDate = dateSerializer.serialize(date, Date.class, null).toString(); // yyyy-MM-dd'T'HH:mm:ss'.'SSS'Z String expectedDate = String.format("\"%s-%d-%sT%s:%s:%s.000Z\"", year, month, day, hour, minute, seconds); assertEquals(expectedDate, strDate); } @SuppressWarnings("deprecation") @Test public void testDeserializeDate() throws Exception { String strDate = "1990-11-15T10:50:30.123Z"; DateSerializer dateSerializer = new DateSerializer(); Date date = dateSerializer.deserialize(new JsonPrimitive(strDate), Date.class, null); int year = 1990; int month = 11; int day = 15; int hour = 10; int minute = 50; int seconds = 30; assertEquals(year - 1900, date.getYear()); assertEquals(month - 1, date.getMonth()); assertEquals(day, date.getDate()); assertEquals(hour - date.getTimezoneOffset() / 60, date.getHours()); assertEquals(minute, date.getMinutes()); assertEquals(seconds, date.getSeconds()); } @Test public void testSerializeCalendar() throws Exception { int year = 1990; int month = 11; int day = 15; int hour = 10; int minute = 50; int seconds = 30; int milliseconds = 123; Calendar calendar = Calendar.getInstance(); calendar.setTimeZone(TimeZone.getTimeZone("UTC")); calendar.set(year, month - 1, day, hour, minute, seconds); calendar.set(Calendar.MILLISECOND, milliseconds); CalendarSerializer calendarSerializer = new CalendarSerializer(); String strDate = calendarSerializer.serialize(calendar, Calendar.class, null).toString(); // yyyy-MM-dd'T'HH:mm:ss'.'SSS'Z String expectedDate = String.format("\"%s-%d-%sT%s:%s:%s.%sZ\"", year, month, day, hour, minute, seconds, milliseconds); assertEquals(expectedDate, strDate); } @Test public void testDeserializeCalendar() throws Exception { String strDate = "1990-11-15T10:50:30.123Z"; CalendarSerializer calendarSerializer = new CalendarSerializer(); Calendar calendar = calendarSerializer.deserialize(new JsonPrimitive(strDate), Calendar.class, null); int year = 1990; int month = 11; int day = 15; int hour = 10; int minute = 50; int seconds = 30; int milliseconds = 123; calendar.setTimeZone(TimeZone.getTimeZone("UTC")); assertEquals(year, calendar.get(Calendar.YEAR)); assertEquals(month - 1, calendar.get(Calendar.MONTH)); assertEquals(day, calendar.get(Calendar.DAY_OF_MONTH)); assertEquals(hour, calendar.get(Calendar.HOUR_OF_DAY)); assertEquals(minute, calendar.get(Calendar.MINUTE)); assertEquals(seconds, calendar.get(Calendar.SECOND)); assertEquals(milliseconds, calendar.get(Calendar.MILLISECOND)); } @Test public void testTimeParse() throws Exception { assertNotNull(DateSerializer.deserialize("2014-03-29T00:00:00")); assertNotNull(DateSerializer.deserialize("2014-03-29T00:00:00Z")); assertNotNull(DateSerializer.deserialize("2014-03-29T00:00:00+00:00")); assertNotNull(DateSerializer.deserialize("2014-03-29T00:00:00.Z")); } }