public void testRemove() throws Exception {
    String[] names = new String[] {"name", "descriptorType"};
    Object[] values = new Object[] {"testName", "testType"};
    DescriptorSupport descriptor = new DescriptorSupport(names, values);

    descriptor.removeField("name");
    assertTrue("Should be one field", descriptor.getFields().length == 1);
    assertTrue("name should not be present", descriptor.getFieldValue("name") == null);
    assertEquals("testType", descriptor.getFieldValue("descriptorType"));

    descriptor = new DescriptorSupport(names, values);
    descriptor.removeField("NAME");
    assertTrue("Should be one field", descriptor.getFields().length == 1);
    assertTrue("name should not be present", descriptor.getFieldValue("name") == null);
    assertEquals("testType", descriptor.getFieldValue("descriptorType"));

    descriptor = new DescriptorSupport(names, values);
    descriptor.removeField("notPresent");
    assertTrue("Should be two fields", descriptor.getFields().length == 2);
    assertEquals("testName", descriptor.getFieldValue("name"));
    assertEquals("testType", descriptor.getFieldValue("descriptorType"));

    descriptor.removeField(null);
    assertTrue("Should be two fields", descriptor.getFields().length == 2);
    assertEquals("testName", descriptor.getFieldValue("name"));
    assertEquals("testType", descriptor.getFieldValue("descriptorType"));

    descriptor.removeField("");
    assertTrue("Should be two fields", descriptor.getFields().length == 2);
    assertEquals("testName", descriptor.getFieldValue("name"));
    assertEquals("testType", descriptor.getFieldValue("descriptorType"));
  }
  public void testNameEqualsValueConstructor() throws Exception {
    String[] fields = new String[] {"name=testName", "descriptorType=testType"};
    DescriptorSupport descriptor = new DescriptorSupport(fields);
    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((String[]) null);
    assertTrue("Should be empty", descriptor.getFields().length == 0);
    assertFalse("Should not be valid", descriptor.isValid());

    descriptor = new DescriptorSupport(new String[0]);
    assertTrue("Should be empty", descriptor.getFields().length == 0);
    assertFalse("Should not be valid", descriptor.isValid());

    String[] nullName = new String[] {"name=testName", "=rubbish"};
    boolean caught = false;
    try {
      descriptor = new DescriptorSupport(nullName);
    } catch (RuntimeOperationsException e) {
      caught = true;
    }
    assertTrue("Expected an exception for '=rubbish'", caught);

    // This is legal?
    String[] notEmptyName = new String[] {"name=testName", " =rubbish"};
    descriptor = new DescriptorSupport(notEmptyName);
    assertTrue("Should be two fields", descriptor.getFields().length == 2);
    assertEquals("testName", descriptor.getFieldValue("name"));
    assertEquals("rubbish", descriptor.getFieldValue(" "));
    assertFalse("Should not be valid", descriptor.isValid());
  }
  public void testClone() throws Exception {
    String[] names = new String[] {"name", "descriptorType"};
    Object[] values = new Object[] {"testName", "testType"};
    DescriptorSupport descriptor = new DescriptorSupport(names, values);

    DescriptorSupport clone = (DescriptorSupport) descriptor.clone();
    compareFields(descriptor.getFields(), clone.getFields());
  }
  public void testCopyConstructor() throws Exception {
    DescriptorSupport descriptor = new DescriptorSupport((DescriptorSupport) null);
    assertTrue("Should be empty", descriptor.getFields().length == 0);
    assertFalse("Should not be valid", descriptor.isValid());

    descriptor = new DescriptorSupport(descriptor);
    assertTrue("Should be empty", descriptor.getFields().length == 0);
    assertFalse("Should not be valid", descriptor.isValid());

    descriptor.setField("name", "testName");
    descriptor.setField("descriptorType", "testType");
    descriptor = new DescriptorSupport(descriptor);
    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());
  }
  public void testSizeConstructor() throws Exception {
    DescriptorSupport descriptor = new DescriptorSupport(100);
    assertTrue("Should be empty", descriptor.getFields().length == 0);
    assertFalse("Should not be valid", descriptor.isValid());

    boolean caught = false;
    try {
      descriptor = new DescriptorSupport(-1);
    } catch (RuntimeOperationsException e) {
      caught = true;
    }
    assertTrue("Expected an exception for a negative size", caught);
  }
 public void testNameEqualsValueConstructorError() throws Exception {
   try {
     String[] fields = new String[] {"name=testName", "descriptorType=testType", "another="};
     DescriptorSupport descriptor = new DescriptorSupport(fields);
     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());
   } catch (Exception e) {
     fail("FAILS IN RI: 'another=' should be valid according to the javadoc " + e.toString());
   }
 }
  public void testSerialization() throws Exception {
    String[] names = new String[] {"name", "descriptorType"};
    Object[] values = new Object[] {"testName", "testType"};
    DescriptorSupport descriptor = new DescriptorSupport(names, values);

    // Serialize it
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(baos);
    oos.writeObject(descriptor);

    // Deserialize it
    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
    ObjectInputStream ois = new ObjectInputStream(bais);
    Object result = ois.readObject();

    compareFields(descriptor.getFields(), ((DescriptorSupport) result).getFields());
  }
  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());
  }
 public void testDefaultConstructor() throws Exception {
   DescriptorSupport descriptor = new DescriptorSupport();
   assertTrue("Should be empty", descriptor.getFields().length == 0);
   assertFalse("Should not be valid", descriptor.isValid());
 }
Example #10
0
 public void testGetFields() throws Exception {
   String[] fields = new String[] {"name=testName", "descriptorType=testType"};
   DescriptorSupport descriptor = new DescriptorSupport(fields);
   String[] getFields = descriptor.getFields();
   compareFields(fields, getFields);
 }