99 *
1010 * PS: Do you know how difficult it is to type on a train? ;-)
1111 *
12- * $Id: DatabaseMetaDataTest.java,v 1.9 2002/07/23 03:59:55 barry Exp $
12+ * $Id: DatabaseMetaDataTest.java,v 1.10 2002/07/30 13:22:38 davec Exp $
1313 */
1414
1515public class DatabaseMetaDataTest extends TestCase
@@ -48,7 +48,8 @@ public void testGetMetaData()
4848
4949 ResultSet rs = dbmd .getTables ( null , null , "test%" , new String [] {"TABLE" });
5050 assertTrue ( rs .next () );
51- assertTrue ( rs .getString ("TABLE_NAME" ).equals ("testmetadata" ) );
51+ String tableName = rs .getString ("TABLE_NAME" );
52+ assertTrue ( tableName .equals ("testmetadata" ) );
5253
5354 rs .close ();
5455
@@ -101,7 +102,7 @@ public void testCapabilities()
101102 assertTrue (dbmd .supportsMinimumSQLGrammar ());
102103 assertTrue (!dbmd .supportsCoreSQLGrammar ());
103104 assertTrue (!dbmd .supportsExtendedSQLGrammar ());
104- assertTrue (! dbmd .supportsANSI92EntryLevelSQL ());
105+ assertTrue (dbmd .supportsANSI92EntryLevelSQL ());
105106 assertTrue (!dbmd .supportsANSI92IntermediateSQL ());
106107 assertTrue (!dbmd .supportsANSI92FullSQL ());
107108
@@ -228,6 +229,57 @@ public void testIdentifiers()
228229 }
229230 }
230231
232+ public void testCrossReference ()
233+ {
234+ try
235+ {
236+ Connection con1 = JDBC2Tests .openDB ();
237+
238+ JDBC2Tests .createTable ( con1 , "vv" , "a int not null, b int not null, primary key ( a, b )" );
239+
240+ JDBC2Tests .createTable ( con1 , "ww" , "m int not null, n int not null, primary key ( m, n ), foreign key ( m, n ) references vv ( a, b )" );
241+
242+
243+ DatabaseMetaData dbmd = con .getMetaData ();
244+ assertNotNull (dbmd );
245+
246+ ResultSet rs = dbmd .getCrossReference (null , "" , "vv" , null , "" , "ww" );
247+
248+ for (int j =1 ; rs .next (); j ++ )
249+ {
250+
251+ String pkTableName = rs .getString ( "PKTABLE_NAME" );
252+ assertTrue ( pkTableName .equals ("vv" ) );
253+
254+ String pkColumnName = rs .getString ( "PKCOLUMN_NAME" );
255+ assertTrue ( pkColumnName .equals ("a" ) || pkColumnName .equals ("b" ));
256+
257+ String fkTableName = rs .getString ( "FKTABLE_NAME" );
258+ assertTrue ( fkTableName .equals ( "ww" ) );
259+
260+ String fkColumnName = rs .getString ( "FKCOLUMN_NAME" );
261+ assertTrue ( fkColumnName .equals ( "m" ) || fkColumnName .equals ( "n" ) ) ;
262+
263+ String fkName = rs .getString ( "FK_NAME" );
264+ assertTrue ( fkName .equals ( "<unnamed>" ) );
265+
266+ String pkName = rs .getString ( "PK_NAME" );
267+ assertTrue ( pkName .equals ("vv_pkey" ) );
268+
269+ int keySeq = rs .getInt ( "KEY_SEQ" );
270+ assertTrue ( keySeq == j );
271+ }
272+
273+
274+ JDBC2Tests .dropTable ( con1 , "vv" );
275+ JDBC2Tests .dropTable ( con1 , "ww" );
276+
277+ }
278+ catch (SQLException ex )
279+ {
280+ fail (ex .getMessage ());
281+ }
282+ }
231283 public void testForeignKeys ()
232284 {
233285 try
@@ -262,10 +314,10 @@ public void testForeignKeys()
262314 assertTrue ( fkColumnName .equals ( "people_id" ) || fkColumnName .equals ( "policy_id" ) ) ;
263315
264316 String fkName = rs .getString ( "FK_NAME" );
265- assertTrue ( fkName .equals ( "people_pkey " ) || fkName .equals ( "policy_pkey " ) );
317+ assertTrue ( fkName .equals ( "people " ) || fkName .equals ( "policy " ) );
266318
267319 String pkName = rs .getString ( "PK_NAME" );
268- // assertTrue( pkName.equals("users" ) );
320+ assertTrue ( pkName .equals ( "people_pkey" ) || pkName . equals ( "policy_pkey" ) );
269321
270322 }
271323
@@ -282,7 +334,7 @@ public void testForeignKeys()
282334 assertTrue ( rs .getString ( "FKTABLE_NAME" ).equals ( "users" ) );
283335 assertTrue ( rs .getString ( "FKCOLUMN_NAME" ).equals ( "people_id" ) );
284336
285- assertTrue ( rs .getString ( "FK_NAME" ).equals ( "people_pkey " ) );
337+ assertTrue ( rs .getString ( "FK_NAME" ).equals ( "people " ) );
286338
287339
288340 JDBC2Tests .dropTable ( con1 , "users" );
0 commit comments