public void testNamesValuesConstructor()
throws Exception
{
String[] names = new String[] { "name", "descriptorType" };
Object[] values = new Object[] { "testName", "testType" };
DescriptorSupport descriptor = new DescriptorSupport(names, values);
assertTrue("Should be two fields", descriptor.getFields().length == 2);
assertEquals("testName", descriptor.getFieldValue("name"));
assertEquals("testType", descriptor.getFieldValue("descriptorType"));
assertTrue("Should be valid", descriptor.isValid());
descriptor = new DescriptorSupport(new String[0], new Object[0]);
assertTrue("Should be empty", descriptor.getFields().length == 0);
assertFalse("Should not be valid", descriptor.isValid());
boolean caught = false;
try
{
descriptor = new DescriptorSupport(null, null);
}
catch (RuntimeOperationsException e)
{
caught = true;
}
assertTrue("Expected an exception for null names and values", caught);
caught = false;
try
{
descriptor = new DescriptorSupport(null, values);
}
catch (RuntimeOperationsException e)
{
caught = true;
}
assertTrue("Expected an exception for null names", caught);
caught = false;
try
{
descriptor = new DescriptorSupport(names, null);
}
catch (RuntimeOperationsException e)
{
caught = true;
}
assertTrue("Expected an exception for null values", caught);
Object[] tooManyValues = new Object[] { "testName", "testType", "tooMany" };
caught = false;
try
{
descriptor = new DescriptorSupport(names, tooManyValues);
}
catch (RuntimeOperationsException e)
{
caught = true;
}
assertTrue("Expected an exception for too many values", caught);
Object[] tooFewValues = new Object[] { "testName" };
caught = false;
try
{
descriptor = new DescriptorSupport(names, tooFewValues);
}
catch (RuntimeOperationsException e)
{
caught = true;
}
assertTrue("Expected an exception for too few values", caught);
String[] nullName = new String[] { "name", null };
caught = false;
try
{
descriptor = new DescriptorSupport(nullName, values);
}
catch (RuntimeOperationsException e)
{
caught = true;
}
assertTrue("Expected an exception for null name", caught);
String[] emptyName = new String[] { "name", "" };
caught = false;
try
{
descriptor = new DescriptorSupport(emptyName, values);
}
catch (RuntimeOperationsException e)
{
caught = true;
}
assertTrue("Expected an exception for empty name ", caught);
// This is legal?
String[] notEmptyName = new String[] { "name", " " };
descriptor = new DescriptorSupport(notEmptyName, values);
assertTrue("Should be two fields", descriptor.getFields().length == 2);
assertEquals("testName", descriptor.getFieldValue("name"));
assertEquals("testType", descriptor.getFieldValue(" "));
assertFalse("Should not be valid", descriptor.isValid());
names = new String[] { "name", "descriptorType", "another" };
values = new Object[] { "testName", "testType", null };
descriptor = new DescriptorSupport(names, values);
assertTrue("Should be three fields", descriptor.getFields().length == 3);
assertEquals("testName", descriptor.getFieldValue("name"));
assertEquals("testType", descriptor.getFieldValue("descriptorType"));
assertTrue("another should be null", descriptor.getFieldValue("another") == null);
assertTrue("Should be valid", descriptor.isValid());
}