You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2014/02/02 13:55:27 UTC

svn commit: r1563605 - in /cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne: access/ReturnTypesMappingTest.java unit/MySQLUnitDbAdapter.java unit/UnitDbAdapter.java

Author: aadamchik
Date: Sun Feb  2 12:55:26 2014
New Revision: 1563605

URL: http://svn.apache.org/r1563605
Log:
fixing REAL unit test on MySQL

Modified:
    cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingTest.java
    cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/MySQLUnitDbAdapter.java
    cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/UnitDbAdapter.java

Modified: cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingTest.java?rev=1563605&r1=1563604&r2=1563605&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingTest.java (original)
+++ cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingTest.java Sun Feb  2 12:55:26 2014
@@ -600,8 +600,16 @@ public class ReturnTypesMappingTest exte
         DataRow testRead = (DataRow) context.performQuery(q).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
-        assertEquals(Float.class, columnValue.getClass());
-        assertEquals(realValue, columnValue);
+
+        // MySQL can treat REAL as either DOUBLE or FLOAT depending on the
+        // engine settings
+        if (unitDbAdapter.realAsDouble()) {
+            assertEquals(Double.class, columnValue.getClass());
+            assertEquals(Double.valueOf(realValue), (Double) columnValue, 0.0001);
+        } else {
+            assertEquals(Float.class, columnValue.getClass());
+            assertEquals(realValue, columnValue);
+        }
     }
 
     public void testREAL2() throws Exception {

Modified: cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/MySQLUnitDbAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/MySQLUnitDbAdapter.java?rev=1563605&r1=1563604&r2=1563605&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/MySQLUnitDbAdapter.java (original)
+++ cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/MySQLUnitDbAdapter.java Sun Feb  2 12:55:26 2014
@@ -55,6 +55,13 @@ public class MySQLUnitDbAdapter extends 
     public boolean supportsCatalogs() {
         return true;
     }
+    
+    @Override
+    public boolean realAsDouble() {
+        // this actually depends on the "sql_mode" var in MYSQL. However the
+        // default is REAL == DOUBLE
+        return true;
+    }
 
     @Override
     public boolean supportsLobs() {

Modified: cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/UnitDbAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/UnitDbAdapter.java?rev=1563605&r1=1563604&r2=1563605&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/UnitDbAdapter.java (original)
+++ cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/UnitDbAdapter.java Sun Feb  2 12:55:26 2014
@@ -74,6 +74,16 @@ public class UnitDbAdapter {
     public String getIdentifiersEndQuote() {
         return "\"";
     }
+    
+    /**
+     * Returns whether the target DB treats REAL values as DOUBLEs. Default is
+     * false, i.e. REALs are treated as FLOATs.
+     * 
+     * @return
+     */
+    public boolean realAsDouble() {
+        return false;
+    }
 
     /**
      * Drops all table constraints.