public void attrInfo(
AttributeValue att, ChangeNumber deleteTime, ChangeNumber updateTime)
throws Exception
{
// Create an empty AttrInfo
AttrHistoricalMultiple attrInfo1 = new AttrHistoricalMultiple();
// Check add(AttributeValue val, ChangeNumber CN)
attrInfo1.add(att, updateTime);
ArrayList<AttrValueHistorical> values1 = attrInfo1.getValuesHistorical();
assertTrue(values1.size() == 1);
AttrValueHistorical valueInfo1 = new AttrValueHistorical(att, updateTime, null);
assertTrue(values1.get(0).equals(valueInfo1));
// Check constructor with parameter
AttrValueHistorical valueInfo2 = new AttrValueHistorical(att, updateTime, deleteTime);
ArrayList<AttrValueHistorical> values = new ArrayList<AttrValueHistorical>();
values.add(valueInfo2);
AttrHistoricalMultiple attrInfo2 = new AttrHistoricalMultiple(deleteTime, updateTime, values);
// Check equality
//assertTrue(attrInfo1.getDeleteTime().compareTo(attrInfo2.getDeleteTime())==0);
// Check constructor with time parameter and not Value
AttrHistoricalMultiple attrInfo3 = new AttrHistoricalMultiple(deleteTime, updateTime, null);
attrInfo3.add(att, updateTime);
ArrayList<AttrValueHistorical> values3 = attrInfo3.getValuesHistorical();
assertTrue(values3.size() == 1);
valueInfo1 = new AttrValueHistorical(att, updateTime, null);
assertTrue(values3.get(0).equals(valueInfo1));
// Check duplicate
AttrHistoricalMultiple attrInfo4 = attrInfo3.duplicate();
ArrayList<AttrValueHistorical> values4 = attrInfo4.getValuesHistorical();
assertTrue(attrInfo4.getDeleteTime().compareTo(attrInfo3.getDeleteTime())==0);
assertEquals(values4.size(), values3.size());
// Check delete(AttributeValue val, ChangeNumber CN)
attrInfo4.delete(att, updateTime);
assertTrue(attrInfo4.getValuesHistorical().size() == 1);
// Check delete(LinkedHashSet<AttributeValue> values, ChangeNumber CN)
AttributeType type = DirectoryServer.getAttributeType("description");
attrInfo3.delete(Attributes.create(type, att), updateTime) ;
assertTrue(attrInfo3.getValuesHistorical().size() == 1);