// 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 net.sourceforge.jtds.jdbc.DefaultProperties;
import net.sourceforge.jtds.jdbc.Messages;
import net.sourceforge.jtds.jdbc.Driver;
import java.util.Properties;
import java.util.Map;
import java.util.HashMap;
/**
* Unit tests for the {@link net.sourceforge.jtds.jdbc.DefaultProperties} class.
*
* @author David D. Kilzer
* @version $Id: DefaultPropertiesUnitTest.java,v 1.9 2007-07-08 18:08:54 bheineman Exp $
*/
public class DefaultPropertiesUnitTest extends UnitTestBase {
/**
* Constructor.
*
* @param name The name of the test.
*/
public DefaultPropertiesUnitTest(String name) {
super(name);
}
/**
* Tests that
* <code>DefaultProperties.addDefaultPropertyIfNotSet(java.util.Properties, java.lang.String, java.lang.String)</code>
* sets a default property if the property is not already set.
*/
public void test_addDefaultPropertyIfNotSet_PropertyNotSet() {
final Properties properties = new Properties();
final String key = Driver.DATABASENAME;
final String defaultValue = "foobar";
invokeStaticMethod(
DefaultProperties.class, "addDefaultPropertyIfNotSet",
new Class[]{Properties.class, String.class, String.class},
new Object[]{properties, key, defaultValue});
assertEquals(defaultValue, properties.get(Messages.get(key)));
}
/**
* Tests that
* <code>DefaultProperties.addDefaultPropertyIfNotSet(java.util.Properties, java.lang.String, java.lang.String)</code>
* does <em>not</em> set a default property if the property is already set.
*/
public void test_addDefaultPropertyIfNotSet_PropertyAlreadySet() {
final Properties properties = new Properties();
final String key = Driver.DATABASENAME;
final String presetValue = "barbaz";
final String defaultValue = "foobar";
properties.setProperty(Messages.get(key), presetValue);
invokeStaticMethod(DefaultProperties.class, "addDefaultPropertyIfNotSet",
new Class[]{Properties.class, String.class, String.class},
new Object[]{properties, key, defaultValue});
assertEquals(presetValue, properties.get(Messages.get(key)));
}
/**
* Tests that
* <code>DefaultProperties.addDefaultPropertyIfNotSet(java.util.Properties, java.lang.String, java.lang.String, java.util.Map)</code>
* does <em>not</em> set a default property if the <code>defaultKey</code> is not set.
*/
public void test_addDefaultPropertyIfNotSet_DefaultKeyNotSet() {
final Properties properties = new Properties();
final String defaultKey = Driver.SERVERTYPE;
final String key = Driver.PORTNUMBER;
final HashMap defaults = new HashMap();
invokeStaticMethod(DefaultProperties.class, "addDefaultPropertyIfNotSet",
new Class[]{Properties.class, String.class, String.class, Map.class},
new Object[]{properties, key, defaultKey, defaults});
assertEquals(0, properties.size());
}
/**
* Tests that
* <code>DefaultProperties.addDefaultPropertyIfNotSet(java.util.Properties, java.lang.String, java.lang.String, java.util.Map)</code>
* sets a default property if the property is not already set.
*/
public void test_addDefaultPropertyIfNotSet_DefaultKeySet_PropertyNotSet() {
final Properties properties = new Properties();
final String defaultKey = Driver.SERVERTYPE;
final String defaultKeyValue = "foobar";
properties.put(Messages.get(defaultKey), defaultKeyValue);
final String key = Driver.PORTNUMBER;
final String defaultValue = "2004";
final HashMap defaults = new HashMap();
defaults.put(defaultKeyValue, defaultValue);
invokeStaticMethod(DefaultProperties.class, "addDefaultPropertyIfNotSet",
new Class[]{Properties.class, String.class, String.class, Map.class},
new Object[]{properties, key, defaultKey, defaults});
assertEquals(defaultValue, properties.get(Messages.get(key)));
}
/**
* Tests that
* <code>DefaultProperties.addDefaultPropertyIfNotSet(java.util.Properties, java.lang.String, java.lang.String, java.util.Map)</code>
* does <em>not</em> set a default property if the property is already set.
*/
public void test_addDefaultPropertyIfNotSet_DefaultKeySet_PropertyAlreadySet() {
final Properties properties = new Properties();
final String defaultKey = Driver.SERVERTYPE;
final String defaultKeyValue = "foobar";
properties.put(Messages.get(defaultKey), defaultKeyValue);
final String key = Driver.PORTNUMBER;
final String presetValue = "2020";
properties.put(Messages.get(key), presetValue);
final String defaultValue = "2004";
final HashMap defaults = new HashMap();
defaults.put(defaultKeyValue, defaultValue);
invokeStaticMethod(DefaultProperties.class, "addDefaultPropertyIfNotSet",
new Class[]{Properties.class, String.class, String.class, Map.class},
new Object[]{properties, key, defaultKey, defaults});
assertEquals(presetValue, properties.get(Messages.get(key)));
}
public void test_getServerType_intToString_Null() {
final String message = "Did not return null for unknown server type ";
final int[] testValues = new int[]{ -99, -1, 0, 3, 99 };
for (int i = 0; i < testValues.length; i++) {
assertNull(
message + String.valueOf(testValues[i]),
DefaultProperties.getServerType(testValues[i]));
}
}
public void test_getServerType_intToString_SQLSERVER() {
assertEquals(
"Server type for SQL Server did not map correctly",
DefaultProperties.SERVER_TYPE_SQLSERVER,
DefaultProperties.getServerType(Driver.SQLSERVER));
}
public void test_getServerType_intToString_SYBASE() {
assertEquals("Server type for Sybase did not map correctly",
DefaultProperties.SERVER_TYPE_SYBASE,
DefaultProperties.getServerType(Driver.SYBASE));
}
public void test_getServerType_StringToInteger_Null() {
final String message = "Did not return null for unknown server type: ";
final String[] testValues = new String[]{ null, "", "SQLServer", "Sybase", "sibase", "sq1server" };
for (int i = 0; i < testValues.length; i++) {
assertNull(
message + String.valueOf(testValues[i]),
DefaultProperties.getServerType(testValues[i]));
}
}
public void test_getServerType_StringToInteger_SQLSERVER() {
assertEquals(
"Server type for SQL Server did not map correctly",
new Integer(Driver.SQLSERVER),
DefaultProperties.getServerType(DefaultProperties.SERVER_TYPE_SQLSERVER));
}
public void test_getServerType_StringToInteger_SYBASE() {
assertEquals("Server type for Sybase did not map correctly",
new Integer(Driver.SYBASE),
DefaultProperties.getServerType(DefaultProperties.SERVER_TYPE_SYBASE));
}
public void test_getTdsVersion_StringToInteger_Null() {
final String message = "Did not return null for unknown TDS version: ";
final String[] testValues = new String[]{ null, "", "4.0", "5.2", "0.0", "8:0" };
for (int i = 0; i < testValues.length; i++) {
assertNull(
message + String.valueOf(testValues[i]),
DefaultProperties.getTdsVersion(testValues[i]));
}
}
public void test_getTdsVersion_StringToInteger_TDS42() {
assertEquals(
"Tds version for TDS 4.2 did not map correctly",
new Integer(Driver.TDS42),
DefaultProperties.getTdsVersion(DefaultProperties.TDS_VERSION_42));
}
public void test_getTdsVersion_StringToInteger_TDS50() {
assertEquals(
"Tds version for TDS 5.0 did not map correctly",
new Integer(Driver.TDS50),
DefaultProperties.getTdsVersion(DefaultProperties.TDS_VERSION_50));
}
public void test_getTdsVersion_StringToInteger_TDS70() {
assertEquals(
"Tds version for TDS 7.0 did not map correctly",
new Integer(Driver.TDS70),
DefaultProperties.getTdsVersion(DefaultProperties.TDS_VERSION_70));
}
public void test_getTdsVersion_StringToInteger_TDS80() {
assertEquals(
"Tds version for TDS 8.0 did not map correctly",
new Integer(Driver.TDS80),
DefaultProperties.getTdsVersion(DefaultProperties.TDS_VERSION_80));
}
public void test_getNamedPipePath_DEFAULT() {
assertEquals(
"Default named pipe path for default (0) did not map correctly",
DefaultProperties.NAMED_PIPE_PATH_SQLSERVER,
DefaultProperties.getNamedPipePath(0));
}
public void test_getNamedPipePath_INVALID() {
try {
DefaultProperties.getNamedPipePath(3);
fail("IllegalArgumentException was expected to be thrown");
}
catch (IllegalArgumentException expected) {
}
}
public void test_getNamedPipePath_SQLSERVER() {
assertEquals(
"Default named pipe path for SQL Server did not map correctly",
DefaultProperties.NAMED_PIPE_PATH_SQLSERVER,
DefaultProperties.getNamedPipePath(DefaultProperties.getServerType(DefaultProperties.SERVER_TYPE_SQLSERVER).intValue()));
}
public void test_getNamedPipePath_SYBASE() {
assertEquals(
"Default named pipe path for Sybase did not map correctly",
DefaultProperties.NAMED_PIPE_PATH_SYBASE,
DefaultProperties.getNamedPipePath(DefaultProperties.getServerType(DefaultProperties.SERVER_TYPE_SYBASE).intValue()));
}
}