You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2016/12/21 13:06:25 UTC

svn commit: r1775411 - in /sling/trunk/bundles/api/src: main/java/org/apache/sling/api/wrappers/impl/ test/java/org/apache/sling/api/wrappers/impl/

Author: sseifert
Date: Wed Dec 21 13:06:25 2016
New Revision: 1775411

URL: http://svn.apache.org/viewvc?rev=1775411&view=rev
Log:
SLING-6420 finalize converter implementation
move primitive tests related to currently not supported functionality to separate class and set it to ignore (with notice)

Added:
    sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterPrimitiveTest.java   (with props)
Modified:
    sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/impl/ObjectConverter.java
    sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/Convert.java
    sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterTest.java

Modified: sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/impl/ObjectConverter.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/impl/ObjectConverter.java?rev=1775411&r1=1775410&r2=1775411&view=diff
==============================================================================
--- sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/impl/ObjectConverter.java (original)
+++ sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/impl/ObjectConverter.java Wed Dec 21 13:06:25 2016
@@ -73,7 +73,16 @@ public final class ObjectConverter {
             return (T)result.toString();
         }
         if (type == Boolean.class) {
-            return (T)(Boolean)Boolean.parseBoolean(result);
+            // do not rely on Boolean.parseBoolean to avoid converting nonsense to "false" without noticing
+            if ("true".equalsIgnoreCase(result)) {
+                return (T)Boolean.TRUE;
+            }
+            else if ("false".equalsIgnoreCase(result)) {
+                return (T)Boolean.FALSE;
+            }
+            else {
+                return null;
+            }
         }
         try {
             if (type == Byte.class) {

Modified: sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/Convert.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/Convert.java?rev=1775411&r1=1775410&r2=1775411&view=diff
==============================================================================
--- sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/Convert.java (original)
+++ sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/Convert.java Wed Dec 21 13:06:25 2016
@@ -31,7 +31,11 @@ import org.apache.commons.lang3.ClassUti
 /**
  * Tests all permutations of object conversions between single values and array types, and null handling.
  */
-class Convert {
+final class Convert {
+    
+    private Convert() {
+        // static methods only
+    }
     
     @SuppressWarnings("unchecked")
     public static class ConversionAssert<T,U> {

Added: sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterPrimitiveTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterPrimitiveTest.java?rev=1775411&view=auto
==============================================================================
--- sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterPrimitiveTest.java (added)
+++ sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterPrimitiveTest.java Wed Dec 21 13:06:25 2016
@@ -0,0 +1,141 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.api.wrappers.impl;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * This test suite is DISABLED.
+ * Primitive types as "type argument" for ValueMap conversions are currently not supported
+ * (and are also not supported by jcr.resource ValueMap implementation). 
+ */
+@Ignore
+public class ObjectConverterPrimitiveTest {
+    
+    private static final boolean BOOLEAN_1 = true;
+    private static final boolean BOOLEAN_2 = false;
+    private static final byte BYTE_1 = (byte)0x01;
+    private static final byte BYTE_2 = (byte)0x02;
+    private static final short SHORT_1 = (short)12;
+    private static final short SHORT_2 = (short)34;
+    private static final int INT_1 = 55;
+    private static final int INT_2 = -123;
+    private static final long LONG_1 = 1234L;
+    private static final long LONG_2 = -4567L;
+    private static final float FLOAT_1 = 1.23f;
+    private static final float FLOAT_2 = -4.56f;
+    private static final double DOUBLE_1 = 12.34d;
+    private static final double DOUBLE_2 = -45.67d;
+    
+    @Test
+    public void testToBooleanPrimitive() {
+        Convert.fromPrimitive(BOOLEAN_1, BOOLEAN_2).toPrimitive(BOOLEAN_1, BOOLEAN_2).nullValue(false).test();
+        Convert.from(BOOLEAN_1, BOOLEAN_2).toPrimitive(BOOLEAN_1, BOOLEAN_2).nullValue(false).test();
+        Convert.from(Boolean.toString(BOOLEAN_1), Boolean.toString(BOOLEAN_2)).toPrimitive(BOOLEAN_1, BOOLEAN_2).nullValue(false).test();
+        
+        // test other types that should not be converted
+        Convert.from(INT_1, INT_2).toPrimitive(false,  false).nullValue(false).test();
+    }
+    
+    @Test
+    public void testToBytePrimitive() {
+        Convert.fromPrimitive(BYTE_1, BYTE_2).toPrimitive(BYTE_1, BYTE_2).nullValue(0).test();
+        Convert.from(BYTE_1, BYTE_2).toPrimitive(BYTE_1, BYTE_2).nullValue(0).test();
+        Convert.from(Byte.toString(BYTE_1), Byte.toString(BYTE_2)).toPrimitive(BYTE_1, BYTE_2).nullValue(0).test();
+
+        // test conversion from other number types
+        Convert.from(INT_1, INT_2).toPrimitive((byte)INT_1, (byte)INT_2).test();
+        Convert.fromPrimitive(INT_1, INT_2).toPrimitive((byte)INT_1, (byte)INT_2).test();
+
+        // test other types that should not be converted
+        Convert.from(INT_1, INT_2).toPrimitive((byte)0, (byte)0).nullValue(false).test();
+    }
+    
+    @Test
+    public void testToShortPrimitive() {
+        Convert.fromPrimitive(SHORT_1, SHORT_2).toPrimitive(SHORT_1, SHORT_2).nullValue(0).test();
+        Convert.from(SHORT_1, SHORT_2).toPrimitive(SHORT_1, SHORT_2).nullValue(0).test();
+        Convert.from(Short.toString(SHORT_1), Short.toString(SHORT_2)).toPrimitive(SHORT_1, SHORT_2).nullValue(0).test();
+
+        // test conversion from other number types
+        Convert.from(INT_1, INT_2).toPrimitive((short)INT_1, (short)INT_2).test();
+        Convert.fromPrimitive(INT_1, INT_2).toPrimitive((short)INT_1, (short)INT_2).test();
+
+        // test other types that should not be converted
+        Convert.from(INT_1, INT_2).toPrimitive((short)0, (short)0).nullValue(false).test();
+    }
+    
+    @Test
+    public void testToIntegerPrimitive() {
+        Convert.fromPrimitive(INT_1, INT_2).toPrimitive(INT_1, INT_2).nullValue(0).test();
+        Convert.from(INT_1, INT_2).toPrimitive(INT_1, INT_2).nullValue(0).test();
+        Convert.from(Integer.toString(INT_1), Integer.toString(INT_2)).toPrimitive(INT_1, INT_2).nullValue(0).test();
+
+        // test conversion from other number types
+        Convert.from(SHORT_1, SHORT_2).toPrimitive((int)SHORT_1, (int)SHORT_2).test();
+        Convert.fromPrimitive(SHORT_1, SHORT_2).toPrimitive((int)SHORT_1, (int)SHORT_2).test();
+
+        // test other types that should not be converted
+        Convert.from(INT_1, INT_2).toPrimitive((int)0, (int)0).nullValue(false).test();
+    }
+    
+    @Test
+    public void testToLongPrimitive() {
+        Convert.fromPrimitive(LONG_1, LONG_2).toPrimitive(LONG_1, LONG_2).nullValue(0).test();
+        Convert.from(LONG_1, LONG_2).toPrimitive(LONG_1, LONG_2).nullValue(0).test();
+        Convert.from(Long.toString(LONG_1), Long.toString(LONG_2)).toPrimitive(LONG_1, LONG_2).nullValue(0).test();
+
+        // test conversion from other number types
+        Convert.from(SHORT_1, SHORT_2).toPrimitive((long)SHORT_1, (long)SHORT_2).test();
+        Convert.fromPrimitive(SHORT_1, SHORT_2).toPrimitive((long)SHORT_1, (long)SHORT_2).test();
+
+        // test other types that should not be converted
+        Convert.from(LONG_1, LONG_2).toPrimitive((long)0, (long)0).nullValue(false).test();
+    }
+    
+    @Test
+    public void testToFloatPrimitive() {
+        Convert.fromPrimitive(FLOAT_1, FLOAT_2).toPrimitive(FLOAT_1, FLOAT_2).nullValue(0).test();
+        Convert.from(FLOAT_1, FLOAT_2).toPrimitive(FLOAT_1, FLOAT_2).nullValue(0).test();
+        Convert.from(Float.toString(FLOAT_1), Float.toString(FLOAT_2)).toPrimitive(FLOAT_1, FLOAT_2).nullValue(0).test();
+
+        // test conversion from other number types
+        Convert.from(SHORT_1, SHORT_2).toPrimitive((float)SHORT_1, (float)SHORT_2).test();
+        Convert.fromPrimitive(SHORT_1, SHORT_2).toPrimitive((float)SHORT_1, (float)SHORT_2).test();
+
+        // test other types that should not be converted
+        Convert.from(FLOAT_1, FLOAT_2).toPrimitive((float)0, (float)0).nullValue(false).test();
+    }
+ 
+    @Test
+    public void testToDoublePrimitive() {
+        Convert.fromPrimitive(DOUBLE_1, DOUBLE_2).toPrimitive(DOUBLE_1, DOUBLE_2).nullValue(0).test();
+        Convert.from(DOUBLE_1, DOUBLE_2).toPrimitive(DOUBLE_1, DOUBLE_2).nullValue(0).test();
+        Convert.from(Double.toString(DOUBLE_1), Double.toString(DOUBLE_2)).toPrimitive(DOUBLE_1, DOUBLE_2).nullValue(0).test();
+
+        // test conversion from other number types
+        Convert.from(SHORT_1, SHORT_2).toPrimitive((double)SHORT_1, (double)SHORT_2).test();
+        Convert.fromPrimitive(SHORT_1, SHORT_2).toPrimitive((double)SHORT_1, (double)SHORT_2).test();
+
+        // test other types that should not be converted
+        Convert.from(DOUBLE_1, DOUBLE_2).toPrimitive((double)0, (double)0).nullValue(false).test();
+    }
+    
+}

Propchange: sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterPrimitiveTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterPrimitiveTest.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Wed Dec 21 13:06:25 2016
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author

Propchange: sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterPrimitiveTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterTest.java?rev=1775411&r1=1775410&r2=1775411&view=diff
==============================================================================
--- sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterTest.java (original)
+++ sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterTest.java Wed Dec 21 13:06:25 2016
@@ -28,7 +28,6 @@ import java.util.Date;
 import java.util.Locale;
 import java.util.TimeZone;
 
-import org.junit.Ignore;
 import org.junit.Test;
 
 public class ObjectConverterTest {
@@ -55,34 +54,32 @@ public class ObjectConverterTest {
     private static final Calendar CALENDAR_2 = Calendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.US);
     {
         CALENDAR_1.set(2016, 10, 15, 8, 20, 30);
-        CALENDAR_1.setLenient(true);
         CALENDAR_2.set(2015, 6, 31, 19, 10, 20);
-        CALENDAR_2.setLenient(true);
     }
     private static final Date DATE_1 = toDate(CALENDAR_1);
     private static final Date DATE_2 = toDate(CALENDAR_2);
 
     @Test
-            public void testDateToString() {
-                Convert.from(STRING_1, STRING_2).to(STRING_1, STRING_2).test();
-                Convert.fromPrimitive(BOOLEAN_1, BOOLEAN_2).to(Boolean.toString(BOOLEAN_1), Boolean.toString(BOOLEAN_2)).test();
-                Convert.from(BOOLEAN_1, BOOLEAN_2).to(Boolean.toString(BOOLEAN_1), Boolean.toString(BOOLEAN_2)).test();
-                Convert.fromPrimitive(BYTE_1, BYTE_2).to(Byte.toString(BYTE_1), Byte.toString(BYTE_2)).test();
-                Convert.from(BYTE_1, BYTE_2).to(Byte.toString(BYTE_1), Byte.toString(BYTE_2)).test();
-                Convert.fromPrimitive(SHORT_1, SHORT_2).to(Short.toString(SHORT_1), Short.toString(SHORT_2)).test();
-                Convert.from(SHORT_1, SHORT_2).to(Short.toString(SHORT_1), Short.toString(SHORT_2)).test();
-                Convert.fromPrimitive(INT_1, INT_2).to(Integer.toString(INT_1), Integer.toString(INT_2)).test();
-                Convert.from(INT_1, INT_2).to(Integer.toString(INT_1), Integer.toString(INT_2)).test();
-                Convert.fromPrimitive(LONG_1, LONG_2).to(Long.toString(LONG_1), Long.toString(LONG_2)).test();
-                Convert.from(LONG_1, LONG_2).to(Long.toString(LONG_1), Long.toString(LONG_2)).test();
-                Convert.fromPrimitive(FLOAT_1, FLOAT_2).to(Float.toString(FLOAT_1), Float.toString(FLOAT_2)).test();
-                Convert.from(FLOAT_1, FLOAT_2).to(Float.toString(FLOAT_1), Float.toString(FLOAT_2)).test();
-                Convert.fromPrimitive(DOUBLE_1, DOUBLE_2).to(Double.toString(DOUBLE_1), Double.toString(DOUBLE_2)).test();
-                Convert.from(DOUBLE_1, DOUBLE_2).to(Double.toString(DOUBLE_1), Double.toString(DOUBLE_2)).test();
-                Convert.from(BIGDECIMAL_1, BIGDECIMAL_2).to(BIGDECIMAL_1.toString(), BIGDECIMAL_2.toString()).test();
-                Convert.from(CALENDAR_1, CALENDAR_2).to(calendarToString(CALENDAR_1), calendarToString(CALENDAR_2)).test();
-                Convert.from(DATE_1, DATE_2).to(calendarToString(toCalendar(DATE_1)), calendarToString(toCalendar(DATE_2))).test();
-            }
+    public void testDateToString() {
+        Convert.from(STRING_1, STRING_2).to(STRING_1, STRING_2).test();
+        Convert.fromPrimitive(BOOLEAN_1, BOOLEAN_2).to(Boolean.toString(BOOLEAN_1), Boolean.toString(BOOLEAN_2)).test();
+        Convert.from(BOOLEAN_1, BOOLEAN_2).to(Boolean.toString(BOOLEAN_1), Boolean.toString(BOOLEAN_2)).test();
+        Convert.fromPrimitive(BYTE_1, BYTE_2).to(Byte.toString(BYTE_1), Byte.toString(BYTE_2)).test();
+        Convert.from(BYTE_1, BYTE_2).to(Byte.toString(BYTE_1), Byte.toString(BYTE_2)).test();
+        Convert.fromPrimitive(SHORT_1, SHORT_2).to(Short.toString(SHORT_1), Short.toString(SHORT_2)).test();
+        Convert.from(SHORT_1, SHORT_2).to(Short.toString(SHORT_1), Short.toString(SHORT_2)).test();
+        Convert.fromPrimitive(INT_1, INT_2).to(Integer.toString(INT_1), Integer.toString(INT_2)).test();
+        Convert.from(INT_1, INT_2).to(Integer.toString(INT_1), Integer.toString(INT_2)).test();
+        Convert.fromPrimitive(LONG_1, LONG_2).to(Long.toString(LONG_1), Long.toString(LONG_2)).test();
+        Convert.from(LONG_1, LONG_2).to(Long.toString(LONG_1), Long.toString(LONG_2)).test();
+        Convert.fromPrimitive(FLOAT_1, FLOAT_2).to(Float.toString(FLOAT_1), Float.toString(FLOAT_2)).test();
+        Convert.from(FLOAT_1, FLOAT_2).to(Float.toString(FLOAT_1), Float.toString(FLOAT_2)).test();
+        Convert.fromPrimitive(DOUBLE_1, DOUBLE_2).to(Double.toString(DOUBLE_1), Double.toString(DOUBLE_2)).test();
+        Convert.from(DOUBLE_1, DOUBLE_2).to(Double.toString(DOUBLE_1), Double.toString(DOUBLE_2)).test();
+        Convert.from(BIGDECIMAL_1, BIGDECIMAL_2).to(BIGDECIMAL_1.toString(), BIGDECIMAL_2.toString()).test();
+        Convert.from(CALENDAR_1, CALENDAR_2).to(calendarToString(CALENDAR_1), calendarToString(CALENDAR_2)).test();
+        Convert.from(DATE_1, DATE_2).to(calendarToString(toCalendar(DATE_1)), calendarToString(toCalendar(DATE_2))).test();
+    }
     
     @Test
     public void testToBoolean() {
@@ -91,23 +88,8 @@ public class ObjectConverterTest {
         Convert.from(Boolean.toString(BOOLEAN_1), Boolean.toString(BOOLEAN_2)).to(BOOLEAN_1, BOOLEAN_2).test();
         
         // test other types that should not be converted
-        // TODO: test is not successful yet
-        /*
-        TestUtils.<Integer,Boolean>conv(INT_1, INT_2).toNull(Boolean.class).test();
-        TestUtils.<Date,Boolean>conv(DATE_1, DATE_2).toNull(Boolean.class).test();
-        */
-    }
-    
-    @Test
-    @Ignore // TODO: support primitive
-    public void testToBooleanPrimitive() {
-        Convert.fromPrimitive(BOOLEAN_1, BOOLEAN_2).toPrimitive(BOOLEAN_1, BOOLEAN_2).nullValue(false).test();
-        Convert.from(BOOLEAN_1, BOOLEAN_2).toPrimitive(BOOLEAN_1, BOOLEAN_2).nullValue(false).test();
-        Convert.from(Boolean.toString(BOOLEAN_1), Boolean.toString(BOOLEAN_2)).toPrimitive(BOOLEAN_1, BOOLEAN_2).nullValue(false).test();
-        
-        // test other types that should not be converted
-        Convert.from(INT_1, INT_2).toPrimitive(false,  false).nullValue(false).test();
-        Convert.from(DATE_1, DATE_2).toPrimitive(false,  false).nullValue(false).test();
+        Convert.<Integer,Boolean>from(INT_1, INT_2).toNull(Boolean.class).test();
+        Convert.<Date,Boolean>from(DATE_1, DATE_2).toNull(Boolean.class).test();
     }
     
     @Test
@@ -121,25 +103,7 @@ public class ObjectConverterTest {
         Convert.fromPrimitive(INT_1, INT_2).to((byte)INT_1, (byte)INT_2).test();
 
         // test other types that should not be converted
-        // TODO: test is not successful yet
-        /*
-        TestUtils.<Date,Byte>conv(DATE_1, DATE_2).toNull(Byte.class).test();
-        */
-    }
-    
-    @Test
-    @Ignore // TODO: support primitive
-    public void testToBytePrimitive() {
-        Convert.fromPrimitive(BYTE_1, BYTE_2).toPrimitive(BYTE_1, BYTE_2).nullValue(0).test();
-        Convert.from(BYTE_1, BYTE_2).toPrimitive(BYTE_1, BYTE_2).nullValue(0).test();
-        Convert.from(Byte.toString(BYTE_1), Byte.toString(BYTE_2)).toPrimitive(BYTE_1, BYTE_2).nullValue(0).test();
-
-        // test conversion from other number types
-        Convert.from(INT_1, INT_2).toPrimitive((byte)INT_1, (byte)INT_2).test();
-        Convert.fromPrimitive(INT_1, INT_2).toPrimitive((byte)INT_1, (byte)INT_2).test();
-
-        // test other types that should not be converted
-        Convert.from(INT_1, INT_2).toPrimitive((byte)0, (byte)0).nullValue(false).test();
+        Convert.<Date,Byte>from(DATE_1, DATE_2).toNull(Byte.class).test();
     }
     
     @Test
@@ -153,25 +117,7 @@ public class ObjectConverterTest {
         Convert.fromPrimitive(INT_1, INT_2).to((short)INT_1, (short)INT_2).test();
 
         // test other types that should not be converted
-        // TODO: test is not successful yet
-        /*
-        TestUtils.<Date,Short>conv(DATE_1, DATE_2).toNull(Short.class).test();
-        */
-    }
-    
-    @Test
-    @Ignore // TODO: support primitive
-    public void testToShortPrimitive() {
-        Convert.fromPrimitive(SHORT_1, SHORT_2).toPrimitive(SHORT_1, SHORT_2).nullValue(0).test();
-        Convert.from(SHORT_1, SHORT_2).toPrimitive(SHORT_1, SHORT_2).nullValue(0).test();
-        Convert.from(Short.toString(SHORT_1), Short.toString(SHORT_2)).toPrimitive(SHORT_1, SHORT_2).nullValue(0).test();
-
-        // test conversion from other number types
-        Convert.from(INT_1, INT_2).toPrimitive((short)INT_1, (short)INT_2).test();
-        Convert.fromPrimitive(INT_1, INT_2).toPrimitive((short)INT_1, (short)INT_2).test();
-
-        // test other types that should not be converted
-        Convert.from(INT_1, INT_2).toPrimitive((short)0, (short)0).nullValue(false).test();
+        Convert.<Date,Short>from(DATE_1, DATE_2).toNull(Short.class).test();
     }
     
     @Test
@@ -185,25 +131,7 @@ public class ObjectConverterTest {
         Convert.fromPrimitive(SHORT_1, SHORT_2).to((int)SHORT_1, (int)SHORT_2).test();
 
         // test other types that should not be converted
-        // TODO: test is not successful yet
-        /*
-        TestUtils.<Date,Integer>conv(DATE_1, DATE_2).toNull(Integer.class).test();
-        */
-    }
-    
-    @Test
-    @Ignore // TODO: support primitive
-    public void testToIntegerPrimitive() {
-        Convert.fromPrimitive(INT_1, INT_2).toPrimitive(INT_1, INT_2).nullValue(0).test();
-        Convert.from(INT_1, INT_2).toPrimitive(INT_1, INT_2).nullValue(0).test();
-        Convert.from(Integer.toString(INT_1), Integer.toString(INT_2)).toPrimitive(INT_1, INT_2).nullValue(0).test();
-
-        // test conversion from other number types
-        Convert.from(SHORT_1, SHORT_2).toPrimitive((int)SHORT_1, (int)SHORT_2).test();
-        Convert.fromPrimitive(SHORT_1, SHORT_2).toPrimitive((int)SHORT_1, (int)SHORT_2).test();
-
-        // test other types that should not be converted
-        Convert.from(INT_1, INT_2).toPrimitive((int)0, (int)0).nullValue(false).test();
+        Convert.<Date,Integer>from(DATE_1, DATE_2).toNull(Integer.class).test();
     }
     
     @Test
@@ -217,25 +145,7 @@ public class ObjectConverterTest {
         Convert.fromPrimitive(SHORT_1, SHORT_2).to((long)SHORT_1, (long)SHORT_2).test();
 
         // test other types that should not be converted
-        // TODO: test is not successful yet
-        /*
-        TestUtils.<Date,Long>conv(DATE_1, DATE_2).toNull(Long.class).test();
-        */
-    }
-    
-    @Test
-    @Ignore // TODO: support primitive
-    public void testToLongPrimitive() {
-        Convert.fromPrimitive(LONG_1, LONG_2).toPrimitive(LONG_1, LONG_2).nullValue(0).test();
-        Convert.from(LONG_1, LONG_2).toPrimitive(LONG_1, LONG_2).nullValue(0).test();
-        Convert.from(Long.toString(LONG_1), Long.toString(LONG_2)).toPrimitive(LONG_1, LONG_2).nullValue(0).test();
-
-        // test conversion from other number types
-        Convert.from(SHORT_1, SHORT_2).toPrimitive((long)SHORT_1, (long)SHORT_2).test();
-        Convert.fromPrimitive(SHORT_1, SHORT_2).toPrimitive((long)SHORT_1, (long)SHORT_2).test();
-
-        // test other types that should not be converted
-        Convert.from(LONG_1, LONG_2).toPrimitive((long)0, (long)0).nullValue(false).test();
+        Convert.<Date,Long>from(DATE_1, DATE_2).toNull(Long.class).test();
     }
     
     @Test
@@ -249,28 +159,10 @@ public class ObjectConverterTest {
         Convert.fromPrimitive(SHORT_1, SHORT_2).to((float)SHORT_1, (float)SHORT_2).test();
 
         // test other types that should not be converted
-        // TODO: test is not successful yet
-        /*
-        TestUtils.<Date,Float>conv(DATE_1, DATE_2).toNull(Float.class).test();
-        */
+        Convert.<Date,Float>from(DATE_1, DATE_2).toNull(Float.class).test();
     }
     
     @Test
-    @Ignore // TODO: support primitive
-    public void testToFloatPrimitive() {
-        Convert.fromPrimitive(FLOAT_1, FLOAT_2).toPrimitive(FLOAT_1, FLOAT_2).nullValue(0).test();
-        Convert.from(FLOAT_1, FLOAT_2).toPrimitive(FLOAT_1, FLOAT_2).nullValue(0).test();
-        Convert.from(Float.toString(FLOAT_1), Float.toString(FLOAT_2)).toPrimitive(FLOAT_1, FLOAT_2).nullValue(0).test();
-
-        // test conversion from other number types
-        Convert.from(SHORT_1, SHORT_2).toPrimitive((float)SHORT_1, (float)SHORT_2).test();
-        Convert.fromPrimitive(SHORT_1, SHORT_2).toPrimitive((float)SHORT_1, (float)SHORT_2).test();
-
-        // test other types that should not be converted
-        Convert.from(FLOAT_1, FLOAT_2).toPrimitive((float)0, (float)0).nullValue(false).test();
-    }
- 
-    @Test
     public void testToDouble() {
         Convert.fromPrimitive(DOUBLE_1, DOUBLE_2).to(DOUBLE_1, DOUBLE_2).test();
         Convert.from(DOUBLE_1, DOUBLE_2).to(DOUBLE_1, DOUBLE_2).test();
@@ -281,25 +173,7 @@ public class ObjectConverterTest {
         Convert.fromPrimitive(SHORT_1, SHORT_2).to((double)SHORT_1, (double)SHORT_2).test();
 
         // test other types that should not be converted
-        // TODO: test is not successful yet
-        /*
-        TestUtils.<Date,Double>conv(DATE_1, DATE_2).toNull(Double.class).test();
-        */
-    }
-    
-    @Test
-    @Ignore // TODO: support primitive
-    public void testToDoublePrimitive() {
-        Convert.fromPrimitive(DOUBLE_1, DOUBLE_2).toPrimitive(DOUBLE_1, DOUBLE_2).nullValue(0).test();
-        Convert.from(DOUBLE_1, DOUBLE_2).toPrimitive(DOUBLE_1, DOUBLE_2).nullValue(0).test();
-        Convert.from(Double.toString(DOUBLE_1), Double.toString(DOUBLE_2)).toPrimitive(DOUBLE_1, DOUBLE_2).nullValue(0).test();
-
-        // test conversion from other number types
-        Convert.from(SHORT_1, SHORT_2).toPrimitive((double)SHORT_1, (double)SHORT_2).test();
-        Convert.fromPrimitive(SHORT_1, SHORT_2).toPrimitive((double)SHORT_1, (double)SHORT_2).test();
-
-        // test other types that should not be converted
-        Convert.from(DOUBLE_1, DOUBLE_2).toPrimitive((double)0, (double)0).nullValue(false).test();
+        Convert.<Date,Double>from(DATE_1, DATE_2).toNull(Double.class).test();
     }
     
     @Test
@@ -314,10 +188,7 @@ public class ObjectConverterTest {
         Convert.fromPrimitive(DOUBLE_1, DOUBLE_2).to(BigDecimal.valueOf(DOUBLE_1), BigDecimal.valueOf(DOUBLE_2)).test();
 
         // test other types that should not be converted
-        // TODO: test is not successful yet
-        /*
-        TestUtils.<Date,BigDecimal>conv(DATE_1, DATE_2).toNull(BigDecimal.class).test();
-        */
+        Convert.<Date,BigDecimal>from(DATE_1, DATE_2).toNull(BigDecimal.class).test();
     }
     
     @Test