You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by da...@apache.org on 2016/09/23 10:06:03 UTC

svn commit: r1762042 - in /felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl: ConverterMapTest.java ConverterServiceTest.java MyBean.java

Author: davidb
Date: Fri Sep 23 10:06:03 2016
New Revision: 1762042

URL: http://svn.apache.org/viewvc?rev=1762042&view=rev
Log:
Felix Converter: additional tests.

Modified:
    felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterMapTest.java
    felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterServiceTest.java
    felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/MyBean.java

Modified: felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterMapTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterMapTest.java?rev=1762042&r1=1762041&r2=1762042&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterMapTest.java (original)
+++ felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterMapTest.java Fri Sep 23 10:06:03 2016
@@ -18,7 +18,9 @@ package org.apache.felix.converter.impl;
 
 import java.math.BigInteger;
 import java.net.URL;
+import java.text.SimpleDateFormat;
 import java.util.Collections;
+import java.util.Date;
 import java.util.Dictionary;
 import java.util.HashMap;
 import java.util.Map;
@@ -27,6 +29,7 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.osgi.service.converter.Converter;
+import org.osgi.service.converter.ConverterBuilder;
 import org.osgi.service.converter.StandardConverter;
 import org.osgi.service.converter.TypeReference;
 
@@ -82,7 +85,7 @@ public class ConverterMapTest {
 
         @SuppressWarnings("rawtypes")
         Map m = converter.convert(mb).to(Map.class);
-        assertEquals(4, m.size());
+        assertEquals(5, m.size());
         assertEquals("You", m.get("me"));
         assertTrue((boolean) m.get("f"));
         assertFalse((boolean) m.get("enabled"));
@@ -90,6 +93,24 @@ public class ConverterMapTest {
     }
 
     @Test
+    public void testJavaBeanToMapCustom() {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmssZ");
+        Date d = new Date();
+        String expectedDate = sdf.format(d);
+
+        MyBean mb = new MyBean();
+        mb.setStartDate(d);
+        mb.setEnabled(true);
+
+        ConverterBuilder cb = new StandardConverter().newConverterBuilder();
+        cb.rule(Date.class, String.class, v -> sdf.format(v), v -> sdf.parse(v));
+        Converter ca = cb.build();
+        Map<String, String> m = ca.convert(mb).to(new TypeReference<Map<String, String>>(){});
+        assertEquals("true", m.get("enabled"));
+        assertEquals(expectedDate, m.get("startDate"));
+    }
+
+    @Test
     public void testMapToJavaBean() {
         Map<String, String> m = new HashMap<>();
 

Modified: felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterServiceTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterServiceTest.java?rev=1762042&r1=1762041&r2=1762042&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterServiceTest.java (original)
+++ felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterServiceTest.java Fri Sep 23 10:06:03 2016
@@ -19,6 +19,7 @@ package org.apache.felix.converter.impl;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.net.URL;
+import java.time.Instant;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
@@ -27,7 +28,10 @@ import java.time.OffsetTime;
 import java.time.ZonedDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Calendar;
 import java.util.Collections;
+import java.util.Date;
+import java.util.GregorianCalendar;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -126,12 +130,14 @@ public class ConverterServiceTest {
     }
 
     enum TestEnum { FOO, BAR, BLAH, FALSE, X};
+    enum TestEnum2 { BLAH };
     @Test
     public void testEnums() {
-        assertEquals(TestEnum.BLAH, converter.convert("BLAH").to(TestEnum.class));
-        assertEquals(TestEnum.X, converter.convert('X').to(TestEnum.class));
-        assertEquals(TestEnum.FALSE, converter.convert(false).to(TestEnum.class));
-        assertEquals(TestEnum.BAR, converter.convert(1).to(TestEnum.class));
+        assertSame(TestEnum.BLAH, converter.convert("BLAH").to(TestEnum.class));
+        assertSame(TestEnum.X, converter.convert('X').to(TestEnum.class));
+        assertSame(TestEnum.FALSE, converter.convert(false).to(TestEnum.class));
+        assertSame(TestEnum.BAR, converter.convert(1).to(TestEnum.class));
+        assertSame(TestEnum.BLAH, converter.convert(TestEnum2.BLAH).to(TestEnum.class));
         assertNull(converter.convert(null).to(TestEnum.class));
         assertNull(converter.convert(Collections.emptySet()).to(TestEnum.class));
     }
@@ -389,6 +395,29 @@ public class ConverterServiceTest {
     }
 
     @Test
+    public void testCalendarDate() {
+        Calendar cal = new GregorianCalendar(2017, 1, 13);
+        Date d = cal.getTime();
+
+        // TODO these rules need to go to the Standard Converter.
+        Converter c = converter.newConverterBuilder().
+            rule(Date.class, String.class, v -> v.toInstant().toString(), v -> Date.from(Instant.parse(v))).
+            rule(Calendar.class, String.class, v -> v.getTime().toInstant().toString(),
+                    v -> {
+                        Calendar cc = Calendar.getInstance();
+                        cc.setTime(Date.from(Instant.parse(v)));
+                        return cc;
+                        }).
+            build();
+
+        String s = c.convert(d).toString();
+        assertEquals(d, c.convert(s).to(Date.class));
+
+        String s2 = c.convert(cal).toString();
+        assertEquals(cal, c.convert(s2).to(Calendar.class));
+    }
+
+    @Test
     public void testDefaultValue() {
         long l = converter.convert(null).defaultValue("12").to(Long.class);
         assertEquals(12L, l);

Modified: felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/MyBean.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/MyBean.java?rev=1762042&r1=1762041&r2=1762042&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/MyBean.java (original)
+++ felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/MyBean.java Fri Sep 23 10:06:03 2016
@@ -16,11 +16,14 @@
  */
 package org.apache.felix.converter.impl;
 
+import java.util.Date;
+
 public class MyBean {
     String me;
     boolean enabled;
     Boolean f;
     int[] numbers;
+    Date startDate;
 
     public String get() {
         return "Not a bean accessor because no camel casing";
@@ -58,4 +61,10 @@ public class MyBean {
     public void setNumbers(int[] numbers) {
         this.numbers = numbers;
     }
+    public Date getStartDate() {
+        return startDate;
+    }
+    public void setStartDate(Date date) {
+        this.startDate = date;
+    }
 }