// jTDS JDBC Driver for Microsoft SQL Server and Sybase // Copyright (C) 2004 The jTDS Project // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package net.sourceforge.jtds.jdbc; import java.math.BigDecimal; import java.sql.SQLException; import java.util.Map; /** * @author Alin Sinpalean * @version $Id: DatabaseTestCase.java,v 1.8.6.1 2009-08-04 10:33:54 ickzon Exp $ */ public abstract class DatabaseTestCase extends TestBase { private static Map typemap = null; public DatabaseTestCase(String name) { super(name); } // return -1 if a1<a2, 0 if a1==a2, 1 if a1>a2 static int compareBytes(byte a1[], byte a2[]) { if (a1 == a2) { return 0; } if (a1 == null) { return -1; } if (a2 == null) { return 1; } int length = (a1.length < a2.length ? a1.length : a2.length); for (int i = 0; i < length; i++) { if (a1[i] != a2[i]) { return((a1[i] & 0xff) > (a2[i] & 0xff) ? 1 : -1); } } if (a1.length == a2.length) { return 0; } if (a1.length < a2.length) { return -1; } return 1; } protected static Map getTypemap() { if (typemap != null) { return typemap; } Map map = new java.util.HashMap(15); map.put(BigDecimal.class, new Integer(java.sql.Types.DECIMAL)); map.put(Boolean.class, new Integer(java.sql.Types.BIT)); map.put(Byte.class, new Integer(java.sql.Types.TINYINT)); map.put(byte[].class, new Integer(java.sql.Types.VARBINARY)); map.put(java.sql.Date.class, new Integer(java.sql.Types.DATE)); map.put(double.class, new Integer(java.sql.Types.DOUBLE)); map.put(Double.class, new Integer(java.sql.Types.DOUBLE)); map.put(float.class, new Integer(java.sql.Types.REAL)); map.put(Float.class, new Integer(java.sql.Types.REAL)); map.put(Integer.class, new Integer(java.sql.Types.INTEGER)); map.put(Long.class, new Integer(java.sql.Types.NUMERIC)); map.put(Short.class, new Integer(java.sql.Types.SMALLINT)); map.put(String.class, new Integer(java.sql.Types.VARCHAR)); map.put(java.sql.Timestamp.class, new Integer(java.sql.Types.TIMESTAMP)); typemap = map; return typemap; } protected static int getType(Object o) throws SQLException { if (o == null) { throw new SQLException("You must specify a type for a null parameter"); } Map map = getTypemap(); Object ot = map.get(o.getClass()); if (ot == null) { throw new SQLException("Support for this type is not implemented"); } return((Integer)ot).intValue(); } protected String getLongString(int length) { StringBuilder result = new StringBuilder(length); for (int i = 0; i < length; i++) { result.append('a'); } return result.toString(); } protected String getLongString(char ch) { StringBuilder str255 = new StringBuilder(255); for (int i = 0; i < 255; i++) { str255.append(ch); } return str255.toString(); } }