1   package org.dbunit.database;
2   
3   import java.io.File;
4   import java.sql.Connection;
5   
6   import org.dbunit.AbstractDatabaseIT;
7   import org.dbunit.HypersonicEnvironment;
8   import org.dbunit.dataset.Column;
9   import org.dbunit.dataset.Columns;
10  import org.dbunit.dataset.IDataSet;
11  import org.dbunit.testutil.TestUtils;
12  
13  /**
14   * @author gommma (gommma AT users.sourceforge.net)
15   * @author Last changed by: $Author: jbhurst $
16   * @version $Revision: 1162 $ $Date: 2010-02-12 00:29:37 +0100 (ven, 12 feb 2010) $
17   * @since 2.4.0
18   */
19  public class ResultSetTableMetaDataIT extends AbstractDatabaseIT
20  {
21      
22      public ResultSetTableMetaDataIT(String s)
23      {
24          super(s);
25      }
26  
27      protected IDataSet createDataSet() throws Exception
28      {
29          return _connection.createDataSet();
30      }
31  
32      /**
33       * Tests the pattern-like column retrieval from the database. DbUnit
34       * should not interpret any table names as regex patterns. 
35       * @throws Exception
36       */
37      public void testGetColumnsForTablesMatchingSamePattern() throws Exception
38      {
39          Connection jdbcConnection = HypersonicEnvironment.createJdbcConnection("tempdb");
40          HypersonicEnvironment.executeDdlFile(TestUtils.getFile("sql/hypersonic_dataset_pattern_test.sql"),
41                  jdbcConnection);
42          IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);
43  
44          try {
45              String tableName = "PATTERN_LIKE_TABLE_X_";
46              String[] columnNames = {"VARCHAR_COL_XUNDERSCORE"};
47      
48              String sql = "select * from " + tableName;
49              ForwardOnlyResultSetTable resultSetTable = new ForwardOnlyResultSetTable(tableName, sql, connection);
50              ResultSetTableMetaData metaData = (ResultSetTableMetaData) resultSetTable.getTableMetaData();
51              
52              Column[] columns = metaData.getColumns();
53      
54              assertEquals("column count", columnNames.length, columns.length);
55      
56              for (int i = 0; i < columnNames.length; i++)
57              {
58                  Column column = Columns.getColumn(columnNames[i], columns);
59                  assertEquals(columnNames[i], columnNames[i], column.getColumnName());
60              }
61          }
62          finally {
63              HypersonicEnvironment.shutdown(jdbcConnection);
64              jdbcConnection.close();
65              HypersonicEnvironment.deleteFiles("tempdb");
66          }
67      }
68  
69  }