1 19 20 package org.netbeans.modules.db.sql.execute.ui; 21 22 import java.awt.Component ; 23 import java.io.File ; 24 import java.lang.reflect.Constructor ; 25 import java.sql.Connection ; 26 import java.util.Locale ; 27 import java.util.Map ; 28 import java.util.Properties ; 29 import javax.swing.JLabel ; 30 import javax.swing.JTable ; 31 import javax.swing.table.TableCellRenderer ; 32 import junit.framework.TestSuite; 33 34 35 36 37 38 import org.netbeans.junit.NbTestCase; 39 import org.netbeans.modules.db.sql.execute.SQLExecuteHelper; 40 import org.netbeans.modules.db.sql.execute.SQLExecutionLogger; 41 import org.netbeans.modules.db.sql.execute.SQLExecutionResult; 42 import org.netbeans.modules.db.sql.execute.SQLExecutionResults; 43 import org.netbeans.modules.db.sql.execute.ui.SQLResultPanel.SQLResultTable; 44 import org.netbeans.modules.db.sql.execute.ui.util.TestCaseContext; 45 import org.netbeans.modules.db.sql.execute.ui.util.DbUtil; 46 import org.netbeans.modules.db.sql.execute.ui.util.TestCaseDataFactory; 47 48 52 public class DataTypeTest extends NbTestCase{ 53 TestCaseContext context; 54 Connection conn; 55 JTable table; 56 Locale defaultLocale; 57 public DataTypeTest(String s,TestCaseContext c) { 58 super(s); 59 context=c; 60 debug("TestCase: "+context); 61 } 62 63 64 public void testData(){ 65 debug("testData()"); 66 67 68 int count=table.getColumnCount(); 69 int row=table.getRowCount(); 70 if(row==0) 71 fail(context+": table exist but there is no data in table probably there is an error in insert sql script in file: "+TestCaseDataFactory.DB_SQLCREATE); 72 Map data=context.getData(); 73 assertEquals(context+": number of entries in file with data and columns in database are different for test case: "+context,data.size(),count); 74 for(int i=0;i<count;i++){ 75 String column=table.getColumnName(i); 76 String expected=(String )data.get(column); 77 if(expected==null) 78 expected=(String )data.get(column.toLowerCase()); 79 if(expected==null) 80 fail(context+": the file with data doesn't contains entry called: "+column); 81 TableCellRenderer renderer=table.getCellRenderer(0,i) ; 82 83 Component c=table.prepareRenderer(renderer,0,i); 84 String actual=(String )((JLabel )c).getText(); 85 assertEquals(context+": values are different for column: "+column,expected,actual); 86 } 87 88 89 } 90 91 92 private ResultSetTableModel executeSQL(String sql,Connection conn) throws Exception { 93 SQLExecutionResults sqlrs=SQLExecuteHelper.execute(sql,0,sql.length(),conn,null,new SQLExecutionLogger() { 94 public void cancel() { 95 } 96 public void finish(long executionTime) { 97 } 98 public void log(SQLExecutionResult result) { 99 } 100 }); 101 SQLResultPanelModel panelModel=SQLResultPanelModel.create(sqlrs); 102 ResultSetTableModel model=panelModel.getResultSetModel(); 103 104 return model; 105 } 106 107 protected void setUp() throws Exception { 108 debug("setUp()"); 109 Properties prop=context.getProperties(); 110 File [] jars=context.getJars(); 111 conn = DbUtil.createConnection(prop,jars); 112 String sql_create=context.getSqlCreate(); 113 String sql_select=context.getSqlSelect(); 114 debug("sql_select: "+sql_select); 115 executeSQL(sql_create,conn); 116 ResultSetTableModel model=executeSQL(sql_select,conn); 117 if(model==null) 118 throw new RuntimeException (context+": model ResultSetTableModel is null probably there is a error in sql statement"); 119 table=new SQLResultTable(); 120 defaultLocale = Locale.getDefault(); 121 Locale.setDefault(Locale.US); 122 table.setModel(model); 123 124 125 126 127 } 128 129 protected void tearDown() throws Exception { 130 debug("tearDown()"); 131 Locale.setDefault(defaultLocale); 132 String sql_del=context.getSqlDel(); 133 executeSQL(sql_del,conn); 134 conn.close(); 135 } 136 137 138 public static TestSuite suite() throws Exception { 139 TestSuite suite=new TestSuite(); 140 TestCaseDataFactory factory=TestCaseDataFactory.getTestCaseFactory(); 141 Object [] context=factory.getTestCaseContext(); 142 for(int i=0;i<context.length;i++){ 143 Class [] args={String .class,TestCaseContext.class}; 144 Object [] o={"testData",context[i]}; 145 Constructor con=DataTypeTest.class.getConstructor(args); 146 DataTypeTest testcase=(DataTypeTest)con.newInstance(o); 147 suite.addTest(testcase); 148 } 149 return suite; 150 } 151 152 153 private void debug(String message){ 154 155 log(message); 156 System.out.println("> " + message); 157 158 } 159 } 160 | Popular Tags |