private void executeEscapeTest(String aValue, String aExpectedVal) {
    String name = "AttrName";
    StorageAttribute sa = new StorageAttribute(name, aValue, StorageAttribute.INT_TYPE);

    try {
      assertTrue(name.equals(sa.getName()));
      assertTrue(sa.getEscapedValue().equals(aExpectedVal));
    } catch (StorageException se) {
      assertTrue("Escape fail: " + se.getMessage() + "Val: '" + aValue + "'", false);
    }
  }
  /**
   * Test toString method. 1. Test with Name, Value and Type. 2. Test value null. 3. Test value "".
   */
  public void testtoString() {
    try {
      // 1. Test with Name, Value and Type.
      String name = "AttrName";
      String value = "AttrValue";
      StorageAttribute sa = new StorageAttribute(name, value, StorageAttribute.INT_TYPE);

      String refString = "AttrName='AttrValue' Type: 1";
      assertTrue(sa.toString().equals(refString));

      // 2. Test value null
      value = null;
      sa.setAttribute(name, value, StorageAttribute.NULL_TYPE);
      refString = "AttrName='NULL' Type: 3";
      assertTrue(sa.toString().equals(refString));

      // 3. Test value empty
      value = "";
      sa.setAttribute(name, value, StorageAttribute.INT_TYPE);

      refString = "AttrName='' Type: 1";
      assertTrue(sa.toString().equals(refString));
    } catch (Throwable t) {
      assertTrue("Unexpected exp: " + t.toString(), false);
    }
  }
  /**
   * Test constructor with name, value and type. 1. Test with Name, Value and Type. 2. Test Name
   * null throws StorageException 3. Test Name "" throws StorageException 4. Test value null. If
   * value is not set null is returned. 5. Test value "". 6. Test TYPE is set. 7. Test one len
   * arguments. 8. Test not supported type throws StorageException.
   */
  public void testNameValueTypeConstructor() {
    StorageAttribute sa = null;

    // 1. Test with Name, Value and Type.
    try {
      String name = "AttrName";
      String value = "AttrValue";
      sa = new StorageAttribute(name, value, StorageAttribute.INT_TYPE);

      assertTrue(name.equals(sa.getName()));
      assertTrue(value.equals(sa.getValue()));
      assertTrue(sa.getType() == StorageAttribute.INT_TYPE);
    } catch (StorageException se) {
      assertTrue("Attribute creation failed: " + se.getMessage(), false);
    }

    // 2. Test null name
    try {
      String name = null;
      String value = "AttrValue";
      sa = new StorageAttribute(name, value, StorageAttribute.INT_TYPE);

      assertTrue("Null name does not throw exception", false);
    } catch (StorageException se) {
      // PASSED
    }

    // 3. Test empty name
    try {
      String name = "";
      String value = "AttrValue";
      sa = new StorageAttribute(name, value, StorageAttribute.INT_TYPE);

      assertTrue("Empty name does not throw exception", false);
    } catch (StorageException se) {
      // PASSED
    }

    // 4. Test null value.
    try {
      String name = "AttrName";
      String value = null;
      sa = new StorageAttribute(name, value, StorageAttribute.NULL_TYPE);

      assertTrue(name.equals(sa.getName()));
      assertTrue(sa.getValue() == null);
      assertTrue(sa.getType() == StorageAttribute.NULL_TYPE);
    } catch (StorageException se) {
      assertTrue("Attribute creation failed: " + se.getMessage(), false);
    }

    // 5. Test empty value
    try {
      String name = "AttrName";
      String value = "";
      sa = new StorageAttribute(name, value, StorageAttribute.STRING_TYPE);

      assertTrue(name.equals(sa.getName()));
      assertTrue(sa.getValue() == "");
      assertTrue(sa.getType() == StorageAttribute.STRING_TYPE);
    } catch (StorageException se) {
      assertTrue("Attribute creation failed: " + se.getMessage(), false);
    }

    // 6. and 7. Test one len arguments.
    try {
      String name = "A";
      String value = "V";
      sa = new StorageAttribute(name, value, StorageAttribute.STRING_TYPE);

      assertTrue(name.equals(sa.getName()));
      assertTrue(value.equals(sa.getValue()));
      // Default value is set if not defined.
      assertTrue(sa.getType() == StorageAttribute.STRING_TYPE);
    } catch (StorageException se) {
      assertTrue("Attribute creation failed: " + se.getMessage(), false);
    }

    // 8. Test not supported type throws StorageException.
    try {
      String name = NAME;
      String value = "AttrValue";
      sa = new StorageAttribute(name, value, 8);

      assertTrue("Not defined type do not throw exp", false);
    } catch (StorageException se) {
      // PASSED
    }
  }
  /**
   * Test constructor with name, value and type. Getters are used to verify values.
   *
   * <p>1. Test with Name, Value and Type. 2. Test Name null throws StorageException 3. Test Name ""
   * throws StorageException 4. Test value null. If value is not set null is returned. 5. Test value
   * "". 6. Test one len arguments.
   */
  public void testAttribute() {
    StorageAttribute sa = new StorageAttribute("N/A", "N/A");

    // 1. Test with Name, Value and Type.
    try {
      String name = "AttrName";
      String value = "AttrValue";
      sa.setAttribute(name, value, StorageAttribute.INT_TYPE);

      assertTrue(name.equals(sa.getName()));
      assertTrue(value.equals(sa.getValue()));
      assertTrue(sa.getType() == StorageAttribute.INT_TYPE);
    } catch (StorageException se) {
      assertTrue("Attribute set failed: " + se.getMessage(), false);
    }

    // 2. Test null name
    try {
      String name = null;
      String value = "AttrValue";
      sa.setAttribute(name, value, StorageAttribute.INT_TYPE);

      assertTrue("Null name does not throw exception", false);
    } catch (StorageException se) {
      // PASSED
    }

    // 3. Test empty name
    try {
      String name = "";
      String value = "AttrValue";
      sa.setAttribute(name, value, StorageAttribute.INT_TYPE);

      assertTrue("Empty name does not throw exception", false);
    } catch (StorageException se) {
      // PASSED
    }

    // 4. Test null value.
    try {
      String name = "AttrName";
      String value = null;
      sa.setAttribute(name, value, StorageAttribute.NULL_TYPE);

      assertTrue(name.equals(sa.getName()));
      assertTrue(sa.getValue() == null);
      assertTrue(sa.getType() == StorageAttribute.NULL_TYPE);
    } catch (StorageException se) {
      assertTrue("Attribute set failed: " + se.getMessage(), false);
    }

    // 5. Test empty value.
    try {
      String name = "AttrName";
      String value = "";
      sa.setAttribute(name, value, StorageAttribute.INT_TYPE);

      assertTrue(name.equals(sa.getName()));
      assertTrue(sa.getValue() == "");
      assertTrue(sa.getType() == StorageAttribute.INT_TYPE);
    } catch (StorageException se) {
      assertTrue("Attribute set failed: " + se.getMessage(), false);
    }

    // 6. Test one len arguments
    try {
      String name = "N";
      String value = "V";
      sa.setAttribute(name, value, StorageAttribute.STRING_TYPE);

      assertTrue(name.equals(sa.getName()));
      assertTrue(value.equals(sa.getValue()));
      assertTrue(sa.getType() == StorageAttribute.STRING_TYPE);
    } catch (StorageException se) {
      assertTrue("Attribute set failed: " + se.getMessage(), false);
    }
  }
  /**
   * Test constructor with name and value. 2. Test with Name and Value. 3. Test Name null throws
   * StorageException 4. Test Name "" throws StorageException 5. Test value null. It is allowed
   * value. 6. Test value "". 7. Test one len name and value. 8. Test value null, type STRING is
   * allowed.
   */
  public void testNameValueConstructor() {
    StorageAttribute sa = new StorageAttribute("N/A", "N/A");
    // 2. Test with Name and Value
    try {
      String name = "AttrName";
      String value = "AttrValue";
      sa = new StorageAttribute(name, value);

      assertTrue(name.equals(sa.getName()));
      assertTrue(value.equals(sa.getValue()));
      // Default value is set if not defined.
      assertTrue(sa.getType() == StorageAttribute.STRING_TYPE);
    } catch (StorageException se) {
      assertTrue("Attribute creation failed: " + se.getMessage(), false);
    }

    // 3. Test null name
    try {
      String name = null;
      String value = "AttrValue";
      sa = new StorageAttribute(name, value);

      assertTrue("Null name does not throw exception", false);
    } catch (StorageException se) {
      // PASSED
    }

    // 4. Test empty name
    try {
      String name = "";
      String value = "AttrValue";
      sa = new StorageAttribute(name, value);

      assertTrue("Empty name does not throw exception", false);
    } catch (StorageException se) {
      // PASSED
    }

    // 5. Test null value.
    try {
      String name = "AttrName";
      String value = null;
      sa = new StorageAttribute(name, value);
    } catch (StorageException se) {
      assertTrue("SE thrown when null value: " + se.toString(), false);
    } catch (Throwable t) {
      assertTrue("Wrong exp thrown: " + t.toString(), false);
    }

    // 6. Test empty value
    try {
      String name = "AttrName";
      String value = "";
      sa = new StorageAttribute(name, value);

      assertTrue(name.equals(sa.getName()));
      assertTrue(sa.getValue() == "");
      assertTrue(sa.getType() == StorageAttribute.STRING_TYPE);
    } catch (StorageException se) {
      assertTrue("Attribute creation failed: " + se.getMessage(), false);
    }

    // 7. Test one len arguments
    try {
      String name = "A";
      String value = "V";
      sa = new StorageAttribute(name, value);

      assertTrue(name.equals(sa.getName()));
      assertTrue(value.equals(sa.getValue()));
      // Default value is set if not defined.
      assertTrue(sa.getType() == StorageAttribute.STRING_TYPE);
    } catch (StorageException se) {
      assertTrue("Attribute creation failed: " + se.getMessage(), false);
    }

    // 8. Test value null, type STRING throws StorageException.
    try {
      String name = "A";
      String value = null;
      sa = new StorageAttribute(name, value);
    } catch (StorageException se) {
      assertTrue("SE thrown when null value: " + se.toString(), false);
    } catch (Throwable t) {
      assertTrue("Wrong exception thrown: " + t.toString(), false);
    }
  }