mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Ludovic Poitou
14.52.2010 72650d4cc41c64136d064967d7fec3726d850fee
sdk/tests/unit-tests-testng/src/org/opends/sdk/LinkedAttributeTestCase.java
@@ -29,6 +29,11 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.NoSuchElementException;
import org.opends.sdk.schema.Schema;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -66,4 +71,416 @@
    Assert.assertTrue(attribute.remove(ByteString.valueOf("another value")));
    Assert.assertEquals(attribute.size(), 0);
  }
  @Test
  public void testAdd()
  {
    Attribute a = new LinkedAttribute("test");
    Assert.assertTrue(a.add(ByteString.valueOf("value1")));
    Assert.assertFalse(a.add(ByteString.valueOf("value1")));
    Assert.assertTrue(a.add(ByteString.valueOf("value2")));
    Assert.assertFalse(a.add(ByteString.valueOf("value2")));
    Assert.assertTrue(a.add(ByteString.valueOf("value3")));
    Assert.assertFalse(a.add(ByteString.valueOf("value3")));
    Assert.assertEquals(a.size(), 3);
    Iterator<ByteString> i = a.iterator();
    Assert.assertEquals(i.next(), ByteString.valueOf("value1"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value2"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value3"));
    Assert.assertFalse(i.hasNext());
  }
  @Test
  public void testAddAll()
  {
    // addAll to an empty attribute.
    Attribute a = new LinkedAttribute("test");
    Assert.assertFalse(a.addAll(Collections.<ByteString> emptyList(), null));
    Iterator<ByteString> i = a.iterator();
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test");
    Assert.assertTrue(a.addAll(Arrays.asList(ByteString.valueOf("value1")),
        null));
    i = a.iterator();
    Assert.assertEquals(i.next(), ByteString.valueOf("value1"));
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test");
    Assert.assertTrue(a.addAll(
        Arrays.asList(ByteString.valueOf("value1"),
            ByteString.valueOf("value2")), null));
    i = a.iterator();
    Assert.assertEquals(i.next(), ByteString.valueOf("value1"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value2"));
    Assert.assertFalse(i.hasNext());
    // addAll to a single-valued attribute.
    a = new LinkedAttribute("test", ByteString.valueOf("value1"));
    Assert.assertFalse(a.addAll(Collections.<ByteString> emptyList(), null));
    i = a.iterator();
    Assert.assertEquals(i.next(), ByteString.valueOf("value1"));
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test", ByteString.valueOf("value1"));
    Assert.assertTrue(a.addAll(Arrays.asList(ByteString.valueOf("value2")),
        null));
    i = a.iterator();
    Assert.assertEquals(i.next(), ByteString.valueOf("value1"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value2"));
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test", ByteString.valueOf("value1"));
    Assert.assertTrue(a.addAll(
        Arrays.asList(ByteString.valueOf("value2"),
            ByteString.valueOf("value3")), null));
    i = a.iterator();
    Assert.assertEquals(i.next(), ByteString.valueOf("value1"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value2"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value3"));
    Assert.assertFalse(i.hasNext());
    // addAll to a multi-valued attribute.
    a = new LinkedAttribute("test", ByteString.valueOf("value1"),
        ByteString.valueOf("value2"));
    Assert.assertFalse(a.addAll(Collections.<ByteString> emptyList(), null));
    i = a.iterator();
    Assert.assertEquals(i.next(), ByteString.valueOf("value1"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value2"));
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test", ByteString.valueOf("value1"),
        ByteString.valueOf("value2"));
    Assert.assertTrue(a.addAll(Arrays.asList(ByteString.valueOf("value3")),
        null));
    i = a.iterator();
    Assert.assertEquals(i.next(), ByteString.valueOf("value1"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value2"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value3"));
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test", ByteString.valueOf("value1"),
        ByteString.valueOf("value2"));
    Assert.assertTrue(a.addAll(
        Arrays.asList(ByteString.valueOf("value3"),
            ByteString.valueOf("value4")), null));
    i = a.iterator();
    Assert.assertEquals(i.next(), ByteString.valueOf("value1"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value2"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value3"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value4"));
    Assert.assertFalse(i.hasNext());
  }
  @Test
  public void testClear()
  {
    Attribute a = new LinkedAttribute("test");
    Assert.assertTrue(a.isEmpty());
    Assert.assertEquals(a.size(), 0);
    a.clear();
    Assert.assertTrue(a.isEmpty());
    Assert.assertEquals(a.size(), 0);
    a.add(ByteString.valueOf("value1"));
    Assert.assertFalse(a.isEmpty());
    Assert.assertEquals(a.size(), 1);
    a.clear();
    Assert.assertTrue(a.isEmpty());
    Assert.assertEquals(a.size(), 0);
    a.add(ByteString.valueOf("value1"));
    a.add(ByteString.valueOf("value2"));
    Assert.assertFalse(a.isEmpty());
    Assert.assertEquals(a.size(), 2);
    a.clear();
    Assert.assertTrue(a.isEmpty());
    Assert.assertEquals(a.size(), 0);
    a.add(ByteString.valueOf("value1"));
    a.add(ByteString.valueOf("value2"));
    a.add(ByteString.valueOf("value3"));
    Assert.assertFalse(a.isEmpty());
    Assert.assertEquals(a.size(), 3);
    a.clear();
    Assert.assertTrue(a.isEmpty());
    Assert.assertEquals(a.size(), 0);
  }
  @Test
  public void testContains()
  {
    Attribute a = new LinkedAttribute("test");
    Assert.assertFalse(a.contains(ByteString.valueOf("value4")));
    a.add(ByteString.valueOf("value1"));
    Assert.assertTrue(a.contains(ByteString.valueOf("value1")));
    Assert.assertFalse(a.contains(ByteString.valueOf("value4")));
    a.add(ByteString.valueOf("value2"));
    Assert.assertTrue(a.contains(ByteString.valueOf("value1")));
    Assert.assertTrue(a.contains(ByteString.valueOf("value2")));
    Assert.assertFalse(a.contains(ByteString.valueOf("value4")));
    a.add(ByteString.valueOf("value3"));
    Assert.assertTrue(a.contains(ByteString.valueOf("value1")));
    Assert.assertTrue(a.contains(ByteString.valueOf("value2")));
    Assert.assertTrue(a.contains(ByteString.valueOf("value3")));
    Assert.assertFalse(a.contains(ByteString.valueOf("value4")));
  }
  @Test
  public void testContainsAll()
  {
    Attribute a = new LinkedAttribute("test");
    Assert.assertTrue(a.containsAll(Collections.<ByteString> emptyList()));
    Assert
        .assertFalse(a.containsAll(Arrays.asList(ByteString.valueOf("value1"))));
    Assert.assertFalse(a.containsAll(Arrays.asList(
        ByteString.valueOf("value1"), ByteString.valueOf("value2"))));
    Assert.assertFalse(a.containsAll(Arrays.asList(
        ByteString.valueOf("value1"), ByteString.valueOf("value2"),
        ByteString.valueOf("value3"))));
    a.add(ByteString.valueOf("value1"));
    Assert.assertTrue(a.containsAll(Collections.<ByteString> emptyList()));
    Assert
        .assertTrue(a.containsAll(Arrays.asList(ByteString.valueOf("value1"))));
    Assert.assertFalse(a.containsAll(Arrays.asList(
        ByteString.valueOf("value1"), ByteString.valueOf("value2"))));
    Assert.assertFalse(a.containsAll(Arrays.asList(
        ByteString.valueOf("value1"), ByteString.valueOf("value2"),
        ByteString.valueOf("value3"))));
    a.add(ByteString.valueOf("value2"));
    Assert.assertTrue(a.containsAll(Collections.<ByteString> emptyList()));
    Assert
        .assertTrue(a.containsAll(Arrays.asList(ByteString.valueOf("value1"))));
    Assert.assertTrue(a.containsAll(Arrays.asList(ByteString.valueOf("value1"),
        ByteString.valueOf("value2"))));
    Assert.assertFalse(a.containsAll(Arrays.asList(
        ByteString.valueOf("value1"), ByteString.valueOf("value2"),
        ByteString.valueOf("value3"))));
  }
  @Test
  public void testFirstValue()
  {
    Attribute a = new LinkedAttribute("test");
    try
    {
      a.firstValue();
      Assert.fail("Expected NoSuchElementException");
    }
    catch (NoSuchElementException e)
    {
      // Expected.
    }
    a = new LinkedAttribute("test", ByteString.valueOf("value1"));
    Assert.assertEquals(a.firstValue(), ByteString.valueOf("value1"));
    a = new LinkedAttribute("test", ByteString.valueOf("value1"),
        ByteString.valueOf("value2"));
    Assert.assertEquals(a.firstValue(), ByteString.valueOf("value1"));
    a = new LinkedAttribute("test", ByteString.valueOf("value2"),
        ByteString.valueOf("value1"));
    Assert.assertEquals(a.firstValue(), ByteString.valueOf("value2"));
  }
  @Test
  public void testGetAttributeDescription()
  {
    AttributeDescription ad = AttributeDescription.valueOf("test");
    Attribute a = new LinkedAttribute(ad);
    Assert.assertEquals(a.getAttributeDescription(), ad);
  }
  @Test
  public void testIterator()
  {
    Attribute a = new LinkedAttribute("test");
    Iterator<ByteString> i = a.iterator();
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test", ByteString.valueOf("value1"));
    i = a.iterator();
    Assert.assertTrue(i.hasNext());
    Assert.assertEquals(i.next(), ByteString.valueOf("value1"));
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test", ByteString.valueOf("value1"),
        ByteString.valueOf("value2"));
    i = a.iterator();
    Assert.assertTrue(i.hasNext());
    Assert.assertEquals(i.next(), ByteString.valueOf("value1"));
    Assert.assertTrue(i.hasNext());
    Assert.assertEquals(i.next(), ByteString.valueOf("value2"));
    Assert.assertFalse(i.hasNext());
  }
  @Test
  public void testRemove()
  {
    Attribute a = new LinkedAttribute("test");
    Assert.assertFalse(a.remove(ByteString.valueOf("value1")));
    Iterator<ByteString> i = a.iterator();
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test", ByteString.valueOf("value1"));
    Assert.assertFalse(a.remove(ByteString.valueOf("value2")));
    i = a.iterator();
    Assert.assertTrue(i.hasNext());
    Assert.assertEquals(i.next(), ByteString.valueOf("value1"));
    Assert.assertFalse(i.hasNext());
    Assert.assertTrue(a.remove(ByteString.valueOf("value1")));
    i = a.iterator();
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test", ByteString.valueOf("value1"),
        ByteString.valueOf("value2"));
    Assert.assertFalse(a.remove(ByteString.valueOf("value3")));
    i = a.iterator();
    Assert.assertTrue(i.hasNext());
    Assert.assertEquals(i.next(), ByteString.valueOf("value1"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value2"));
    Assert.assertFalse(i.hasNext());
    Assert.assertTrue(a.remove(ByteString.valueOf("value1")));
    i = a.iterator();
    Assert.assertTrue(i.hasNext());
    Assert.assertEquals(i.next(), ByteString.valueOf("value2"));
    Assert.assertFalse(i.hasNext());
    Assert.assertTrue(a.remove(ByteString.valueOf("value2")));
    i = a.iterator();
    Assert.assertFalse(i.hasNext());
  }
  @Test
  public void testRemoveAll()
  {
    // removeAll from an empty attribute.
    Attribute a = new LinkedAttribute("test");
    Assert.assertFalse(a.removeAll(Collections.<ByteString> emptyList(), null));
    Iterator<ByteString> i = a.iterator();
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test");
    Assert.assertFalse(a.removeAll(Arrays.asList(ByteString.valueOf("value1")),
        null));
    i = a.iterator();
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test");
    Assert.assertFalse(a.removeAll(Arrays.asList(ByteString.valueOf("value1"),
        ByteString.valueOf("value2"))));
    i = a.iterator();
    Assert.assertFalse(i.hasNext());
    // removeAll from single-valued attribute.
    a = new LinkedAttribute("test", ByteString.valueOf("value1"));
    Assert.assertFalse(a.removeAll(Collections.<ByteString> emptyList(), null));
    i = a.iterator();
    Assert.assertTrue(i.hasNext());
    Assert.assertEquals(i.next(), ByteString.valueOf("value1"));
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test", ByteString.valueOf("value1"));
    Assert.assertTrue(a.removeAll(Arrays.asList(ByteString.valueOf("value1")),
        null));
    i = a.iterator();
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test", ByteString.valueOf("value1"));
    Assert.assertTrue(a.removeAll(Arrays.asList(ByteString.valueOf("value1"),
        ByteString.valueOf("value2"))));
    i = a.iterator();
    Assert.assertFalse(i.hasNext());
    // removeAll from multi-valued attribute.
    a = new LinkedAttribute("test", ByteString.valueOf("value1"),
        ByteString.valueOf("value2"), ByteString.valueOf("value3"),
        ByteString.valueOf("value4"));
    Assert.assertFalse(a.removeAll(Collections.<ByteString> emptyList(), null));
    i = a.iterator();
    Assert.assertTrue(i.hasNext());
    Assert.assertEquals(i.next(), ByteString.valueOf("value1"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value2"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value3"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value4"));
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test", ByteString.valueOf("value1"),
        ByteString.valueOf("value2"), ByteString.valueOf("value3"),
        ByteString.valueOf("value4"));
    Assert.assertTrue(a.removeAll(Arrays.asList(ByteString.valueOf("value1")),
        null));
    i = a.iterator();
    Assert.assertTrue(i.hasNext());
    Assert.assertEquals(i.next(), ByteString.valueOf("value2"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value3"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value4"));
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test", ByteString.valueOf("value1"),
        ByteString.valueOf("value2"), ByteString.valueOf("value3"),
        ByteString.valueOf("value4"));
    Assert.assertTrue(a.removeAll(
        Arrays.asList(ByteString.valueOf("value1"),
            ByteString.valueOf("value2")), null));
    i = a.iterator();
    Assert.assertTrue(i.hasNext());
    Assert.assertEquals(i.next(), ByteString.valueOf("value3"));
    Assert.assertEquals(i.next(), ByteString.valueOf("value4"));
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test", ByteString.valueOf("value1"),
        ByteString.valueOf("value2"), ByteString.valueOf("value3"),
        ByteString.valueOf("value4"));
    Assert.assertTrue(a.removeAll(
        Arrays.asList(ByteString.valueOf("value1"),
            ByteString.valueOf("value2"), ByteString.valueOf("value3")), null));
    i = a.iterator();
    Assert.assertTrue(i.hasNext());
    Assert.assertEquals(i.next(), ByteString.valueOf("value4"));
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test", ByteString.valueOf("value1"),
        ByteString.valueOf("value2"), ByteString.valueOf("value3"),
        ByteString.valueOf("value4"));
    Assert.assertTrue(a.removeAll(Arrays.asList(ByteString.valueOf("value1"),
        ByteString.valueOf("value2"), ByteString.valueOf("value3"),
        ByteString.valueOf("value4")), null));
    i = a.iterator();
    Assert.assertFalse(i.hasNext());
    a = new LinkedAttribute("test", ByteString.valueOf("value1"),
        ByteString.valueOf("value2"), ByteString.valueOf("value3"),
        ByteString.valueOf("value4"));
    Assert.assertTrue(a.removeAll(Arrays.asList(ByteString.valueOf("value1"),
        ByteString.valueOf("value2"), ByteString.valueOf("value3"),
        ByteString.valueOf("value4"), ByteString.valueOf("value5")), null));
    i = a.iterator();
    Assert.assertFalse(i.hasNext());
  }
}