Author: kmarsden
Date: Fri May  6 13:09:18 2005
New Revision: 168645

URL: http://svn.apache.org/viewcvs?rev=168645&view=rev
Log:
Additional tests for Derby-250


Modified:
    
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk15/prepStmt.out
    
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/jdk15/prepStmt.out
    
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/prepStmt.out
    
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/prepStmt.java

Modified: 
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk15/prepStmt.out
URL: 
http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk15/prepStmt.out?rev=168645&r1=168644&r2=168645&view=diff
==============================================================================
--- 
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk15/prepStmt.out
 (original)
+++ 
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk15/prepStmt.out
 Fri May  6 13:09:18 2005
@@ -54,6 +54,19 @@
 Expected Table does not exist 
 insertTab ( wrongtab,1000)
 SQLState: 42X05 message: Table 'WRONGTAB' does not exist.
+CREATE TABLE doubletab (i int, doubleVal DOUBLE)
+testBigDecimalToDoubleConversion().
+ Check that values are preserved when BigDecimal 
+ values which have more than 31 digits are converted 
+ to Double with setObject
+PASS: Actual value 1.0E-130 matches expected value: 1.0E-130
+PASS: Actual value 1.0E125 matches expected value: 1.0E125
+PASS: Actual value -1.0E124 matches expected value: -1.0E124
+PASS: Actual value 1.2345678901234567E31 matches expected value: 
1.2345678901234567E31
+PASS: Actual value 1.2345678901234567 matches expected value: 
1.2345678901234567
+testBigDecimalSetObjectWithScale(). 
+Pass scale parameter of setObject
+PASS: Actual value 2.330000 matches expected value: 2.33
 Minimum BigDecimal Value: 1E-15
 Prepared Statement String: update Numeric_Tab set NULL_VAL=?
 Select NULL_VAL from Numeric_Tab
@@ -62,26 +75,4 @@
 setObject Method sets the designated parameter with the Object
 Negative test setString with Invalid Timestamp:20
 SQLState: 22007 message: The syntax of the string representation of a datetime 
value is incorrect.
-CREATE TABLE doubletab (d1 DOUBLE , d2 DOUBLE)
-INSERT INTO doubletab VALUES(1.0E-130,1.0E125)
-testBigDecimalToDoubleConversion().
- Check that values are preserved when BigDecimal 
- values which have more than 31 digits are converted 
- to Double with setObject
-SELECT d1, d2 FROM doubletab
-rs.getString(1)=1.0E-130
-rs.getString(2)=1.0E+125
-conn.prepareStatement(UPDATE doubletab SET d1 = ?, d2 = ?)
-ps.setObject(1,1.0E-130,java.sql.Types.DOUBLE)
-ps.setObject(2,1.0E+125,java.sql.Types.DOUBLE)
-SELECT d1, d2 FROM doubletab
-values should match
-new d1:1.0E-130 old d1:1.0E-130
-new d2:1.0E125 old d2:1.0E125
-testBigDecimalSetObjectWithScale(). 
-Pass scale parameter of setObject
-CREATE TABLE numtab (num NUMERIC(10,6))
-conn.prepareStatement(INSERT INTO  numtab VALUES(?))
-ps.setObject(1,2.33333333,java.sql.Types.DECIMAL,2)
-num is:2.330000
 prepStmt Test Ends

Modified: 
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/jdk15/prepStmt.out
URL: 
http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/jdk15/prepStmt.out?rev=168645&r1=168644&r2=168645&view=diff
==============================================================================
--- 
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/jdk15/prepStmt.out
 (original)
+++ 
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/jdk15/prepStmt.out
 Fri May  6 13:09:18 2005
@@ -54,6 +54,19 @@
 Expected Table does not exist 
 insertTab ( wrongtab,1000)
 SQLState: 42X05 message: Table 'WRONGTAB' does not exist.
+CREATE TABLE doubletab (i int, doubleVal DOUBLE)
+testBigDecimalToDoubleConversion().
+ Check that values are preserved when BigDecimal 
+ values which have more than 31 digits are converted 
+ to Double with setObject
+PASS: Actual value 1.0E-130 matches expected value: 1.0E-130
+PASS: Actual value 1.0E125 matches expected value: 1.0E125
+PASS: Actual value -1.0E124 matches expected value: -1.0E124
+PASS: Actual value 1.2345678901234567E31 matches expected value: 
1.2345678901234567E31
+PASS: Actual value 1.2345678901234567 matches expected value: 
1.2345678901234567
+testBigDecimalSetObjectWithScale(). 
+Pass scale parameter of setObject
+PASS: Actual value 2.330000 matches expected value: 2.33
 Minimum BigDecimal Value: 1E-15
 Prepared Statement String: update Numeric_Tab set NULL_VAL=?
 Select NULL_VAL from Numeric_Tab
@@ -62,26 +75,4 @@
 setObject Method sets the designated parameter with the Object
 Negative test setString with Invalid Timestamp:20
 SQLState: 22007 message: The syntax of the string representation of a datetime 
value is incorrect.
-CREATE TABLE doubletab (d1 DOUBLE , d2 DOUBLE)
-INSERT INTO doubletab VALUES(1.0E-130,1.0E125)
-testBigDecimalToDoubleConversion().
- Check that values are preserved when BigDecimal 
- values which have more than 31 digits are converted 
- to Double with setObject
-SELECT d1, d2 FROM doubletab
-rs.getString(1)=1.0E-130
-rs.getString(2)=1.0E+125
-conn.prepareStatement(UPDATE doubletab SET d1 = ?, d2 = ?)
-ps.setObject(1,1.0E-130,java.sql.Types.DOUBLE)
-ps.setObject(2,1.0E+125,java.sql.Types.DOUBLE)
-SELECT d1, d2 FROM doubletab
-values should match
-new d1:1.0E-130 old d1:1.0E-130
-new d2:1.0E125 old d2:1.0E125
-testBigDecimalSetObjectWithScale(). 
-Pass scale parameter of setObject
-CREATE TABLE numtab (num NUMERIC(10,6))
-conn.prepareStatement(INSERT INTO  numtab VALUES(?))
-ps.setObject(1,2.33333333,java.sql.Types.DECIMAL,2)
-num is:2.330000
 prepStmt Test Ends

Modified: 
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/prepStmt.out
URL: 
http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/prepStmt.out?rev=168645&r1=168644&r2=168645&view=diff
==============================================================================
--- 
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/prepStmt.out
 (original)
+++ 
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/prepStmt.out
 Fri May  6 13:09:18 2005
@@ -54,6 +54,19 @@
 Expected Table does not exist 
 insertTab ( wrongtab,1000)
 SQLState: 42X05 message: Table 'WRONGTAB' does not exist.
+CREATE TABLE doubletab (i int, doubleVal DOUBLE)
+testBigDecimalToDoubleConversion().
+ Check that values are preserved when BigDecimal 
+ values which have more than 31 digits are converted 
+ to Double with setObject
+PASS: Actual value 1.0E-130 matches expected value: 1.0E-130
+PASS: Actual value 1.0E125 matches expected value: 1.0E125
+PASS: Actual value -1.0E124 matches expected value: -1.0E124
+PASS: Actual value 1.2345678901234567E31 matches expected value: 
1.2345678901234567E31
+PASS: Actual value 1.2345678901234567 matches expected value: 
1.2345678901234567
+testBigDecimalSetObjectWithScale(). 
+Pass scale parameter of setObject
+PASS: Actual value 2.330000 matches expected value: 2.33
 Minimum BigDecimal Value: 0.000000000000001
 Prepared Statement String: update Numeric_Tab set NULL_VAL=?
 Select NULL_VAL from Numeric_Tab
@@ -62,26 +75,4 @@
 setObject Method sets the designated parameter with the Object
 Negative test setString with Invalid Timestamp:20
 SQLState: 22007 message: The syntax of the string representation of a datetime 
value is incorrect.
-CREATE TABLE doubletab (d1 DOUBLE , d2 DOUBLE)
-INSERT INTO doubletab VALUES(1.0E-130,1.0E125)
-testBigDecimalToDoubleConversion().
- Check that values are preserved when BigDecimal 
- values which have more than 31 digits are converted 
- to Double with setObject
-SELECT d1, d2 FROM doubletab
-rs.getString(1)=0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010
-rs.getString(2)=100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-conn.prepareStatement(UPDATE doubletab SET d1 = ?, d2 = ?)
-ps.setObject(1,0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010,java.sql.Types.DOUBLE)
-ps.setObject(2,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,java.sql.Types.DOUBLE)
-SELECT d1, d2 FROM doubletab
-values should match
-new d1:1.0E-130 old d1:1.0E-130
-new d2:1.0E125 old d2:1.0E125
-testBigDecimalSetObjectWithScale(). 
-Pass scale parameter of setObject
-CREATE TABLE numtab (num NUMERIC(10,6))
-conn.prepareStatement(INSERT INTO  numtab VALUES(?))
-ps.setObject(1,2.33333333,java.sql.Types.DECIMAL,2)
-num is:2.330000
 prepStmt Test Ends

Modified: 
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/prepStmt.java
URL: 
http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/prepStmt.java?rev=168645&r1=168644&r2=168645&view=diff
==============================================================================
--- 
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/prepStmt.java
 (original)
+++ 
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/prepStmt.java
 Fri May  6 13:09:18 2005
@@ -34,6 +34,7 @@
 import java.io.InputStreamReader;
 import org.apache.derbyTesting.functionTests.util.TestUtil;
 import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
 
 /**
        This test tests the JDBC PreparedStatement.
@@ -293,11 +294,12 @@
                        rs.close();
                        ps.close();
 
+                       testBigDecimalSetObject(conn);
+                       testBigDecimalSetObjectWithScale(conn);
+
                        test4975(conn);
                        test5130(conn);
                        test5172(conn);
-                       testBigDecimalSetObject(conn);
-                       testBigDecimalSetObjectWithScale(conn);
                        conn.close();
                        System.out.println("prepStmt Test Ends");
         }
@@ -531,13 +533,13 @@
        }
        private static void testBigDecimalSetObject(Connection conn) throws 
SQLException
        {
-               setupTestBigDecimalTabs(conn);
+               setupDoubleTab(conn);
                testBigDecimalToDoubleConversion(conn);
        }
 
 
 
-       private static void setupTestBigDecimalTabs(Connection conn) throws 
SQLException
+       private static void setupDoubleTab(Connection conn) throws SQLException
        {
                String sql;
                Statement stmt = conn.createStatement();
@@ -550,16 +552,10 @@
 
                }
 
-               sql = "CREATE TABLE doubletab (d1 DOUBLE , d2 DOUBLE)";
+               sql = "CREATE TABLE doubletab (i int, doubleVal DOUBLE)";
 
                System.out.println(sql);
                stmt.executeUpdate(sql);
-
-
-               // Insert little and big values
-               sql = "INSERT INTO doubletab VALUES(1.0E-130,1.0E125)";
-               System.out.println(sql);
-               stmt.executeUpdate(sql);
                conn.commit();
                
        }
@@ -568,43 +564,44 @@
        {
                System.out.println("\n\ntestBigDecimalToDoubleConversion().");
                System.out.println(" Check that values are preserved when 
BigDecimal \n values which have more than 31 digits are converted \n to Double 
with setObject");              
-               Statement stmt = conn.createStatement();
-               String sql ="SELECT d1, d2 FROM doubletab";             
-               System.out.println(sql);
-               ResultSet rs = stmt.executeQuery(sql);
-               rs.next();
-               String d1String = rs.getString(1);
-               String d2String = rs.getString(2);
-               // make BigDecimals from the Strings
-               BigDecimal bd1FromString = new BigDecimal(d1String);
-               BigDecimal bd2FromString = new BigDecimal(d2String);
-               System.out.println("rs.getString(1)=" + bd1FromString);
-               System.out.println("rs.getString(2)=" + bd2FromString);
-               // prepare a statement which updates the values in the table
-               sql = "UPDATE doubletab SET d1 = ?, d2 = ?";
-               System.out.println("conn.prepareStatement(" + sql + ")");
-               PreparedStatement ps =  conn.prepareStatement(sql);
-               ps = conn.prepareStatement(sql);
-               // setObject using the BigDecimal values
-               System.out.println("ps.setObject(1," + bd1FromString + 
",java.sql.Types.DOUBLE)");
-               System.out.println("ps.setObject(2," + bd2FromString + 
",java.sql.Types.DOUBLE)");
-               ps.setObject(1,bd1FromString,java.sql.Types.DOUBLE);
-               ps.setObject(2,bd2FromString,java.sql.Types.DOUBLE);
-               ps.executeUpdate();
-               // check that the values did not change
-               sql = "SELECT d1, d2 FROM doubletab";
-               System.out.println(sql);
-               rs = stmt.executeQuery(sql);
-               rs.next();
-               System.out.println("values should match");
-               System.out.println("new d1:" + rs.getObject(1).toString() +
-                                                  " old d1:"  +  d1String);
-               System.out.println("new d2:" + rs.getObject(2).toString() +
-                                                  " old d2:"  +  d2String);
-               
+               ResultSet rs = null;
+               // Insert various double values
+               double[] doubleVals = {1.0E-130,1.0E125, 0, -1.0E124};
+               //BigDecimal[] bigDecimalVals = new 
BigDecimal[doubleVals.length];
+               BigDecimal[] bigDecimalVals = { new BigDecimal(1.0E-130), 
+                                                                               
new BigDecimal(1.0E125),
+                                                                               
new BigDecimal(-1.0E124) ,
+                                                                               
new
+                                                                               
        BigDecimal("12345678901234567890123456789012"),
+                                                                               
new BigDecimal("1.2345678901234567890123456789012")
+               };
+
+               String isql = "INSERT INTO doubletab VALUES (?, ?)";
+               //System.out.println("conn.prepareStatement(" + isql +")");
+               PreparedStatement insPs = conn.prepareStatement(isql);    
+               String ssql = "SELECT doubleVal FROM doubletab";
+               PreparedStatement selPs = conn.prepareStatement(ssql);
+               String dsql = "DELETE FROM doubletab";
+               PreparedStatement delPs = conn.prepareStatement(dsql);
+               for (int i = 0; i < bigDecimalVals.length; i ++)
+               {
+                       BigDecimal bd = bigDecimalVals[i];
+                       // Insert value
+                       //System.out.println("ps.setObject(1," + bd + 
",java.sql.Types.DOUBLE)");                                               
+                       insPs.setInt(1,i);
+                       insPs.setObject(2,bd,java.sql.Types.DOUBLE);
+                       insPs.executeUpdate();
+                       // Check Value
+                       rs = selPs.executeQuery();
+                       rs.next();
+                       checkDoubleMatch(bd.doubleValue() , rs.getDouble(1));
+                       // Clear out the table;
+                       delPs.executeUpdate();
+               }
+               insPs.close();
+               selPs.close();
+               delPs.close();
                rs.close();
-               ps.close();
-               stmt.close();
                conn.commit();
        }
 
@@ -613,7 +610,7 @@
                Statement stmt = conn.createStatement();
                String sql = null;
 
-               System.out.println("\n\ntestBigDecimalSetObjectWithScale(). 
\nPass scale parameter of setObject");              
+       System.out.println("\n\ntestBigDecimalSetObjectWithScale(). \nPass 
scale parameter of setObject");              
 
                try {
                        stmt.executeUpdate("DROP TABLE numtab");
@@ -623,7 +620,6 @@
                        //System.out.println("Table numtab not dropped. " + 
se.getMessage());
                }
                sql = "CREATE TABLE numtab (num NUMERIC(10,6))";
-               System.out.println(sql);
                stmt.executeUpdate(sql);
                
                // make a big decimal from string
@@ -631,25 +627,50 @@
                
                // prepare a statement which updates the third column of the 
table with
                // the DOUBLE columns
-               sql =  "INSERT INTO  numtab VALUES(?)";
-               System.out.println("conn.prepareStatement(" + sql + ")");
+               sql =  "INSERT INTO  numtab  VALUES(?)";
                PreparedStatement ps =  conn.prepareStatement(sql);
                // setObject using the big decimal value
-               System.out.println("ps.setObject(1," + bdFromString + 
",java.sql.Types.DECIMAL,2)");
-               ps.setObject(1,bdFromString,java.sql.Types.DECIMAL,2);
+               //System.out.println("ps.setObject(1," + bdFromString +         
* ",java.sql.Types.DECIMAL,2)");
+               int scale = 2;
+               ps.setObject(1,bdFromString,java.sql.Types.DECIMAL,scale);
                ps.executeUpdate();
                // check the value
                sql = "SELECT num FROM numtab";
                ResultSet rs = stmt.executeQuery(sql);
                rs.next();
-               System.out.println("num is:" + rs.getObject(1).toString());
-               
+               // Check that the correct scale was set
+               checkBigDecimalMatch(bdFromString.setScale(scale,
+                                                                               
                   BigDecimal.ROUND_DOWN),
+                                                        
(BigDecimal)rs.getObject(1));
                rs.close();
                ps.close();
                stmt.close();
 
                conn.commit();
        }
+
+       private static void checkDoubleMatch(double expectedValue, double
+                                                                               
 actualValue)   {
+               if (actualValue == expectedValue)
+                       System.out.println("PASS: Actual value " + actualValue 
+ " matches expected value: " + expectedValue);
+               else
+                       new Exception("FAIL: Actual value: " + actualValue +
+                                                       " does not match 
expected value:" + 
+                                                 
expectedValue).printStackTrace();
+               
+       }
+
+       private static void checkBigDecimalMatch(BigDecimal expectedValue,
+                                                                               
         BigDecimal actualValue)        {
+               if (actualValue == expectedValue || 
+                       (actualValue.compareTo(expectedValue) == 0))
+                       System.out.println("PASS: Actual value " + actualValue 
+ " matches expected value: " + expectedValue);
+               else
+                       new Exception("FAIL: Actual value: " + actualValue +
+                                                       " does not match 
expected value:" + 
+                                                 
expectedValue).printStackTrace();
+               
+       }
 
        private static String bytesToString(byte[] ba)
        {


Reply via email to