From 5598cbf641c88b6923c95a005ce2b5b0b08ebf77 Mon Sep 17 00:00:00 2001 From: Dave Cramer Date: Thu, 13 Jun 2002 14:06:11 +0000 Subject: [PATCH] Added test for newly implemented updateable result sets --- .../jdbc/org/postgresql/test/JDBC2Tests.java | 10 +- .../test/jdbc2/UpdateableResultTest.java | 135 ++++++++++++++++++ 2 files changed, 142 insertions(+), 3 deletions(-) create mode 100644 src/interfaces/jdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java diff --git a/src/interfaces/jdbc/org/postgresql/test/JDBC2Tests.java b/src/interfaces/jdbc/org/postgresql/test/JDBC2Tests.java index 88e2438f29..16ee85c7b0 100644 --- a/src/interfaces/jdbc/org/postgresql/test/JDBC2Tests.java +++ b/src/interfaces/jdbc/org/postgresql/test/JDBC2Tests.java @@ -16,7 +16,8 @@ public class JDBC2Tests extends TestSuite */ public static String getURL() { - return System.getProperty("database"); + //return System.getProperty("database"); + return "test"; } /* @@ -24,7 +25,8 @@ public class JDBC2Tests extends TestSuite */ public static String getUser() { - return System.getProperty("username"); + return "davec"; + //return System.getProperty("username"); } /* @@ -32,7 +34,8 @@ public class JDBC2Tests extends TestSuite */ public static String getPassword() { - return System.getProperty("password"); + return null; + //return System.getProperty("password"); } /* @@ -226,6 +229,7 @@ public class JDBC2Tests extends TestSuite // Fastpath/LargeObject suite.addTestSuite(BlobTest.class); + suite.addTestSuite( UpdateableResultTest.class ); // That's all folks return suite; diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java new file mode 100644 index 0000000000..94effddc06 --- /dev/null +++ b/src/interfaces/jdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java @@ -0,0 +1,135 @@ +package org.postgresql.test.jdbc2; + +import java.sql.*; +import junit.framework.TestCase; + +import org.postgresql.test.JDBC2Tests; +/** + *

Title:

+ *

Description:

+ *

Copyright: Copyright (c) 2001

+ *

Company:

+ * @author unascribed + * @version 1.0 + */ + +public class UpdateableResultTest extends TestCase +{ + + public UpdateableResultTest( String name ) + { + super( name ); + } + + public void testUpdateable() + { + try + { + Connection con = JDBC2Tests.openDB(); + JDBC2Tests.createTable(con, "updateable","id int primary key, name text, notselected text"); + JDBC2Tests.createTable(con, "second","id1 int primary key, name1 text"); + + Statement st1 = con.createStatement(); + boolean retVal = st1.execute( "insert into updateable ( id, name, notselected ) values (1, 'jake', 'avalue')" ); + assert( retVal== false ); + + retVal = st1.execute( "insert into second (id1, name1) values (1, 'jake')" ); + assertTrue( !retVal ); + st1.close(); + + Statement st = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE ); + ResultSet rs = st.executeQuery( "select id, name, notselected from updateable" ); + + assertNotNull(rs); + + while (rs.next()) + { + rs.updateInt( "id",2 ); + rs.updateString( "name","dave" ); + rs.updateRow(); + assertTrue( rs.getInt("id") == 2 ); + assertTrue( rs.getString("name").equals("dave")); + assertTrue( rs.getString("notselected").equals("avalue") ); + + rs.deleteRow(); + rs.moveToInsertRow(); + rs.updateInt("id",3); + rs.updateString("name", "paul"); + + rs.insertRow(); + + assertTrue( rs.getInt("id") == 3 ); + assertTrue( rs.getString("name").equals("paul")); + assertTrue( rs.getString("notselected") == null ); + + } + + rs.close(); + + rs = st.executeQuery("select id1, id, name, name1 from updateable, second" ); + try + { + while( rs.next() ) + { + rs.updateInt( "id",2 ); + rs.updateString( "name","dave" ); + rs.updateRow(); + } + + + assertTrue( "should not get here, update should fail", false ); + } + catch (SQLException ex){} + + try + { + rs = st.executeQuery("select oid,* from updateable"); + if ( rs.first() ) + { + rs.updateInt( "id", 3 ); + rs.updateString( "name", "dave3"); + rs.updateRow(); + assertTrue(rs.getInt("id") == 3 ); + assertTrue(rs.getString("name").equals("dave3")); + + rs.moveToInsertRow(); + rs.updateInt( "id", 4 ); + rs.updateString( "name", "dave4" ); + + rs.insertRow(); + rs.updateInt("id", 5 ); + rs.updateString( "name", "dave5" ); + rs.insertRow(); + + rs.moveToCurrentRow(); + assertTrue(rs.getInt("id") == 3 ); + assertTrue(rs.getString("name").equals("dave3")); + + assertTrue( rs.next() ); + assertTrue(rs.getInt("id") == 4 ); + assertTrue(rs.getString("name").equals("dave4")); + + assertTrue( rs.next() ); + assertTrue(rs.getInt("id") == 5 ); + assertTrue(rs.getString("name").equals("dave5")); + + } + } + catch(SQLException ex) + { + fail(ex.getMessage()); + } + + st.close(); + + JDBC2Tests.dropTable( con,"updateable" ); + JDBC2Tests.closeDB( con ); + } + catch (Exception ex) + { + fail(ex.getMessage()); + } + } + + +} \ No newline at end of file