From 462801613746b7c9dab9bf3bc11dbaad1ae0175d Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Tue, 15 May 2012 11:06:53 +0000
Subject: [PATCH] Fix OPENDJ-495: Add support for AttributeDescription.withoutOption(String)
---
opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/AttributeDescriptionTestCase.java | 276 ++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 211 insertions(+), 65 deletions(-)
diff --git a/opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/AttributeDescriptionTestCase.java b/opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/AttributeDescriptionTestCase.java
index 83657c2..1f6d5b2 100644
--- a/opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/AttributeDescriptionTestCase.java
+++ b/opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/AttributeDescriptionTestCase.java
@@ -27,11 +27,15 @@
package org.forgerock.opendj.ldap;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertSame;
+import static org.testng.Assert.assertTrue;
+
import java.util.Iterator;
import org.forgerock.i18n.LocalizedIllegalArgumentException;
import org.forgerock.opendj.ldap.schema.Schema;
-import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
@@ -127,37 +131,36 @@
AttributeDescription.valueOf(ad2, Schema.getCoreSchema());
// Identity.
- Assert.assertTrue(attributeDescription1.equals(attributeDescription1));
- Assert.assertTrue(attributeDescription1.compareTo(attributeDescription1) == 0);
- Assert.assertTrue(attributeDescription1.isSubTypeOf(attributeDescription1));
- Assert.assertTrue(attributeDescription1.isSuperTypeOf(attributeDescription1));
+ assertTrue(attributeDescription1.equals(attributeDescription1));
+ assertTrue(attributeDescription1.compareTo(attributeDescription1) == 0);
+ assertTrue(attributeDescription1.isSubTypeOf(attributeDescription1));
+ assertTrue(attributeDescription1.isSuperTypeOf(attributeDescription1));
if (compare == 0) {
- Assert.assertTrue(attributeDescription1.equals(attributeDescription2));
- Assert.assertTrue(attributeDescription2.equals(attributeDescription1));
- Assert.assertTrue(attributeDescription1.compareTo(attributeDescription2) == 0);
- Assert.assertTrue(attributeDescription2.compareTo(attributeDescription1) == 0);
+ assertTrue(attributeDescription1.equals(attributeDescription2));
+ assertTrue(attributeDescription2.equals(attributeDescription1));
+ assertTrue(attributeDescription1.compareTo(attributeDescription2) == 0);
+ assertTrue(attributeDescription2.compareTo(attributeDescription1) == 0);
- Assert.assertTrue(attributeDescription1.isSubTypeOf(attributeDescription2));
- Assert.assertTrue(attributeDescription1.isSuperTypeOf(attributeDescription2));
- Assert.assertTrue(attributeDescription2.isSubTypeOf(attributeDescription1));
- Assert.assertTrue(attributeDescription2.isSuperTypeOf(attributeDescription1));
+ assertTrue(attributeDescription1.isSubTypeOf(attributeDescription2));
+ assertTrue(attributeDescription1.isSuperTypeOf(attributeDescription2));
+ assertTrue(attributeDescription2.isSubTypeOf(attributeDescription1));
+ assertTrue(attributeDescription2.isSuperTypeOf(attributeDescription1));
} else {
- Assert.assertFalse(attributeDescription1.equals(attributeDescription2));
- Assert.assertFalse(attributeDescription2.equals(attributeDescription1));
+ assertFalse(attributeDescription1.equals(attributeDescription2));
+ assertFalse(attributeDescription2.equals(attributeDescription1));
if (compare < 0) {
- Assert.assertTrue(attributeDescription1.compareTo(attributeDescription2) < 0);
- Assert.assertTrue(attributeDescription2.compareTo(attributeDescription1) > 0);
+ assertTrue(attributeDescription1.compareTo(attributeDescription2) < 0);
+ assertTrue(attributeDescription2.compareTo(attributeDescription1) > 0);
} else {
- Assert.assertTrue(attributeDescription1.compareTo(attributeDescription2) > 0);
- Assert.assertTrue(attributeDescription2.compareTo(attributeDescription1) < 0);
+ assertTrue(attributeDescription1.compareTo(attributeDescription2) > 0);
+ assertTrue(attributeDescription2.compareTo(attributeDescription1) < 0);
}
- Assert.assertEquals(attributeDescription1.isSubTypeOf(attributeDescription2), isSubType);
+ assertEquals(attributeDescription1.isSubTypeOf(attributeDescription2), isSubType);
- Assert.assertEquals(attributeDescription1.isSuperTypeOf(attributeDescription2),
- isSuperType);
+ assertEquals(attributeDescription1.isSuperTypeOf(attributeDescription2), isSuperType);
}
}
@@ -171,37 +174,36 @@
AttributeDescription.valueOf(ad2, Schema.getEmptySchema());
// Identity.
- Assert.assertTrue(attributeDescription1.equals(attributeDescription1));
- Assert.assertTrue(attributeDescription1.compareTo(attributeDescription1) == 0);
- Assert.assertTrue(attributeDescription1.isSubTypeOf(attributeDescription1));
- Assert.assertTrue(attributeDescription1.isSuperTypeOf(attributeDescription1));
+ assertTrue(attributeDescription1.equals(attributeDescription1));
+ assertTrue(attributeDescription1.compareTo(attributeDescription1) == 0);
+ assertTrue(attributeDescription1.isSubTypeOf(attributeDescription1));
+ assertTrue(attributeDescription1.isSuperTypeOf(attributeDescription1));
if (compare == 0) {
- Assert.assertTrue(attributeDescription1.equals(attributeDescription2));
- Assert.assertTrue(attributeDescription2.equals(attributeDescription1));
- Assert.assertTrue(attributeDescription1.compareTo(attributeDescription2) == 0);
- Assert.assertTrue(attributeDescription2.compareTo(attributeDescription1) == 0);
+ assertTrue(attributeDescription1.equals(attributeDescription2));
+ assertTrue(attributeDescription2.equals(attributeDescription1));
+ assertTrue(attributeDescription1.compareTo(attributeDescription2) == 0);
+ assertTrue(attributeDescription2.compareTo(attributeDescription1) == 0);
- Assert.assertTrue(attributeDescription1.isSubTypeOf(attributeDescription2));
- Assert.assertTrue(attributeDescription1.isSuperTypeOf(attributeDescription2));
- Assert.assertTrue(attributeDescription2.isSubTypeOf(attributeDescription1));
- Assert.assertTrue(attributeDescription2.isSuperTypeOf(attributeDescription1));
+ assertTrue(attributeDescription1.isSubTypeOf(attributeDescription2));
+ assertTrue(attributeDescription1.isSuperTypeOf(attributeDescription2));
+ assertTrue(attributeDescription2.isSubTypeOf(attributeDescription1));
+ assertTrue(attributeDescription2.isSuperTypeOf(attributeDescription1));
} else {
- Assert.assertFalse(attributeDescription1.equals(attributeDescription2));
- Assert.assertFalse(attributeDescription2.equals(attributeDescription1));
+ assertFalse(attributeDescription1.equals(attributeDescription2));
+ assertFalse(attributeDescription2.equals(attributeDescription1));
if (compare < 0) {
- Assert.assertTrue(attributeDescription1.compareTo(attributeDescription2) < 0);
- Assert.assertTrue(attributeDescription2.compareTo(attributeDescription1) > 0);
+ assertTrue(attributeDescription1.compareTo(attributeDescription2) < 0);
+ assertTrue(attributeDescription2.compareTo(attributeDescription1) > 0);
} else {
- Assert.assertTrue(attributeDescription1.compareTo(attributeDescription2) > 0);
- Assert.assertTrue(attributeDescription2.compareTo(attributeDescription1) < 0);
+ assertTrue(attributeDescription1.compareTo(attributeDescription2) > 0);
+ assertTrue(attributeDescription2.compareTo(attributeDescription1) < 0);
}
- Assert.assertEquals(attributeDescription1.isSubTypeOf(attributeDescription2), isSubType);
+ assertEquals(attributeDescription1.isSubTypeOf(attributeDescription2), isSubType);
- Assert.assertEquals(attributeDescription1.isSuperTypeOf(attributeDescription2),
- isSuperType);
+ assertEquals(attributeDescription1.isSuperTypeOf(attributeDescription2), isSuperType);
}
}
@@ -210,17 +212,17 @@
final AttributeDescription attributeDescription =
AttributeDescription.valueOf(ad, Schema.getCoreSchema());
- Assert.assertEquals(attributeDescription.toString(), ad);
+ assertEquals(attributeDescription.toString(), ad);
- Assert.assertEquals(attributeDescription.getAttributeType().getNameOrOID(), at);
+ assertEquals(attributeDescription.getAttributeType().getNameOrOID(), at);
- Assert.assertEquals(attributeDescription.isObjectClass(), isObjectClass);
+ assertEquals(attributeDescription.isObjectClass(), isObjectClass);
- Assert.assertFalse(attributeDescription.hasOptions());
- Assert.assertFalse(attributeDescription.containsOption("dummy"));
+ assertFalse(attributeDescription.hasOptions());
+ assertFalse(attributeDescription.containsOption("dummy"));
final Iterator<String> iterator = attributeDescription.getOptions().iterator();
- Assert.assertFalse(iterator.hasNext());
+ assertFalse(iterator.hasNext());
}
// FIXME: none of these pass! The valueOf method is far to lenient.
@@ -236,38 +238,182 @@
final AttributeDescription attributeDescription =
AttributeDescription.valueOf(ad, Schema.getEmptySchema());
- Assert.assertEquals(attributeDescription.toString(), ad);
+ assertEquals(attributeDescription.toString(), ad);
- Assert.assertEquals(attributeDescription.getAttributeType().getNameOrOID(), at);
+ assertEquals(attributeDescription.getAttributeType().getNameOrOID(), at);
- Assert.assertFalse(attributeDescription.isObjectClass());
+ assertFalse(attributeDescription.isObjectClass());
if (options.length == 0) {
- Assert.assertFalse(attributeDescription.hasOptions());
+ assertFalse(attributeDescription.hasOptions());
} else {
- Assert.assertTrue(attributeDescription.hasOptions());
+ assertTrue(attributeDescription.hasOptions());
}
- Assert.assertFalse(attributeDescription.containsOption("dummy"));
+ assertFalse(attributeDescription.containsOption("dummy"));
if (containsFoo) {
- Assert.assertTrue(attributeDescription.containsOption("foo"));
- Assert.assertTrue(attributeDescription.containsOption("FOO"));
- Assert.assertTrue(attributeDescription.containsOption("FoO"));
+ assertTrue(attributeDescription.containsOption("foo"));
+ assertTrue(attributeDescription.containsOption("FOO"));
+ assertTrue(attributeDescription.containsOption("FoO"));
} else {
- Assert.assertFalse(attributeDescription.containsOption("foo"));
- Assert.assertFalse(attributeDescription.containsOption("FOO"));
- Assert.assertFalse(attributeDescription.containsOption("FoO"));
+ assertFalse(attributeDescription.containsOption("foo"));
+ assertFalse(attributeDescription.containsOption("FOO"));
+ assertFalse(attributeDescription.containsOption("FoO"));
}
for (final String option : options) {
- Assert.assertTrue(attributeDescription.containsOption(option));
+ assertTrue(attributeDescription.containsOption(option));
}
final Iterator<String> iterator = attributeDescription.getOptions().iterator();
for (final String option : options) {
- Assert.assertTrue(iterator.hasNext());
- Assert.assertEquals(iterator.next(), option);
+ assertTrue(iterator.hasNext());
+ assertEquals(iterator.next(), option);
}
- Assert.assertFalse(iterator.hasNext());
+ assertFalse(iterator.hasNext());
}
+
+ @Test
+ public void testWithOptionAddFirstOption() {
+ AttributeDescription ad1 = AttributeDescription.valueOf("cn");
+ AttributeDescription ad2 = ad1.withOption("test");
+ assertTrue(ad2.hasOptions());
+ assertTrue(ad2.containsOption("test"));
+ assertFalse(ad2.containsOption("dummy"));
+ assertEquals(ad2.toString(), "cn;test");
+ assertEquals(ad2.getOptions().iterator().next(), "test");
+ }
+
+ @Test
+ public void testWithOptionAddExistingFirstOption() {
+ AttributeDescription ad1 = AttributeDescription.valueOf("cn;test");
+ AttributeDescription ad2 = ad1.withOption("test");
+ assertSame(ad1, ad2);
+ }
+
+ @Test
+ public void testWithOptionAddSecondOption() {
+ AttributeDescription ad1 = AttributeDescription.valueOf("cn;test1");
+ AttributeDescription ad2 = ad1.withOption("test2");
+ assertTrue(ad2.hasOptions());
+ assertTrue(ad2.containsOption("test1"));
+ assertTrue(ad2.containsOption("test2"));
+ assertFalse(ad2.containsOption("dummy"));
+ assertEquals(ad2.toString(), "cn;test1;test2");
+ Iterator<String> i = ad2.getOptions().iterator();
+ assertEquals(i.next(), "test1");
+ assertEquals(i.next(), "test2");
+ }
+
+ @Test
+ public void testWithOptionAddExistingSecondOption() {
+ AttributeDescription ad1 = AttributeDescription.valueOf("cn;test1;test2");
+ AttributeDescription ad2 = ad1.withOption("test1");
+ AttributeDescription ad3 = ad1.withOption("test2");
+ assertSame(ad1, ad2);
+ assertSame(ad1, ad3);
+ }
+
+ @Test
+ public void testWithoutOptionEmpty() {
+ AttributeDescription ad1 = AttributeDescription.valueOf("cn");
+ AttributeDescription ad2 = ad1.withoutOption("test");
+ assertSame(ad1, ad2);
+ }
+
+ @Test
+ public void testWithoutOptionFirstOption() {
+ AttributeDescription ad1 = AttributeDescription.valueOf("cn;test");
+ AttributeDescription ad2 = ad1.withoutOption("test");
+ assertFalse(ad2.hasOptions());
+ assertFalse(ad2.containsOption("test"));
+ assertEquals(ad2.toString(), "cn");
+ assertFalse(ad2.getOptions().iterator().hasNext());
+ }
+
+ @Test
+ public void testWithoutOptionFirstOptionMissing() {
+ AttributeDescription ad1 = AttributeDescription.valueOf("cn;test");
+ AttributeDescription ad2 = ad1.withoutOption("dummy");
+ assertSame(ad1, ad2);
+ }
+
+ @Test
+ public void testWithoutOptionSecondOption1() {
+ AttributeDescription ad1 = AttributeDescription.valueOf("cn;test1;test2");
+ AttributeDescription ad2 = ad1.withoutOption("test1");
+ assertTrue(ad2.hasOptions());
+ assertFalse(ad2.containsOption("test1"));
+ assertTrue(ad2.containsOption("test2"));
+ assertEquals(ad2.toString(), "cn;test2");
+ assertEquals(ad2.getOptions().iterator().next(), "test2");
+ }
+
+ @Test
+ public void testWithoutOptionSecondOption2() {
+ AttributeDescription ad1 = AttributeDescription.valueOf("cn;test1;test2");
+ AttributeDescription ad2 = ad1.withoutOption("test2");
+ assertTrue(ad2.hasOptions());
+ assertTrue(ad2.containsOption("test1"));
+ assertFalse(ad2.containsOption("test2"));
+ assertEquals(ad2.toString(), "cn;test1");
+ assertEquals(ad2.getOptions().iterator().next(), "test1");
+ }
+
+ @Test
+ public void testWithoutOptionSecondOptionMissing() {
+ AttributeDescription ad1 = AttributeDescription.valueOf("cn;test1;test2");
+ AttributeDescription ad2 = ad1.withoutOption("dummy");
+ assertSame(ad1, ad2);
+ }
+
+ @Test
+ public void testWithoutOptionThirdOption1() {
+ AttributeDescription ad1 = AttributeDescription.valueOf("cn;test1;test2;test3");
+ AttributeDescription ad2 = ad1.withoutOption("test1");
+ assertTrue(ad2.hasOptions());
+ assertFalse(ad2.containsOption("test1"));
+ assertTrue(ad2.containsOption("test2"));
+ assertTrue(ad2.containsOption("test3"));
+ assertEquals(ad2.toString(), "cn;test2;test3");
+ Iterator<String> i = ad2.getOptions().iterator();
+ assertEquals(i.next(), "test2");
+ assertEquals(i.next(), "test3");
+ }
+
+ @Test
+ public void testWithoutOptionThirdOption2() {
+ AttributeDescription ad1 = AttributeDescription.valueOf("cn;test1;test2;test3");
+ AttributeDescription ad2 = ad1.withoutOption("test2");
+ assertTrue(ad2.hasOptions());
+ assertTrue(ad2.containsOption("test1"));
+ assertFalse(ad2.containsOption("test2"));
+ assertTrue(ad2.containsOption("test3"));
+ assertEquals(ad2.toString(), "cn;test1;test3");
+ Iterator<String> i = ad2.getOptions().iterator();
+ assertEquals(i.next(), "test1");
+ assertEquals(i.next(), "test3");
+ }
+
+ @Test
+ public void testWithoutOptionThirdOption3() {
+ AttributeDescription ad1 = AttributeDescription.valueOf("cn;test1;test2;test3");
+ AttributeDescription ad2 = ad1.withoutOption("test3");
+ assertTrue(ad2.hasOptions());
+ assertTrue(ad2.containsOption("test1"));
+ assertTrue(ad2.containsOption("test2"));
+ assertFalse(ad2.containsOption("test3"));
+ assertEquals(ad2.toString(), "cn;test1;test2");
+ Iterator<String> i = ad2.getOptions().iterator();
+ assertEquals(i.next(), "test1");
+ assertEquals(i.next(), "test2");
+ }
+
+ @Test
+ public void testWithoutOptionThirdOptionMissing() {
+ AttributeDescription ad1 = AttributeDescription.valueOf("cn;test1;test2;test3");
+ AttributeDescription ad2 = ad1.withoutOption("dummy");
+ assertSame(ad1, ad2);
+ }
+
}
--
Gitblit v1.10.0