@Test
  public void testEquals() {

    MetacardTypeImpl metacardType1 = generateMetacardType("metacardType", 0);

    MetacardTypeImpl metacardType2 = generateMetacardType("metacardType", 0);

    assertTrue(metacardType1.equals(metacardType2));
    assertTrue(metacardType2.equals(metacardType1));
  }
  @Test
  public void testEquals_NullDescriptors() {

    MetacardTypeImpl metacardType1 = generateMetacardType("name", 2);

    MetacardTypeImpl metacardType2 = generateMetacardType("name", 2);

    assertTrue(metacardType1.equals(metacardType2));
    assertTrue(metacardType2.equals(metacardType1));
  }
  @Test
  public void testEquals_DifferentNames() {

    MetacardTypeImpl metacardType1 = generateMetacardType("differentName", 0);

    MetacardTypeImpl metacardType2 = generateMetacardType("metacardType", 0);

    assertTrue(!metacardType1.equals(metacardType2));
    assertTrue(!metacardType2.equals(metacardType1));
  }
  @Test
  public void testEquals_SubClass() {
    HashSet<AttributeDescriptor> descriptors = new HashSet<AttributeDescriptor>();
    descriptors.add(
        new AttributeDescriptorImpl("id", true, true, false, false, BasicTypes.STRING_TYPE));
    descriptors.add(
        new AttributeDescriptorImpl("title", true, true, false, false, BasicTypes.STRING_TYPE));
    descriptors.add(
        new AttributeDescriptorImpl("frequency", true, true, false, false, BasicTypes.DOUBLE_TYPE));
    MetacardTypeImplExtended extendedMetacardType =
        new MetacardTypeImplExtended(
            "metacard-type-extended", descriptors, "description of metacard type extended");

    MetacardTypeImpl metacardType = generateMetacardType("metacard-type-extended", 0);

    assertTrue(extendedMetacardType.equals(metacardType));
    assertTrue(metacardType.equals(extendedMetacardType));
  }
  @Test
  public void testSerializationNullDescriptors() throws IOException, ClassNotFoundException {
    MetacardTypeImpl metacardType = new MetacardTypeImpl("basic", null);

    String fileLocation = "target/metacardType.ser";

    Serializer<MetacardType> serializer = new Serializer<MetacardType>();

    serializer.serialize(metacardType, fileLocation);

    MetacardType readMetacardType = serializer.deserialize(fileLocation);

    assertEquals(metacardType.getName(), readMetacardType.getName());

    Set<AttributeDescriptor> oldAd = metacardType.getAttributeDescriptors();
    Set<AttributeDescriptor> newAd = readMetacardType.getAttributeDescriptors();

    assertTrue(oldAd.isEmpty());
    assertTrue(newAd.isEmpty());
  }
  @Test
  public void testSerializationSingle() throws IOException, ClassNotFoundException {

    HashSet<AttributeDescriptor> descriptors = new HashSet<AttributeDescriptor>();

    descriptors.add(
        new AttributeDescriptorImpl("id", true, true, false, false, BasicTypes.STRING_TYPE));

    MetacardTypeImpl metacardType = new MetacardTypeImpl("basic", descriptors);

    String fileLocation = "target/metacardType.ser";

    Serializer<MetacardType> serializer = new Serializer<MetacardType>();

    serializer.serialize(metacardType, fileLocation);

    MetacardType readMetacardType = serializer.deserialize(fileLocation);

    assertEquals(metacardType.getName(), readMetacardType.getName());

    assertEquals(
        metacardType.getAttributeDescriptor("id").getName(),
        readMetacardType.getAttributeDescriptor("id").getName());

    assertEquals(
        metacardType.getAttributeDescriptor("id").getType().getBinding(),
        readMetacardType.getAttributeDescriptor("id").getType().getBinding());

    assertEquals(
        metacardType.getAttributeDescriptor("id").getType().getAttributeFormat(),
        readMetacardType.getAttributeDescriptor("id").getType().getAttributeFormat());

    Set<AttributeDescriptor> oldAd = metacardType.getAttributeDescriptors();
    Set<AttributeDescriptor> newAd = readMetacardType.getAttributeDescriptors();

    assertTrue(oldAd.iterator().next().equals(newAd.iterator().next()));
  }