]> granicus.if.org Git - postgresql/commitdiff
test files added by Kris Jurka
authorDave Cramer <davec@fastcrypt.com>
Tue, 1 Oct 2002 16:11:30 +0000 (16:11 +0000)
committerDave Cramer <davec@fastcrypt.com>
Tue, 1 Oct 2002 16:11:30 +0000 (16:11 +0000)
src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataPropertiesTest.java [new file with mode: 0644]
src/interfaces/jdbc/org/postgresql/test/jdbc2/SerializeObject.java [new file with mode: 0644]
src/interfaces/jdbc/org/postgresql/test/jdbc2/SerializeTest.java [new file with mode: 0644]

diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataPropertiesTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataPropertiesTest.java
new file mode 100644 (file)
index 0000000..18dee27
--- /dev/null
@@ -0,0 +1,339 @@
+package org.postgresql.test.jdbc2;
+
+import org.postgresql.test.TestUtil;
+import junit.framework.TestCase;
+import java.sql.*;
+
+/*
+ * TestCase to test the internal functionality of
+ * org.postgresql.jdbc2.DatabaseMetaData's various properties.
+ * Methods which return a ResultSet are tested elsewhere.
+ * This avoids a complicated setUp/tearDown for something like
+ * assertTrue(dbmd.nullPlusNonNullIsNull());
+ */
+
+public class DatabaseMetaDataPropertiesTest extends TestCase
+{
+
+       private Connection con;
+       /*
+        * Constructor
+        */
+       public DatabaseMetaDataPropertiesTest(String name)
+       {
+               super(name);
+       }
+
+       protected void setUp() throws Exception
+       {
+               con = TestUtil.openDB();
+       }
+       protected void tearDown() throws Exception
+       {
+               TestUtil.closeDB( con );
+       }
+
+       /*
+        * The spec says this may return null, but we always do!
+        */
+       public void testGetMetaData()
+       {
+               try
+               {
+
+                       DatabaseMetaData dbmd = con.getMetaData();
+                       assertNotNull(dbmd);
+
+               }
+               catch (SQLException ex)
+               {
+                       fail(ex.getMessage());
+               }
+       }
+
+       /*
+        * Test default capabilities
+        */
+       public void testCapabilities()
+       {
+               try
+               {
+
+                       DatabaseMetaData dbmd = con.getMetaData();
+                       assertNotNull(dbmd);
+
+                       assertTrue(dbmd.allProceduresAreCallable());
+                       assertTrue(dbmd.allTablesAreSelectable()); // not true all the time
+
+                       // This should always be false for postgresql (at least for 7.x)
+                       assertTrue(!dbmd.isReadOnly());
+
+                       // does the backend support this yet? The protocol does...
+                       assertTrue(!dbmd.supportsMultipleResultSets());
+
+                       // yes, as multiple backends can have transactions open
+                       assertTrue(dbmd.supportsMultipleTransactions());
+
+                       assertTrue(dbmd.supportsMinimumSQLGrammar());
+                       assertTrue(!dbmd.supportsCoreSQLGrammar());
+                       assertTrue(!dbmd.supportsExtendedSQLGrammar());
+                       if (TestUtil.haveMinimumServerVersion(con,"7.3"))
+                               assertTrue(dbmd.supportsANSI92EntryLevelSQL());
+                       else
+                               assertTrue(!dbmd.supportsANSI92EntryLevelSQL());
+                       assertTrue(!dbmd.supportsANSI92IntermediateSQL());
+                       assertTrue(!dbmd.supportsANSI92FullSQL());
+
+                       assertTrue(!dbmd.supportsIntegrityEnhancementFacility());
+
+               }
+               catch (SQLException ex)
+               {
+                       fail(ex.getMessage());
+               }
+       }
+
+
+       public void testJoins()
+       {
+               try
+               {
+
+                       DatabaseMetaData dbmd = con.getMetaData();
+                       assertNotNull(dbmd);
+
+                       assertTrue(dbmd.supportsOuterJoins());
+                       assertTrue(dbmd.supportsFullOuterJoins());
+                       assertTrue(dbmd.supportsLimitedOuterJoins());
+
+               }
+               catch (SQLException ex)
+               {
+                       fail(ex.getMessage());
+               }
+       }
+
+       public void testCursors()
+       {
+               try
+               {
+
+                       DatabaseMetaData dbmd = con.getMetaData();
+                       assertNotNull(dbmd);
+
+                       assertTrue(!dbmd.supportsPositionedDelete());
+                       assertTrue(!dbmd.supportsPositionedUpdate());
+
+               }
+               catch (SQLException ex)
+               {
+                       fail(ex.getMessage());
+               }
+       }
+
+       public void testValues()
+       {
+               try {
+                       DatabaseMetaData dbmd = con.getMetaData();
+                       assertNotNull(dbmd);
+                       int indexMaxKeys = dbmd.getMaxColumnsInIndex();
+                       if (TestUtil.haveMinimumServerVersion(con,"7.3")) {
+                               assertEquals(indexMaxKeys,32);
+                       } else {
+                               assertEquals(indexMaxKeys,16);
+                       }
+               } catch (SQLException sqle) {
+                       fail(sqle.getMessage());
+               }
+       }
+
+       public void testNulls()
+       {
+               try
+               {
+
+                       DatabaseMetaData dbmd = con.getMetaData();
+                       assertNotNull(dbmd);
+
+                       assertTrue(!dbmd.nullsAreSortedAtStart());
+                       assertTrue( dbmd.nullsAreSortedAtEnd() != TestUtil.haveMinimumServerVersion(con,"7.2"));
+                       assertTrue( dbmd.nullsAreSortedHigh() == TestUtil.haveMinimumServerVersion(con,"7.2"));
+                       assertTrue(!dbmd.nullsAreSortedLow());
+
+                       assertTrue(dbmd.nullPlusNonNullIsNull());
+
+                       assertTrue(dbmd.supportsNonNullableColumns());
+
+               }
+               catch (SQLException ex)
+               {
+                       fail(ex.getMessage());
+               }
+       }
+
+       public void testLocalFiles()
+       {
+               try
+               {
+
+                       DatabaseMetaData dbmd = con.getMetaData();
+                       assertNotNull(dbmd);
+
+                       assertTrue(!dbmd.usesLocalFilePerTable());
+                       assertTrue(!dbmd.usesLocalFiles());
+
+               }
+               catch (SQLException ex)
+               {
+                       fail(ex.getMessage());
+               }
+       }
+
+       public void testIdentifiers()
+       {
+               try
+               {
+
+                       DatabaseMetaData dbmd = con.getMetaData();
+                       assertNotNull(dbmd);
+
+                       assertTrue(!dbmd.supportsMixedCaseIdentifiers()); // always false
+                       assertTrue(dbmd.supportsMixedCaseQuotedIdentifiers());  // always true
+
+                       assertTrue(!dbmd.storesUpperCaseIdentifiers());   // always false
+                       assertTrue(dbmd.storesLowerCaseIdentifiers());    // always true
+                       assertTrue(!dbmd.storesUpperCaseQuotedIdentifiers()); // always false
+                       assertTrue(!dbmd.storesLowerCaseQuotedIdentifiers()); // always false
+                       assertTrue(!dbmd.storesMixedCaseQuotedIdentifiers()); // always false
+
+                       assertTrue(dbmd.getIdentifierQuoteString().equals("\""));
+
+
+               }
+               catch (SQLException ex)
+               {
+                       fail(ex.getMessage());
+               }
+       }
+
+       public void testTables()
+       {
+               try
+               {
+
+                       DatabaseMetaData dbmd = con.getMetaData();
+                       assertNotNull(dbmd);
+
+                       // we can add columns
+                       assertTrue(dbmd.supportsAlterTableWithAddColumn());
+
+                       // we can only drop columns in >= 7.3
+                       if (TestUtil.haveMinimumServerVersion(con,"7.3")) {
+                               assertTrue(dbmd.supportsAlterTableWithDropColumn());
+                       } else {
+                               assertTrue(!dbmd.supportsAlterTableWithDropColumn());
+                       }
+               }
+               catch (SQLException ex)
+               {
+                       fail(ex.getMessage());
+               }
+       }
+
+       public void testSelect()
+       {
+               try
+               {
+
+                       DatabaseMetaData dbmd = con.getMetaData();
+                       assertNotNull(dbmd);
+
+                       // yes we can?: SELECT col a FROM a;
+                       assertTrue(dbmd.supportsColumnAliasing());
+
+                       // yes we can have expressions in ORDERBY
+                       assertTrue(dbmd.supportsExpressionsInOrderBy());
+
+                       // Yes, an ORDER BY clause can contain columns that are not in the
+                       // SELECT clause.
+                       assertTrue(dbmd.supportsOrderByUnrelated());
+
+                       assertTrue(dbmd.supportsGroupBy());
+                       assertTrue(dbmd.supportsGroupByUnrelated());
+                       assertTrue(dbmd.supportsGroupByBeyondSelect()); // needs checking
+
+               }
+               catch (SQLException ex)
+               {
+                       fail(ex.getMessage());
+               }
+       }
+
+       public void testDBParams()
+       {
+               try
+               {
+
+                       DatabaseMetaData dbmd = con.getMetaData();
+                       assertNotNull(dbmd);
+
+                       assertTrue(dbmd.getURL().equals(TestUtil.getURL()));
+                       assertTrue(dbmd.getUserName().equals(TestUtil.getUser()));
+
+               }
+               catch (SQLException ex)
+               {
+                       fail(ex.getMessage());
+               }
+       }
+
+       public void testDbProductDetails()
+       {
+               try
+               {
+                       assertTrue(con instanceof org.postgresql.PGConnection);
+                       org.postgresql.jdbc2.AbstractJdbc2Connection pc = (org.postgresql.jdbc2.AbstractJdbc2Connection) con;
+
+                       DatabaseMetaData dbmd = con.getMetaData();
+                       assertNotNull(dbmd);
+
+                       assertTrue(dbmd.getDatabaseProductName().equals("PostgreSQL"));
+                       //The test below doesn't make sense to me, it tests that
+                       //the version of the driver = the version of the database it is connected to
+                       //since the driver should be backwardly compatible this test is commented out
+                       //assertTrue(dbmd.getDatabaseProductVersion().startsWith(
+                       //                 Integer.toString(pc.getDriver().getMajorVersion())
+                       //                 + "."
+                       //                 + Integer.toString(pc.getDriver().getMinorVersion())));
+                       assertTrue(dbmd.getDriverName().equals("PostgreSQL Native Driver"));
+
+               }
+               catch (SQLException ex)
+               {
+                       fail(ex.getMessage());
+               }
+       }
+
+       public void testDriverVersioning()
+       {
+               try
+               {
+                       assertTrue(con instanceof org.postgresql.PGConnection);
+                       org.postgresql.jdbc2.AbstractJdbc2Connection pc = (org.postgresql.jdbc2.AbstractJdbc2Connection) con;
+
+                       DatabaseMetaData dbmd = con.getMetaData();
+                       assertNotNull(dbmd);
+
+                       assertTrue(dbmd.getDriverVersion().equals(pc.getDriver().getVersion()));
+                       assertTrue(dbmd.getDriverMajorVersion() == pc.getDriver().getMajorVersion());
+                       assertTrue(dbmd.getDriverMinorVersion() == pc.getDriver().getMinorVersion());
+
+
+               }
+               catch (SQLException ex)
+               {
+                       fail(ex.getMessage());
+               }
+       }
+}
+
diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc2/SerializeObject.java b/src/interfaces/jdbc/org/postgresql/test/jdbc2/SerializeObject.java
new file mode 100644 (file)
index 0000000..c2dd6cc
--- /dev/null
@@ -0,0 +1,11 @@
+package org.postgresql.test.jdbc2;
+
+import java.io.Serializable;
+
+public class SerializeObject implements Serializable {
+
+       public int intcol;
+       public double doublecol;
+       public String stringcol;
+
+}
diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc2/SerializeTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc2/SerializeTest.java
new file mode 100644 (file)
index 0000000..73d512f
--- /dev/null
@@ -0,0 +1,47 @@
+package org.postgresql.test.jdbc2;
+
+import org.postgresql.test.TestUtil;
+import junit.framework.TestCase;
+import java.sql.*;
+import org.postgresql.util.Serialize;
+
+public class SerializeTest extends TestCase {
+
+       private Connection conn;
+       private SerializeObject serobj;
+       private Serialize ser;
+
+       public SerializeTest(String name) {
+               super(name);
+       }
+
+       protected void setUp() throws Exception {
+               conn = TestUtil.openDB();
+               serobj = new SerializeObject();
+               serobj.intcol = 1;
+               serobj.doublecol = 3.4;
+               serobj.stringcol = "Hello";
+               TestUtil.dropTable(conn,Serialize.toPostgreSQL(conn,serobj.getClass().getName()));
+               Serialize.create(conn, serobj);
+               Serialize.create(conn, serobj);
+               ser = new Serialize(conn,serobj);
+       }
+
+       protected void tearDown() throws Exception {
+               TestUtil.dropTable(conn,Serialize.toPostgreSQL(conn,serobj.getClass().getName()));
+       }
+
+       public void testCreateSerialize() {
+               try {
+                       long oid = ser.storeObject(serobj);
+                       SerializeObject serobj2 = (SerializeObject)ser.fetch(oid);
+                       assertNotNull(serobj2);
+                       assertEquals(serobj.intcol,serobj2.intcol);
+                       assertTrue(Math.abs(serobj.doublecol-serobj2.doublecol) < 0.0001);
+                       assertTrue(serobj.stringcol.equals(serobj2.stringcol));
+               } catch (SQLException sqle) {
+                       fail(sqle.getMessage());
+               }
+       }
+
+}