1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 package com.gargoylesoftware.base.resource.jdbc;
39
40 import com.gargoylesoftware.base.util.ProxyUtil;
41 import java.sql.DatabaseMetaData;
42 import java.sql.ResultSet;
43 import junit.framework.Test;
44 import junit.framework.TestCase;
45 import junit.framework.TestSuite;
46
47 /***
48 * Tests for DatabaseMetaDataWrapper
49 *
50 * @version $Revision: 1.5 $
51 * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
52 */
53 public class DatabaseMetaDataWrapperTest extends TestCase {
54
55 /***
56 * Create a test
57 *
58 * @param name The name of the test
59 */
60 public DatabaseMetaDataWrapperTest( final String name ) {
61 super( name );
62 }
63
64
65 /***
66 * Return a test suite containing all the tests for this class
67 *
68 * @return The test suite
69 */
70 public static Test suite() {
71 final String excludedMethods[] = {
72 "close", "getDriverMajorVersion", "getDriverMinorVersion", "getConnection"
73 };
74 final String wrappedMethods[] = {
75 "getProcedures", "getTables", "getSchemas", "getCatalogs", "getTableTypes",
76 "getColumns", "getColumnPrivileges", "getTablePrivileges", "getBestRowIdentifier",
77 "getVersionColumns", "getPrimaryKeys", "getImportedKeys", "getExportedKeys",
78 "getCrossReference", "getTypeInfo", "getIndexInfo", "getUDTs", "getProcedureColumns"
79 };
80 final TestSuite suite = WrapperTestCase.getWrapperTestSuite(
81 DatabaseMetaData.class, DatabaseMetaDataWrapper.class, excludedMethods, wrappedMethods );
82
83 suite.addTest( new TestSuite( DatabaseMetaDataWrapperTest.class ) );
84
85 return suite;
86 }
87
88
89 /***
90 * Try passing a null into the constructor
91 */
92 public void testConstructor_null() {
93 try {
94 new DatabaseMetaDataWrapper( null );
95 fail( "Expected exception" );
96 }
97 catch( final NullPointerException e ) {
98
99 }
100 }
101
102
103 /***
104 * Try closing the metadata twice
105 *
106 * @exception Exception If an error occurs
107 */
108 public void testCloseTwice()
109 throws Exception {
110 final DatabaseMetaData metaData
111 = (DatabaseMetaData)ProxyUtil.createProxy( DatabaseMetaData.class );
112 final DatabaseMetaDataWrapper wrapper = new DatabaseMetaDataWrapper( metaData );
113
114 wrapper.close();
115 try {
116 wrapper.close();
117 fail( "Expected exception when calling close() on a closed object" );
118 }
119 catch( final AlreadyClosedException e ) {
120
121 }
122 }
123
124
125 /***
126 * Test close where one of the result sets has already been closed
127 *
128 * @exception Exception If an error occurs
129 */
130 public void testCloseWhenResultSetAlreadyClosed()
131 throws Exception {
132 final ResultSet resultSet
133 = (ResultSet)ProxyUtil.createProxy( ResultSet.class );
134
135 final DatabaseMetaData metaData
136 = (DatabaseMetaData)ProxyUtil.createProxy( DatabaseMetaData.class,
137 new Object[][]{{"getCatalogs", new ResultSetWrapper( resultSet )}} );
138
139 final DatabaseMetaDataWrapper metaDataWrapper
140 = new DatabaseMetaDataWrapper( metaData );
141
142 final ResultSetWrapper resultSetWrapper
143 = (ResultSetWrapper)metaDataWrapper.getCatalogs();
144 resultSetWrapper.close();
145
146 metaDataWrapper.close();
147 }
148 }
149