You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by gk...@apache.org on 2017/07/19 13:44:44 UTC
svn commit: r1802394 -
/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTyping_OBJECT_AND_NON_CONCRETE_Test.java
Author: gk
Date: Wed Jul 19 13:44:44 2017
New Revision: 1802394
URL: http://svn.apache.org/viewvc?rev=1802394&view=rev
Log:
- check robustness of test
- show more date/time/zone use cases/pitfalls in test
Modified:
turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTyping_OBJECT_AND_NON_CONCRETE_Test.java
Modified: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTyping_OBJECT_AND_NON_CONCRETE_Test.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTyping_OBJECT_AND_NON_CONCRETE_Test.java?rev=1802394&r1=1802393&r2=1802394&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTyping_OBJECT_AND_NON_CONCRETE_Test.java (original)
+++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTyping_OBJECT_AND_NON_CONCRETE_Test.java Wed Jul 19 13:44:44 2017
@@ -22,6 +22,7 @@ package org.apache.fulcrum.json.jackson;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
@@ -90,64 +91,98 @@ public class JacksonMapperEnabledDefault
"Serialize with Adapater failed ",
serJson.matches(".*\"java.util.Date\",\"\\d\\d/\\d\\d/\\d{4}\".*"));
}
- // no day time
@Test
- public void testDeSerializeDate() throws Exception {
+ public void testSerializeDeSerializeDate() throws Exception {
Map<String, Date> map = new HashMap<String, Date>();
Calendar sourceDate = Calendar.getInstance();
sourceDate.set(1999, 3, 10);
- sourceDate.set(Calendar.HOUR, 0);
- sourceDate.set(Calendar.MINUTE, 0);
- sourceDate.set(Calendar.SECOND, 0);
- sourceDate.set(Calendar.MILLISECOND, 0);
- sourceDate.set(Calendar.HOUR_OF_DAY, 0);
- logger.debug("sourceDate TZ:"+ sourceDate.getTimeZone().getID());
+
// logger.debug("sourceDate calendar:"+ sourceDate);
logger.debug("sourceDate date:"+ sourceDate.getTime());
logger.debug("sourceDate millisec:"+ sourceDate.getTime().getTime());
map.put("mydate",sourceDate.getTime());
- // default dateformat dd/mm/yy -> day time will be cut off !(hh, mm,)
+ map.put("mydate2",Calendar.getInstance().getTime());
+ // default dateformat dd/mm/yy -> day time will be cut off !(hh, mm)
+ // first serialize
String serJson0 = sc.ser(map, false);
String serJson = sc.ser(map, Map.class, false);
logger.debug("serJson:"+ serJson0);
assertEquals(serJson0, serJson);
-
+ //second deserialize
DateKeyMixin serObject =sc.deSer(serJson0, DateKeyMixin.class);
assertTrue(serObject.mydate instanceof Date);
- logger.debug("resultDate millisec: " + ((Date)serObject.mydate).getTime() +" source:"+ sourceDate.getTime().getTime() );
- assertTrue("resultDate not equal not sourceDate millisec: ",((Date)serObject.mydate).getTime() == sourceDate.getTime().getTime() );
+ logger.debug("resultDate millisec: " + ((Date)serObject.mydate).getTime() +" source:"+ sourceDate.getTime().getTime() );
+ // cleanup all values the mapper dateformat, which is MM/dd/yyyy, does not contain.
+ sourceDate.set(Calendar.HOUR, 0);
+ sourceDate.set(Calendar.MINUTE, 0);
+ sourceDate.set(Calendar.SECOND, 0);
+ sourceDate.set(Calendar.MILLISECOND, 0);
+ sourceDate.set(Calendar.HOUR_OF_DAY, 0);
+ assertEquals("millisec of result and source date should be equal, after zeroing not used formatter values:: ",
+ ((Date)serObject.mydate).getTime(),sourceDate.getTime().getTime() );
}
- // timezone
+ // all values represented in format of the object, which would be serialized are conserved, while the others are nulled
@Test
- public void testDeSerializeTZDate() throws Exception {
+ public void testSerializeDeSerializeTZDate() throws Exception {
Map<String, Date> map = new HashMap<String, Date>();
Calendar sourceDate = Calendar.getInstance(TimeZone.getTimeZone("America/Montreal"));// UTC -5
sourceDate.set(1999, 3, 10, 11, 10); // set in Montreal Time this date and time
- sourceDate.set(Calendar.SECOND, 0);
- sourceDate.set(Calendar.MILLISECOND, 0);
+ //this may be in "any" locale timezone, eg. 1999-04-10 17:10 PM MESZ
+ DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm a Z");
// shows date and time in locale time
- //logger.debug("sourceDate millisec:"+ sourceDate.getTime().getTime());
+ logger.debug("sourceDate string:"+ sourceDate.getTime());
+ logger.debug("sourceDate format:"+df.format(sourceDate.getTime()));
// any "timezone" information is lost from the Calendar when converting it into a java.util.Date by calling getTime()
map.put("mydate",sourceDate.getTime());
- sc.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm a z"));
+ sc.setDateFormat(df);
String serJson0 = sc.ser(map, false);
String serJson = sc.ser(map, Map.class, false);
- //this may be in "any" locale timezone, eg. 1999-04-10 17:10 PM MESZ
logger.debug("serJson:"+ serJson0);
assertEquals(serJson0, serJson);
- DateKeyMixin serObject =sc.deSer(serJson0, DateKeyMixin.class);
+ DateKeyMixin serObject =sc.deSer(serJson0
+ , DateKeyMixin.class);
+ logger.debug("resultDate (serialized) millisec: " +
+ ((Date)serObject.mydate).getTime() +" source:"+ sourceDate.getTime().getTime() );
+
+ logger.debug("may not be equal: millisec(resultDate(string)):" + ((Date)serObject.mydate).getTime() +
+ " millisec(sourceDate):"+ sourceDate.getTime().getTime() );
+ // cleanup all values the mapper dateformat does not contain.
+ sourceDate.set(Calendar.SECOND, 0);
+ sourceDate.set(Calendar.MILLISECOND, 0);
+ assertEquals("milliseconds of resultDate (serialized) should be equal, if properly set the: ",
+ ((Date)serObject.mydate).getTime(),sourceDate.getTime().getTime() );
+
+ }
+ // timezone handling example
+ @Test
+ public void testDeSerializeTZDate() throws Exception {
+ DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm a Z");
+ sc.setDateFormat(df);
+ DateKeyMixin serObject =sc.deSer( "{\"mydate\":[\"java.util.Date\",\"1999-04-10 10:10 PM -0500\"]}"
+ , DateKeyMixin.class);
assertTrue(serObject.mydate instanceof Date);
-
- logger.debug("resultDate millisec: " + ((Date)serObject.mydate).getTime() +" source:"+ sourceDate.getTime().getTime() );
- assertTrue("resultDate not equal not sourceDate millisec: ",((Date)serObject.mydate).getTime() == sourceDate.getTime().getTime() );
+
+ // compare object
+ Calendar compareDate = Calendar.getInstance(TimeZone.getTimeZone("America/Montreal"));// UTC -5
+ compareDate.set(1999, 3, 10, 11, 10);
+
+ String compareDateFormatted = df.format(compareDate.getTime());
+ logger.debug("compareDate format: " + compareDateFormatted );
+ logger.debug("may not be equal: millisec(resultDate(string)):" + ((Date)serObject.mydate).getTime() +
+ " millisec(sourceDate):"+ compareDate.getTime().getTime() );
+
+ assertEquals("format should be equal", compareDateFormatted,
+ df.format(((Date)serObject.mydate).getTime())
+ );
+ logger.debug("format in locale timezone (resultDate(string)):" + df.format(((Date)serObject.mydate).getTime()));
}
@Test
public void testSerializeWithCustomFilter() throws Exception {